Skip to content

Instantly share code, notes, and snippets.

@prtk418
Last active August 6, 2021 04:24
Show Gist options
  • Save prtk418/c85eae4d3bce3f7f1354f3da73b3a791 to your computer and use it in GitHub Desktop.
Save prtk418/c85eae4d3bce3f7f1354f3da73b3a791 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.4+commit.c7e474f2.js&optimize=false&runs=200&gist=
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"exchangeRateStored()": "182df0f5",
"mint()": "1249c58b",
"redeem(uint256)": "db006a75",
"redeemUnderlying(uint256)": "852a12e3"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "exchangeRateStored",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mint",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "redeemTokens",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "redeemUnderlying",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.4+commit.c7e474f2"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "exchangeRateStored",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mint",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "redeemTokens",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "redeemUnderlying",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": "cETH"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": {
"keccak256": "0xd321dd41677a775e39e6fef1a7ae4e5750a02dfbcb20fda74056d75c77d3bed9",
"urls": [
"bzz-raw://e38447eb886291ed53cc23165c27e9455e617e3afb4b0701b0d6fb579e5b197a",
"dweb:/ipfs/QmWFRYFic4xEzUHoAcgJQR7km81QVddyTDqqxrVanKowdr"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.4+commit.c7e474f2"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": "ERC20"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": {
"keccak256": "0x73f5caf210e81df2db41abd6fff65b84b4f32e6054ee0008aa145152b72cab7d",
"urls": [
"bzz-raw://44ce88428463dbd44decd71f53a41d5873079ec6aa70ddcb420a2314b41de55c",
"dweb:/ipfs/QmUJ9dTEMFPnr8iYTuaNQCXeSpXF3V4mHitpnArnzGHUH2"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "608060405273859e9d8a4edadfedb5a2ff311243af80f85a91b86000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100c557600080fd5b50610bf9806100d56000396000f3fe6080604052600436106100595760003560e01c80632e1a7d4d1461006557806353fce4311461008e57806355c9a7fd146100cb578063b163cc3814610108578063e6aa216c14610112578063f8b2cb4f1461013d57610060565b3661006057005b600080fd5b34801561007157600080fd5b5061008c600480360381019061008791906108c3565b61017a565b005b34801561009a57600080fd5b506100b560048036038101906100b0919061089a565b610352565b6040516100c29190610991565b60405180910390f35b3480156100d757600080fd5b506100f260048036038101906100ed91906108c3565b61039b565b6040516100ff9190610991565b60405180910390f35b610110610462565b005b34801561011e57600080fd5b506101276106ae565b6040516101349190610991565b60405180910390f35b34801561014957600080fd5b50610164600480360381019061015f919061089a565b610755565b6040516101719190610991565b60405180910390f35b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f390610971565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75826040518263ffffffff1660e01b81526004016102579190610991565b602060405180830381600087803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a991906108ec565b503373ffffffffffffffffffffffffffffffffffffffff166108fc6102cd8361039b565b9081150290604051600060405180830381858888f193505050501580156102f8573d6000803e3d6000fd5b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103489190610a9e565b9250508190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561040e57600080fd5b505afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044691906108ec565b836104519190610a44565b61045b9190610a13565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104bf9190610956565b60206040518083038186803b1580156104d757600080fd5b505afa1580156104eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050f91906108ec565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561057b57600080fd5b505af115801561058f573d6000803e3d6000fd5b50505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105f19190610956565b60206040518083038186803b15801561060957600080fd5b505afa15801561061d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064191906108ec565b9050600082826106519190610a9e565b905080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a291906109bd565b92505081905550505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071857600080fd5b505afa15801561072c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075091906108ec565b905090565b6000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080091906108ec565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a9190610a44565b6108549190610a13565b9050919050565b60008135905061086a81610b95565b92915050565b60008135905061087f81610bac565b92915050565b60008151905061089481610bac565b92915050565b6000602082840312156108ac57600080fd5b60006108ba8482850161085b565b91505092915050565b6000602082840312156108d557600080fd5b60006108e384828501610870565b91505092915050565b6000602082840312156108fe57600080fd5b600061090c84828501610885565b91505092915050565b61091e81610ad2565b82525050565b6000610931601e836109ac565b915061093c82610b6c565b602082019050919050565b61095081610b04565b82525050565b600060208201905061096b6000830184610915565b92915050565b6000602082019050818103600083015261098a81610924565b9050919050565b60006020820190506109a66000830184610947565b92915050565b600082825260208201905092915050565b60006109c882610b04565b91506109d383610b04565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a0857610a07610b0e565b5b828201905092915050565b6000610a1e82610b04565b9150610a2983610b04565b925082610a3957610a38610b3d565b5b828204905092915050565b6000610a4f82610b04565b9150610a5a83610b04565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610a9357610a92610b0e565b5b828202905092915050565b6000610aa982610b04565b9150610ab483610b04565b925082821015610ac757610ac6610b0e565b5b828203905092915050565b6000610add82610ae4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f496e73756666696369656e742062616c616e636520746f2072656465656d0000600082015250565b610b9e81610ad2565b8114610ba957600080fd5b50565b610bb581610b04565b8114610bc057600080fd5b5056fea26469706673582212206ed325fc5991dca0fa77baebebc048f837a34ba3e83ad8192918d4fa6315ac2b64736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0x859E9D8A4EDADFEDB5A2FF311243AF80F85A91B8 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBF9 DUP1 PUSH2 0xD5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x59 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x65 JUMPI DUP1 PUSH4 0x53FCE431 EQ PUSH2 0x8E JUMPI DUP1 PUSH4 0x55C9A7FD EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xB163CC38 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xE6AA216C EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x13D JUMPI PUSH2 0x60 JUMP JUMPDEST CALLDATASIZE PUSH2 0x60 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x87 SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xB0 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x352 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xED SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFF SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x110 PUSH2 0x462 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x127 PUSH2 0x6AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F3 SWAP1 PUSH2 0x971 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB006A75 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x257 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x285 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A9 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH2 0x2CD DUP4 PUSH2 0x39B JUMP JUMPDEST SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x2F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x348 SWAP2 SWAP1 PUSH2 0xA9E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x446 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST DUP4 PUSH2 0x451 SWAP2 SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH2 0x45B SWAP2 SWAP1 PUSH2 0xA13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BF SWAP2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1249C58B CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH2 0x651 SWAP2 SWAP1 PUSH2 0xA9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x9BD JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x750 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x84A SWAP2 SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH2 0x854 SWAP2 SWAP1 PUSH2 0xA13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x86A DUP2 PUSH2 0xB95 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x87F DUP2 PUSH2 0xBAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x894 DUP2 PUSH2 0xBAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8BA DUP5 DUP3 DUP6 ADD PUSH2 0x85B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8E3 DUP5 DUP3 DUP6 ADD PUSH2 0x870 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90C DUP5 DUP3 DUP6 ADD PUSH2 0x885 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x91E DUP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x931 PUSH1 0x1E DUP4 PUSH2 0x9AC JUMP JUMPDEST SWAP2 POP PUSH2 0x93C DUP3 PUSH2 0xB6C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x950 DUP2 PUSH2 0xB04 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x96B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x915 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x98A DUP2 PUSH2 0x924 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9A6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x947 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0x9D3 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xA08 JUMPI PUSH2 0xA07 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1E DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xA29 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0xB3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4F DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xA5A DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0xA93 JUMPI PUSH2 0xA92 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xAB4 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xAC7 JUMPI PUSH2 0xAC6 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADD DUP3 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E742062616C616E636520746F2072656465656D0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB9E DUP2 PUSH2 0xAD2 JUMP JUMPDEST DUP2 EQ PUSH2 0xBA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xBB5 DUP2 PUSH2 0xB04 JUMP JUMPDEST DUP2 EQ PUSH2 0xBC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xD325FC5991DCA0FA77BAEBEBC048F8 CALLDATACOPY LOG3 0x4B LOG3 0xE8 GASPRICE 0xD8 NOT 0x29 XOR 0xD4 STATICCALL PUSH4 0x15AC2B64 PUSH20 0x6F6C634300080400330000000000000000000000 ",
"sourceMap": "595:1753:0:-:0;;;664:42;632:74;;;;;;;;;;;;;;;;;;;;729:21;;;;;;;;;;712:39;;;;;;;;;;;;;;;;;;;;595:1753;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:5129:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "204:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "214:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "236:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "223:12:1"
},
"nodeType": "YulFunctionCall",
"src": "223:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "214:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "279:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "252:26:1"
},
"nodeType": "YulFunctionCall",
"src": "252:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "252:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "182:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "190:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "198:5:1",
"type": ""
}
],
"src": "152:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "360:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "370:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "385:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "379:5:1"
},
"nodeType": "YulFunctionCall",
"src": "379:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "370:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "428:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "401:26:1"
},
"nodeType": "YulFunctionCall",
"src": "401:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "401:33:1"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "338:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "346:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "354:5:1",
"type": ""
}
],
"src": "297:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "512:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "558:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "567:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "570:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "560:6:1"
},
"nodeType": "YulFunctionCall",
"src": "560:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "560:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "533:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "542:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "529:3:1"
},
"nodeType": "YulFunctionCall",
"src": "529:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "554:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "525:3:1"
},
"nodeType": "YulFunctionCall",
"src": "525:32:1"
},
"nodeType": "YulIf",
"src": "522:2:1"
},
{
"nodeType": "YulBlock",
"src": "584:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "599:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "613:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "603:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "628:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "663:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "674:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "659:3:1"
},
"nodeType": "YulFunctionCall",
"src": "659:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "683:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "638:20:1"
},
"nodeType": "YulFunctionCall",
"src": "638:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "628:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "482:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "493:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "505:6:1",
"type": ""
}
],
"src": "446:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "780:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "826:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "835:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "838:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "828:6:1"
},
"nodeType": "YulFunctionCall",
"src": "828:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "828:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "801:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "810:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "797:3:1"
},
"nodeType": "YulFunctionCall",
"src": "797:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "822:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "793:3:1"
},
"nodeType": "YulFunctionCall",
"src": "793:32:1"
},
"nodeType": "YulIf",
"src": "790:2:1"
},
{
"nodeType": "YulBlock",
"src": "852:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "867:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "881:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "871:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "896:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "931:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "942:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "927:3:1"
},
"nodeType": "YulFunctionCall",
"src": "927:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "951:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "906:20:1"
},
"nodeType": "YulFunctionCall",
"src": "906:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "896:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "750:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "761:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "773:6:1",
"type": ""
}
],
"src": "714:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1059:207:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1105:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1114:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1117:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1107:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1107:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1107:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1080:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1089:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1076:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1076:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1101:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1072:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1072:32:1"
},
"nodeType": "YulIf",
"src": "1069:2:1"
},
{
"nodeType": "YulBlock",
"src": "1131:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1146:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1160:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1150:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1175:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1221:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1232:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1217:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1217:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1241:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "1185:31:1"
},
"nodeType": "YulFunctionCall",
"src": "1185:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1175:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1029:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1040:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1052:6:1",
"type": ""
}
],
"src": "982:284:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1337:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1354:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1377:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1359:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1359:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1347:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1347:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1347:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1325:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1332:3:1",
"type": ""
}
],
"src": "1272:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1542:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1552:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1618:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1623:2:1",
"type": "",
"value": "30"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1559:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1559:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1552:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1724:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967",
"nodeType": "YulIdentifier",
"src": "1635:88:1"
},
"nodeType": "YulFunctionCall",
"src": "1635:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "1635:93:1"
},
{
"nodeType": "YulAssignment",
"src": "1737:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1748:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1753:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1744:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1744:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1737:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1530:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1538:3:1",
"type": ""
}
],
"src": "1396:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1833:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1850:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1873:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1855:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1855:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1843:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1843:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1843:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1821:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1828:3:1",
"type": ""
}
],
"src": "1768:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1990:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2000:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2012:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2023:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2008:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2008:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2000:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2080:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2093:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2104:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2089:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2089:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "2036:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2036:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2036:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1962:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1974:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1985:4:1",
"type": ""
}
],
"src": "1892:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2291:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2301:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2313:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2324:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2309:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2309:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2301:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2348:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2359:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2344:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2344:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2367:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2373:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2363:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2363:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2337:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2337:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "2337:47:1"
},
{
"nodeType": "YulAssignment",
"src": "2393:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2527:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2401:124:1"
},
"nodeType": "YulFunctionCall",
"src": "2401:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2393:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2271:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2286:4:1",
"type": ""
}
],
"src": "2120:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2643:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2653:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2665:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2676:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2661:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2661:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2653:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2733:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2746:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2757:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2742:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2742:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "2689:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2689:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2689:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2615:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2627:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2638:4:1",
"type": ""
}
],
"src": "2545:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2869:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2886:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2891:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2879:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2879:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "2879:19:1"
},
{
"nodeType": "YulAssignment",
"src": "2907:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2926:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2931:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2922:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2922:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2907:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2841:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2846:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2857:11:1",
"type": ""
}
],
"src": "2773:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2992:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3002:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3025:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3007:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3007:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3002:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3036:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3059:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3041:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3041:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3036:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3199:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3201:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3201:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3201:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3120:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3127:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3195:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3123:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3123:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3117:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3117:81:1"
},
"nodeType": "YulIf",
"src": "3114:2:1"
},
{
"nodeType": "YulAssignment",
"src": "3231:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3242:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3245:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3238:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3238:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "3231:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2979:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2982:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "2988:3:1",
"type": ""
}
],
"src": "2948:305:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3301:143:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3311:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3334:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3316:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3316:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3311:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3345:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3368:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3350:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3350:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3345:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3392:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "3394:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3394:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3394:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3389:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3382:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3382:9:1"
},
"nodeType": "YulIf",
"src": "3379:2:1"
},
{
"nodeType": "YulAssignment",
"src": "3424:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3433:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3436:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "3429:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3429:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "3424:1:1"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3290:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3293:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "3299:1:1",
"type": ""
}
],
"src": "3259:185:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3498:300:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3508:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3531:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3513:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3513:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3508:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3542:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3565:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3547:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3547:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3542:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3740:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3742:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3742:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3742:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3652:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3645:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3645:9:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3638:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3638:17:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3660:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3667:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3735:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "3663:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3663:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3657:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3657:81:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3634:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3634:105:1"
},
"nodeType": "YulIf",
"src": "3631:2:1"
},
{
"nodeType": "YulAssignment",
"src": "3772:20:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3787:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3790:1:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3783:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3783:9:1"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "3772:7:1"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3481:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3484:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "3490:7:1",
"type": ""
}
],
"src": "3450:348:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3849:146:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3859:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3882:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3864:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3864:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3859:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3893:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3916:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3898:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3898:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3893:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3940:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3942:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3942:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3942:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3934:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3937:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3931:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3931:8:1"
},
"nodeType": "YulIf",
"src": "3928:2:1"
},
{
"nodeType": "YulAssignment",
"src": "3972:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3984:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3987:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3980:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3980:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "3972:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3835:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3838:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "3844:4:1",
"type": ""
}
],
"src": "3804:191:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4046:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4056:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4085:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "4067:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4067:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4056:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4028:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4038:7:1",
"type": ""
}
],
"src": "4001:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4148:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4158:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4173:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4180:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4169:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4169:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4158:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4130:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4140:7:1",
"type": ""
}
],
"src": "4103:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4280:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4290:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4301:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4290:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4262:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4272:7:1",
"type": ""
}
],
"src": "4235:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4346:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4363:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4366:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4356:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4356:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "4356:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4460:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4463:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4453:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4453:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "4453:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4484:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4487:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4477:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4477:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "4477:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "4318:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4532:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4549:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4552:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4542:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4542:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "4542:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4646:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4649:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4639:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4639:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "4639:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4670:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4673:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4663:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4663:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "4663:15:1"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "4504:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4796:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4818:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4826:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4814:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4814:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4830:32:1",
"type": "",
"value": "Insufficient balance to redeem"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4807:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4807:56:1"
},
"nodeType": "YulExpressionStatement",
"src": "4807:56:1"
}
]
},
"name": "store_literal_in_memory_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "4788:6:1",
"type": ""
}
],
"src": "4690:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4919:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4976:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4985:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4988:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4978:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4978:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "4978:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4942:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4967:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "4949:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4949:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4939:2:1"
},
"nodeType": "YulFunctionCall",
"src": "4939:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4932:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4932:43:1"
},
"nodeType": "YulIf",
"src": "4929:2:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4912:5:1",
"type": ""
}
],
"src": "4876:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5047:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5104:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5113:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5116:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5106:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5106:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "5106:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5070:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5095:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5077:17:1"
},
"nodeType": "YulFunctionCall",
"src": "5077:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "5067:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5067:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "5060:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5060:43:1"
},
"nodeType": "YulIf",
"src": "5057:2:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5040:5:1",
"type": ""
}
],
"src": "5004:122:1"
}
]
},
"contents": "{\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_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_stringliteral_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967(pos)\n end := add(pos, 32)\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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967__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_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967_to_t_string_memory_ptr_fromStack( tail)\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 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 checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_f66d1079117810e9731ff1d435c131515f13130632127307d77687bb6c39d967(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient balance to redeem\")\n\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 validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100595760003560e01c80632e1a7d4d1461006557806353fce4311461008e57806355c9a7fd146100cb578063b163cc3814610108578063e6aa216c14610112578063f8b2cb4f1461013d57610060565b3661006057005b600080fd5b34801561007157600080fd5b5061008c600480360381019061008791906108c3565b61017a565b005b34801561009a57600080fd5b506100b560048036038101906100b0919061089a565b610352565b6040516100c29190610991565b60405180910390f35b3480156100d757600080fd5b506100f260048036038101906100ed91906108c3565b61039b565b6040516100ff9190610991565b60405180910390f35b610110610462565b005b34801561011e57600080fd5b506101276106ae565b6040516101349190610991565b60405180910390f35b34801561014957600080fd5b50610164600480360381019061015f919061089a565b610755565b6040516101719190610991565b60405180910390f35b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f390610971565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75826040518263ffffffff1660e01b81526004016102579190610991565b602060405180830381600087803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a991906108ec565b503373ffffffffffffffffffffffffffffffffffffffff166108fc6102cd8361039b565b9081150290604051600060405180830381858888f193505050501580156102f8573d6000803e3d6000fd5b5080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103489190610a9e565b9250508190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561040e57600080fd5b505afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044691906108ec565b836104519190610a44565b61045b9190610a13565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104bf9190610956565b60206040518083038186803b1580156104d757600080fd5b505afa1580156104eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050f91906108ec565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561057b57600080fd5b505af115801561058f573d6000803e3d6000fd5b50505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105f19190610956565b60206040518083038186803b15801561060957600080fd5b505afa15801561061d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064191906108ec565b9050600082826106519190610a9e565b905080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a291906109bd565b92505081905550505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071857600080fd5b505afa15801561072c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075091906108ec565b905090565b6000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080091906108ec565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461084a9190610a44565b6108549190610a13565b9050919050565b60008135905061086a81610b95565b92915050565b60008135905061087f81610bac565b92915050565b60008151905061089481610bac565b92915050565b6000602082840312156108ac57600080fd5b60006108ba8482850161085b565b91505092915050565b6000602082840312156108d557600080fd5b60006108e384828501610870565b91505092915050565b6000602082840312156108fe57600080fd5b600061090c84828501610885565b91505092915050565b61091e81610ad2565b82525050565b6000610931601e836109ac565b915061093c82610b6c565b602082019050919050565b61095081610b04565b82525050565b600060208201905061096b6000830184610915565b92915050565b6000602082019050818103600083015261098a81610924565b9050919050565b60006020820190506109a66000830184610947565b92915050565b600082825260208201905092915050565b60006109c882610b04565b91506109d383610b04565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a0857610a07610b0e565b5b828201905092915050565b6000610a1e82610b04565b9150610a2983610b04565b925082610a3957610a38610b3d565b5b828204905092915050565b6000610a4f82610b04565b9150610a5a83610b04565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610a9357610a92610b0e565b5b828202905092915050565b6000610aa982610b04565b9150610ab483610b04565b925082821015610ac757610ac6610b0e565b5b828203905092915050565b6000610add82610ae4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f496e73756666696369656e742062616c616e636520746f2072656465656d0000600082015250565b610b9e81610ad2565b8114610ba957600080fd5b50565b610bb581610b04565b8114610bc057600080fd5b5056fea26469706673582212206ed325fc5991dca0fa77baebebc048f837a34ba3e83ad8192918d4fa6315ac2b64736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x59 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x65 JUMPI DUP1 PUSH4 0x53FCE431 EQ PUSH2 0x8E JUMPI DUP1 PUSH4 0x55C9A7FD EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xB163CC38 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xE6AA216C EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x13D JUMPI PUSH2 0x60 JUMP JUMPDEST CALLDATASIZE PUSH2 0x60 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x87 SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x17A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xB0 SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x352 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC2 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xED SWAP2 SWAP1 PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFF SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x110 PUSH2 0x462 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x127 PUSH2 0x6AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x89A JUMP JUMPDEST PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x1FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F3 SWAP1 PUSH2 0x971 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB006A75 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x257 SWAP2 SWAP1 PUSH2 0x991 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x285 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A9 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH2 0x2CD DUP4 PUSH2 0x39B JUMP JUMPDEST SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x2F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x348 SWAP2 SWAP1 PUSH2 0xA9E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x446 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST DUP4 PUSH2 0x451 SWAP2 SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH2 0x45B SWAP2 SWAP1 PUSH2 0xA13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BF SWAP2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1249C58B CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x58F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F1 SWAP2 SWAP1 PUSH2 0x956 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH2 0x651 SWAP2 SWAP1 PUSH2 0xA9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x9BD JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x750 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x182DF0F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x84A SWAP2 SWAP1 PUSH2 0xA44 JUMP JUMPDEST PUSH2 0x854 SWAP2 SWAP1 PUSH2 0xA13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x86A DUP2 PUSH2 0xB95 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x87F DUP2 PUSH2 0xBAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x894 DUP2 PUSH2 0xBAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8BA DUP5 DUP3 DUP6 ADD PUSH2 0x85B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8E3 DUP5 DUP3 DUP6 ADD PUSH2 0x870 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x90C DUP5 DUP3 DUP6 ADD PUSH2 0x885 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x91E DUP2 PUSH2 0xAD2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x931 PUSH1 0x1E DUP4 PUSH2 0x9AC JUMP JUMPDEST SWAP2 POP PUSH2 0x93C DUP3 PUSH2 0xB6C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x950 DUP2 PUSH2 0xB04 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x96B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x915 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x98A DUP2 PUSH2 0x924 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9A6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x947 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C8 DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0x9D3 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xA08 JUMPI PUSH2 0xA07 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1E DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xA29 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0xB3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4F DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xA5A DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0xA93 JUMPI PUSH2 0xA92 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 PUSH2 0xB04 JUMP JUMPDEST SWAP2 POP PUSH2 0xAB4 DUP4 PUSH2 0xB04 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xAC7 JUMPI PUSH2 0xAC6 PUSH2 0xB0E JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADD DUP3 PUSH2 0xAE4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x496E73756666696369656E742062616C616E636520746F2072656465656D0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xB9E DUP2 PUSH2 0xAD2 JUMP JUMPDEST DUP2 EQ PUSH2 0xBA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xBB5 DUP2 PUSH2 0xB04 JUMP JUMPDEST DUP2 EQ PUSH2 0xBC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0xD325FC5991DCA0FA77BAEBEBC048F8 CALLDATACOPY LOG3 0x4B LOG3 0xE8 GASPRICE 0xD8 NOT 0x29 XOR 0xD4 STATICCALL PUSH4 0x15AC2B64 PUSH20 0x6F6C634300080400330000000000000000000000 ",
"sourceMap": "595:1753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1993:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1740:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1596:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;854:572;;;:::i;:::-;;1869:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1436:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1993:314;2083:16;2059:8;:20;2068:10;2059:20;;;;;;;;;;;;;;;;:40;;2051:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2144:4;;;;;;;;;;;:11;;;2156:16;2144:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2192:10;2183:30;;:67;2214:35;2232:16;2214:17;:35::i;:::-;2183:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:16;2260:8;:20;2269:10;2260:20;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;;;;;;;1993:314;:::o;1740:119::-;1805:7;1831:8;:21;1840:11;1831:21;;;;;;;;;;;;;;;;1824:28;;1740:119;;;:::o;1596:134::-;1656:7;1719:4;1691;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1682:6;:34;;;;:::i;:::-;:41;;;;:::i;:::-;1675:48;;1596:134;;;:::o;854:572::-;901:35;939:4;;;;;;;;;;;:14;;;962:4;939:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;901:67;;1058:4;;;;;;;;;;;:9;;;1075;1058:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1106:34;1143:4;;;;;;;;;;;:14;;;1166:4;1143:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1106:66;;1224:15;1271:27;1242:26;:56;;;;:::i;:::-;1224:74;;1409:10;1385:8;:20;1394:10;1385:20;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;854:572;;;:::o;1869:104::-;1916:7;1941:4;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1934:32;;1869:104;:::o;1436:150::-;1497:7;1575:4;1547;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1523:8;:21;1532:11;1523:21;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;:56;;;;:::i;:::-;1516:63;;1436:150;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:143::-;354:5;385:6;379:13;370:22;;401:33;428:5;401:33;:::i;:::-;360:80;;;;:::o;446:262::-;505:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;613:1;638:53;683:7;674:6;663:9;659:22;638:53;:::i;:::-;628:63;;584:117;512:196;;;;:::o;714:262::-;773:6;822:2;810:9;801:7;797:23;793:32;790:2;;;838:1;835;828:12;790:2;881:1;906:53;951:7;942:6;931:9;927:22;906:53;:::i;:::-;896:63;;852:117;780:196;;;;:::o;982:284::-;1052:6;1101:2;1089:9;1080:7;1076:23;1072:32;1069:2;;;1117:1;1114;1107:12;1069:2;1160:1;1185:64;1241:7;1232:6;1221:9;1217:22;1185:64;:::i;:::-;1175:74;;1131:128;1059:207;;;;:::o;1272:118::-;1359:24;1377:5;1359:24;:::i;:::-;1354:3;1347:37;1337:53;;:::o;1396:366::-;1538:3;1559:67;1623:2;1618:3;1559:67;:::i;:::-;1552:74;;1635:93;1724:3;1635:93;:::i;:::-;1753:2;1748:3;1744:12;1737:19;;1542:220;;;:::o;1768:118::-;1855:24;1873:5;1855:24;:::i;:::-;1850:3;1843:37;1833:53;;:::o;1892:222::-;1985:4;2023:2;2012:9;2008:18;2000:26;;2036:71;2104:1;2093:9;2089:17;2080:6;2036:71;:::i;:::-;1990:124;;;;:::o;2120:419::-;2286:4;2324:2;2313:9;2309:18;2301:26;;2373:9;2367:4;2363:20;2359:1;2348:9;2344:17;2337:47;2401:131;2527:4;2401:131;:::i;:::-;2393:139;;2291:248;;;:::o;2545:222::-;2638:4;2676:2;2665:9;2661:18;2653:26;;2689:71;2757:1;2746:9;2742:17;2733:6;2689:71;:::i;:::-;2643:124;;;;:::o;2773:169::-;2857:11;2891:6;2886:3;2879:19;2931:4;2926:3;2922:14;2907:29;;2869:73;;;;:::o;2948:305::-;2988:3;3007:20;3025:1;3007:20;:::i;:::-;3002:25;;3041:20;3059:1;3041:20;:::i;:::-;3036:25;;3195:1;3127:66;3123:74;3120:1;3117:81;3114:2;;;3201:18;;:::i;:::-;3114:2;3245:1;3242;3238:9;3231:16;;2992:261;;;;:::o;3259:185::-;3299:1;3316:20;3334:1;3316:20;:::i;:::-;3311:25;;3350:20;3368:1;3350:20;:::i;:::-;3345:25;;3389:1;3379:2;;3394:18;;:::i;:::-;3379:2;3436:1;3433;3429:9;3424:14;;3301:143;;;;:::o;3450:348::-;3490:7;3513:20;3531:1;3513:20;:::i;:::-;3508:25;;3547:20;3565:1;3547:20;:::i;:::-;3542:25;;3735:1;3667:66;3663:74;3660:1;3657:81;3652:1;3645:9;3638:17;3634:105;3631:2;;;3742:18;;:::i;:::-;3631:2;3790:1;3787;3783:9;3772:20;;3498:300;;;;:::o;3804:191::-;3844:4;3864:20;3882:1;3864:20;:::i;:::-;3859:25;;3898:20;3916:1;3898:20;:::i;:::-;3893:25;;3937:1;3934;3931:8;3928:2;;;3942:18;;:::i;:::-;3928:2;3987:1;3984;3980:9;3972:17;;3849:146;;;;:::o;4001:96::-;4038:7;4067:24;4085:5;4067:24;:::i;:::-;4056:35;;4046:51;;;:::o;4103:126::-;4140:7;4180:42;4173:5;4169:54;4158:65;;4148:81;;;:::o;4235:77::-;4272:7;4301:5;4290:16;;4280:32;;;:::o;4318:180::-;4366:77;4363:1;4356:88;4463:4;4460:1;4453:15;4487:4;4484:1;4477:15;4504:180;4552:77;4549:1;4542:88;4649:4;4646:1;4639:15;4673:4;4670:1;4663:15;4690:180;4830:32;4826:1;4818:6;4814:14;4807:56;4796:74;:::o;4876:122::-;4949:24;4967:5;4949:24;:::i;:::-;4942:5;4939:35;4929:2;;4988:1;4985;4978:12;4929:2;4919:79;:::o;5004:122::-;5077:24;5095:5;5077:24;:::i;:::-;5070:5;5067:35;5057:2;;5116:1;5113;5106:12;5057:2;5047:79;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "613000",
"executionCost": "43212",
"totalCost": "656212"
},
"external": {
"addBalance()": "infinite",
"getBalance(address)": "infinite",
"getCethBalance(address)": "1541",
"getExchangeRate()": "infinite",
"getPartialBalance(uint256)": "infinite",
"withdraw(uint256)": "infinite"
}
},
"methodIdentifiers": {
"addBalance()": "b163cc38",
"getBalance(address)": "f8b2cb4f",
"getCethBalance(address)": "53fce431",
"getExchangeRate()": "e6aa216c",
"getPartialBalance(uint256)": "55c9a7fd",
"withdraw(uint256)": "2e1a7d4d"
}
},
"abi": [
{
"inputs": [],
"name": "addBalance",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "userAddress",
"type": "address"
}
],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "userAddress",
"type": "address"
}
],
"name": "getCethBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchangeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokens",
"type": "uint256"
}
],
"name": "getPartialBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokensToWithdraw",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.4+commit.c7e474f2"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "addBalance",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "userAddress",
"type": "address"
}
],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "userAddress",
"type": "address"
}
],
"name": "getCethBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchangeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokens",
"type": "uint256"
}
],
"name": "getPartialBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokensToWithdraw",
"type": "uint256"
}
],
"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": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": "SmartBankAccount"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"gist-4e1704be990de720c8f2b5c16a6f8033/contracts/subquest-add-compound.sol": {
"keccak256": "0xd321dd41677a775e39e6fef1a7ae4e5750a02dfbcb20fda74056d75c77d3bed9",
"urls": [
"bzz-raw://e38447eb886291ed53cc23165c27e9455e617e3afb4b0701b0d6fb579e5b197a",
"dweb:/ipfs/QmWFRYFic4xEzUHoAcgJQR7km81QVddyTDqqxrVanKowdr"
]
}
},
"version": 1
}
pragma solidity >=0.7.0 <0.9.0;
interface cETH {
// define functions of COMPOUND we'll be using
function mint() external payable; // to deposit to compound
function redeem(uint redeemTokens) external returns (uint); // to withdraw from compound
function redeemUnderlying(uint amount) external returns (uint); // to withdraw from compound
//following 2 functions to determine how much you'll be able to withdraw
function exchangeRateStored() external view returns (uint);
function balanceOf(address owner) external view returns (uint256 balance);
}
contract SmartBankAccount {
address COMPOUND_CETH_ADDRESS = 0x859e9d8a4edadfEDb5A2fF311243af80F85A91b8;
cETH ceth = cETH(COMPOUND_CETH_ADDRESS);
mapping(address => uint) balances;
mapping(address => uint) depositTimestamps;
function addBalance() public payable {
uint256 cEthOfContractBeforeMinting = ceth.balanceOf(address(this)); //this refers to the current contract
// send ethers to mint()
ceth.mint{value: msg.value}();
uint256 cEthOfContractAfterMinting = ceth.balanceOf(address(this)); // updated balance after minting
uint cEthOfUser = cEthOfContractAfterMinting - cEthOfContractBeforeMinting; // the difference is the amount that has been created by the mint() function
balances[msg.sender] += cEthOfUser;
}
function getBalance(address userAddress) public view returns(uint256) {
return balances[userAddress] * ceth.exchangeRateStored() / 1e18;
}
function getPartialBalance(uint tokens) public view returns(uint256) {
return tokens * ceth.exchangeRateStored() / 1e18;
}
function getCethBalance(address userAddress) public view returns(uint256) {
return balances[userAddress];
}
function getExchangeRate() public view returns(uint256){
return ceth.exchangeRateStored();
}
function withdraw(uint tokensToWithdraw) public {
require(balances[msg.sender] >= tokensToWithdraw, "Insufficient balance to redeem");
ceth.redeem(tokensToWithdraw);
(payable(msg.sender)).transfer(getPartialBalance(tokensToWithdraw));
balances[msg.sender] -= tokensToWithdraw;
}
receive() external payable {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment