UNPKG

@cartesi/logger

Version:
298 lines 84.3 kB
{ "contractName": "Logger", "sourceName": "contracts/Logger.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_index", "type": "uint256" }, { "indexed": false, "internalType": "bytes8[]", "name": "_data", "type": "bytes8[]" }, { "indexed": true, "internalType": "bytes32", "name": "_root", "type": "bytes32" }, { "indexed": false, "internalType": "uint64", "name": "_log2Size", "type": "uint64" } ], "name": "MerkleRootCalculatedFromData", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_index", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "_indices", "type": "uint256[]" }, { "indexed": true, "internalType": "bytes32", "name": "_root", "type": "bytes32" }, { "indexed": false, "internalType": "uint64", "name": "_log2Size", "type": "uint64" } ], "name": "MerkleRootCalculatedFromHistory", "type": "event" }, { "inputs": [ { "internalType": "uint64", "name": "_log2Size", "type": "uint64" }, { "internalType": "bytes8[]", "name": "_data", "type": "bytes8[]" } ], "name": "calculateMerkleRootFromData", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_log2Size", "type": "uint64" }, { "internalType": "uint256[]", "name": "_indices", "type": "uint256[]" } ], "name": "calculateMerkleRootFromHistory", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_root", "type": "bytes32" } ], "name": "getLogIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getLogRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_root", "type": "bytes32" }, { "internalType": "uint64", "name": "_log2Size", "type": "uint64" } ], "name": "isLogAvailable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6080604052600060045534801561001557600080fd5b50610e67806100256000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806326987b60146100675780634891ea36146100815780636a22e5fd14610134578063833459bc14610151578063a1ddff261461016e578063adaea8dc14610221575b600080fd5b61006f610261565b60408051918252519081900360200190f35b61006f6004803603604081101561009757600080fd5b6001600160401b0382351691908101906040810160208201356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460208302840111640100000000831117156100f657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610267945050505050565b61006f6004803603602081101561014a57600080fd5b5035610773565b61006f6004803603602081101561016757600080fd5b50356107c8565b61006f6004803603604081101561018457600080fd5b6001600160401b0382351691908101906040810160208201356401000000008111156101af57600080fd5b8201836020820111156101c157600080fd5b803590602001918460208302840111640100000000831117156101e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107da945050505050565b61024d6004803603604081101561023757600080fd5b50803590602001356001600160401b0316610cc5565b604080519115158252519081900360200190f35b60045481565b60006003836001600160401b031610156102c8576040805162461bcd60e51b815260206004820152601b60248201527f48617320746f206265206174206c65617374206f6e6520776f72640000000000604482015290519081900360640190fd5b6040836001600160401b031611156103115760405162461bcd60e51b8152600401808060200182810382526028815260200180610de46028913960400191505060405180910390fd5b6000825111610367576040805162461bcd60e51b815260206004820152601f60248201527f54686520696e7075742061727261792063616e6e6f7420626520656d70747900604482015290519081900360640190fd5b815182906001600160401b036002198601811660020a16908110156103bd5760405162461bcd60e51b8152600401808060200182810382526031815260200180610d2f6031913960400191505060405180910390fd5b8084511461049a576060816001600160401b03811180156103dd57600080fd5b50604051908082528060200260200182016040528015610407578160200160208202803683370190505b50905060005b85518110156104575785818151811061042257fe5b602002602001015182828151811061043657fe5b6001600160c01b03199092166020928302919091019091015260010161040d565b5084515b815181101561049657600060c01b82828151811061047557fe5b6001600160c01b03199092166020928302919091019091015260010161045b565b5091505b606082516001600160401b03811180156104b357600080fd5b506040519080825280602002602001820160405280156104dd578160200160208202803683370190505b50905060005b835181101561054f578381815181106104f857fe5b602002602001015160405160200180826001600160c01b03191681526008019150506040516020818303038152906040528051906020012082828151811061053c57fe5b60209081029190910101526001016104e3565b50600073__$c7dbd794b8c7b5c2028db781007df1176e$__6382b0eab8836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bc5781810151838201526020016105a4565b505050509050019250505060206040518083038186803b1580156105df57600080fd5b505af41580156105f3573d6000803e3d6000fd5b505050506040513d602081101561060957600080fd5b50516040805180820182526001600160401b038a8116808352602080840186815260038054600181018255600091825295517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909702968701805467ffffffffffffffff19169190961617909455517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909401939093556004548451808501929092528482528b51948201949094528a5194955085947f5fdb13b5e276437af6afb5d6bede9cf90cb8cd2f13c93048434bf9fcf7284622938c938e93928392606084019287820192909102908190849084905b838110156107165781810151838201526020016106fe565b50505050905001935050505060405180910390a3600081815260208181526040808320805460ff19166001908117909155600480548285528386208190558552600290935292208390558054909101905593505050505b92915050565b600060045482106107b55760405162461bcd60e51b8152600401808060200182810382526026815260200180610e0c6026913960400191505060405180910390fd5b5060009081526002602052604090205490565b60009081526001602052604090205490565b600073__$c7dbd794b8c7b5c2028db781007df1176e$__63d82ae4b183516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561082c57600080fd5b505af4158015610840573d6000803e3d6000fd5b505050506040513d602081101561085657600080fd5b50516108935760405162461bcd60e51b8152600401808060200182810382526030815260200180610d866030913960400191505060405180910390fd5b60005b8251811015610974578281815181106108ab57fe5b6020026020010151600454116108f25760405162461bcd60e51b8152600401808060200182810382526026815260200180610d606026913960400191505060405180910390fd5b600383828151811061090057fe5b60200260200101518154811061091257fe5b60009182526020909120600290910201546001600160401b0385811691161461096c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610db6602e913960400191505060405180910390fd5b600101610896565b50606082516001600160401b038111801561098e57600080fd5b506040519080825280602002602001820160405280156109b8578160200160208202803683370190505b50905060005b8351811015610a185760038482815181106109d557fe5b6020026020010151815481106109e757fe5b906000526020600020906002020160010154828281518110610a0557fe5b60209081029190910101526001016109be565b50600073__$c7dbd794b8c7b5c2028db781007df1176e$__6382b0eab8836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a85578181015183820152602001610a6d565b505050509050019250505060206040518083038186803b158015610aa857600080fd5b505af4158015610abc573d6000803e3d6000fd5b505050506040513d6020811015610ad257600080fd5b50518451604080516306c8e54b60e01b815260048101929092525191925060009173__$c7dbd794b8c7b5c2028db781007df1176e$__916306c8e54b916024808301926020929190829003018186803b158015610b2e57600080fd5b505af4158015610b42573d6000803e3d6000fd5b505050506040513d6020811015610b5857600080fd5b505160408051808201825260ff9092168881016001600160401b03818116808652602080870189815260038054600181018255600091825298517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909a02998a01805467ffffffffffffffff19169190961617909455517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909701969096556004548551808801929092528582528b51958201959095528a5193965087957f89cefba87d8a8fa0db60ec3681079c7740b90465999c62cd7c00d65d3c9e57a9948c949383926060840192878201929102908190849084905b83811015610c6a578181015183820152602001610c52565b50505050905001935050505060405180910390a350600081815260208181526040808320805460ff19166001908117909155600480548285528386208190558552600290935292208390558054909101905591505092915050565b60008281526020819052604081205460ff1615610d2557600083815260016020526040902054600380546001600160401b03851692908110610d0357fe5b60009182526020909120600290910201546001600160401b031614905061076d565b5060009291505056fe54686520696e70757420617272617920697320626967676572207468616e206465636c61726564206c6f67322073697a6554686520696e646578206f6620686973746f727920646f65736e27742065786973742079657454686520696e707574206172726179206d75737420636f6e7461696e20706f776572206f66203220656c656d656e74735468652076616c7565206f66206c6f673253697a6520646f65736e2774206d6174636820696e20686973746f727943616e6e6f7420626520626967676572207468616e20746865206d616368696e6520697473656c6654686520696e64657820646f65736e277420657869737420696e2074686520686973746f7279a26469706673582212200d8e6b39637d32a688a53738636551fb05c545bad85c626415b4bfe225f871fa64736f6c63430007040033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806326987b60146100675780634891ea36146100815780636a22e5fd14610134578063833459bc14610151578063a1ddff261461016e578063adaea8dc14610221575b600080fd5b61006f610261565b60408051918252519081900360200190f35b61006f6004803603604081101561009757600080fd5b6001600160401b0382351691908101906040810160208201356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460208302840111640100000000831117156100f657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610267945050505050565b61006f6004803603602081101561014a57600080fd5b5035610773565b61006f6004803603602081101561016757600080fd5b50356107c8565b61006f6004803603604081101561018457600080fd5b6001600160401b0382351691908101906040810160208201356401000000008111156101af57600080fd5b8201836020820111156101c157600080fd5b803590602001918460208302840111640100000000831117156101e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107da945050505050565b61024d6004803603604081101561023757600080fd5b50803590602001356001600160401b0316610cc5565b604080519115158252519081900360200190f35b60045481565b60006003836001600160401b031610156102c8576040805162461bcd60e51b815260206004820152601b60248201527f48617320746f206265206174206c65617374206f6e6520776f72640000000000604482015290519081900360640190fd5b6040836001600160401b031611156103115760405162461bcd60e51b8152600401808060200182810382526028815260200180610de46028913960400191505060405180910390fd5b6000825111610367576040805162461bcd60e51b815260206004820152601f60248201527f54686520696e7075742061727261792063616e6e6f7420626520656d70747900604482015290519081900360640190fd5b815182906001600160401b036002198601811660020a16908110156103bd5760405162461bcd60e51b8152600401808060200182810382526031815260200180610d2f6031913960400191505060405180910390fd5b8084511461049a576060816001600160401b03811180156103dd57600080fd5b50604051908082528060200260200182016040528015610407578160200160208202803683370190505b50905060005b85518110156104575785818151811061042257fe5b602002602001015182828151811061043657fe5b6001600160c01b03199092166020928302919091019091015260010161040d565b5084515b815181101561049657600060c01b82828151811061047557fe5b6001600160c01b03199092166020928302919091019091015260010161045b565b5091505b606082516001600160401b03811180156104b357600080fd5b506040519080825280602002602001820160405280156104dd578160200160208202803683370190505b50905060005b835181101561054f578381815181106104f857fe5b602002602001015160405160200180826001600160c01b03191681526008019150506040516020818303038152906040528051906020012082828151811061053c57fe5b60209081029190910101526001016104e3565b50600073__$c7dbd794b8c7b5c2028db781007df1176e$__6382b0eab8836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bc5781810151838201526020016105a4565b505050509050019250505060206040518083038186803b1580156105df57600080fd5b505af41580156105f3573d6000803e3d6000fd5b505050506040513d602081101561060957600080fd5b50516040805180820182526001600160401b038a8116808352602080840186815260038054600181018255600091825295517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909702968701805467ffffffffffffffff19169190961617909455517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909401939093556004548451808501929092528482528b51948201949094528a5194955085947f5fdb13b5e276437af6afb5d6bede9cf90cb8cd2f13c93048434bf9fcf7284622938c938e93928392606084019287820192909102908190849084905b838110156107165781810151838201526020016106fe565b50505050905001935050505060405180910390a3600081815260208181526040808320805460ff19166001908117909155600480548285528386208190558552600290935292208390558054909101905593505050505b92915050565b600060045482106107b55760405162461bcd60e51b8152600401808060200182810382526026815260200180610e0c6026913960400191505060405180910390fd5b5060009081526002602052604090205490565b60009081526001602052604090205490565b600073__$c7dbd794b8c7b5c2028db781007df1176e$__63d82ae4b183516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561082c57600080fd5b505af4158015610840573d6000803e3d6000fd5b505050506040513d602081101561085657600080fd5b50516108935760405162461bcd60e51b8152600401808060200182810382526030815260200180610d866030913960400191505060405180910390fd5b60005b8251811015610974578281815181106108ab57fe5b6020026020010151600454116108f25760405162461bcd60e51b8152600401808060200182810382526026815260200180610d606026913960400191505060405180910390fd5b600383828151811061090057fe5b60200260200101518154811061091257fe5b60009182526020909120600290910201546001600160401b0385811691161461096c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610db6602e913960400191505060405180910390fd5b600101610896565b50606082516001600160401b038111801561098e57600080fd5b506040519080825280602002602001820160405280156109b8578160200160208202803683370190505b50905060005b8351811015610a185760038482815181106109d557fe5b6020026020010151815481106109e757fe5b906000526020600020906002020160010154828281518110610a0557fe5b60209081029190910101526001016109be565b50600073__$c7dbd794b8c7b5c2028db781007df1176e$__6382b0eab8836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a85578181015183820152602001610a6d565b505050509050019250505060206040518083038186803b158015610aa857600080fd5b505af4158015610abc573d6000803e3d6000fd5b505050506040513d6020811015610ad257600080fd5b50518451604080516306c8e54b60e01b815260048101929092525191925060009173__$c7dbd794b8c7b5c2028db781007df1176e$__916306c8e54b916024808301926020929190829003018186803b158015610b2e57600080fd5b505af4158015610b42573d6000803e3d6000fd5b505050506040513d6020811015610b5857600080fd5b505160408051808201825260ff9092168881016001600160401b03818116808652602080870189815260038054600181018255600091825298517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909a02998a01805467ffffffffffffffff19169190961617909455517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909701969096556004548551808801929092528582528b51958201959095528a5193965087957f89cefba87d8a8fa0db60ec3681079c7740b90465999c62cd7c00d65d3c9e57a9948c949383926060840192878201929102908190849084905b83811015610c6a578181015183820152602001610c52565b50505050905001935050505060405180910390a350600081815260208181526040808320805460ff19166001908117909155600480548285528386208190558552600290935292208390558054909101905591505092915050565b60008281526020819052604081205460ff1615610d2557600083815260016020526040902054600380546001600160401b03851692908110610d0357fe5b60009182526020909120600290910201546001600160401b031614905061076d565b5060009291505056fe54686520696e70757420617272617920697320626967676572207468616e206465636c61726564206c6f67322073697a6554686520696e646578206f6620686973746f727920646f65736e27742065786973742079657454686520696e707574206172726179206d75737420636f6e7461696e20706f776572206f66203220656c656d656e74735468652076616c7565206f66206c6f673253697a6520646f65736e2774206d6174636820696e20686973746f727943616e6e6f7420626520626967676572207468616e20746865206d616368696e6520697473656c6654686520696e64657820646f65736e277420657869737420696e2074686520686973746f7279a26469706673582212200d8e6b39637d32a688a53738636551fb05c545bad85c626415b4bfe225f871fa64736f6c63430007040033", "linkReferences": { "@cartesi/util/contracts/Merkle.sol": { "Merkle": [ { "length": 20, "start": 1401 }, { "length": 20, "start": 2051 }, { "length": 20, "start": 2626 }, { "length": 20, "start": 2842 } ] } }, "deployedLinkReferences": { "@cartesi/util/contracts/Merkle.sol": { "Merkle": [ { "length": 20, "start": 1364 }, { "length": 20, "start": 2014 }, { "length": 20, "start": 2589 }, { "length": 20, "start": 2805 } ] } }, "devdoc": { "author": "Stephen Chen", "details": "This contract is not well-tested yet.", "kind": "dev", "methods": {}, "title": "Logger", "version": 1 }, "evm": { "bytecode": { "generatedSources": [], "linkReferences": { "@cartesi/util/contracts/Merkle.sol": { "Merkle": [ { "length": 20, "start": 1401 }, { "length": 20, "start": 2051 }, { "length": 20, "start": 2626 }, { "length": 20, "start": 2842 } ] } }, "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x4 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE67 DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26987B60 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x4891EA36 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x6A22E5FD EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x833459BC EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0xA1DDFF26 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xADAEA8DC EQ PUSH2 0x221 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x267 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x773 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7C8 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7DA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x48617320746F206265206174206C65617374206F6E6520776F72640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDE4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54686520696E7075742061727261792063616E6E6F7420626520656D70747900 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 NOT DUP7 ADD DUP2 AND PUSH1 0x2 EXP AND SWAP1 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD2F PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 MLOAD EQ PUSH2 0x49A JUMPI PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x407 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x457 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x422 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x436 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x40D JUMP JUMPDEST POP DUP5 MLOAD JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 PUSH1 0xC0 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x475 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x45B JUMP JUMPDEST POP SWAP2 POP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4DD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x8 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4E3 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0x0 PUSH4 0x82B0EAB8 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP11 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP7 DUP2 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE SWAP6 MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x2 SWAP1 SWAP8 MUL SWAP7 DUP8 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP7 AND OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85C SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x4 SLOAD DUP5 MLOAD DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP5 DUP3 MSTORE DUP12 MLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP11 MLOAD SWAP5 SWAP6 POP DUP6 SWAP5 PUSH32 0x5FDB13B5E276437AF6AFB5D6BEDE9CF90CB8CD2F13C93048434BF9FCF7284622 SWAP4 DUP13 SWAP4 DUP15 SWAP4 SWAP3 DUP4 SWAP3 PUSH1 0x60 DUP5 ADD SWAP3 DUP8 DUP3 ADD SWAP3 SWAP1 SWAP2 MUL SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x716 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6FE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD DUP3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 SWAP1 SSTORE DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE SWAP3 KECCAK256 DUP4 SWAP1 SSTORE DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD DUP3 LT PUSH2 0x7B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE0C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0x0 PUSH4 0xD82AE4B1 DUP4 MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x840 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x893 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD86 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x974 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x8AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x4 SLOAD GT PUSH2 0x8F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD60 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x900 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 SLOAD DUP2 LT PUSH2 0x912 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x96C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDB6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x896 JUMP JUMPDEST POP PUSH1 0x60 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9B8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x3 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 SLOAD DUP2 LT PUSH2 0x9E7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA05 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x9BE JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0x0 PUSH4 0x82B0EAB8 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA6D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xABC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6C8E54B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0x0 SWAP2 PUSH4 0x6C8E54B SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xFF SWAP1 SWAP3 AND DUP9 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x20 DUP1 DUP8 ADD DUP10 DUP2 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE SWAP9 MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x2 SWAP1 SWAP11 MUL SWAP10 DUP11 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP7 AND OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85C SWAP1 SWAP8 ADD SWAP7 SWAP1 SWAP7 SSTORE PUSH1 0x4 SLOAD DUP6 MLOAD DUP1 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP6 DUP3 MSTORE DUP12 MLOAD SWAP6 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP11 MLOAD SWAP4 SWAP7 POP DUP8 SWAP6 PUSH32 0x89CEFBA87D8A8FA0DB60EC3681079C7740B90465999C62CD7C00D65D3C9E57A9 SWAP5 DUP13 SWAP5 SWAP4 DUP4 SWAP3 PUSH1 0x60 DUP5 ADD SWAP3 DUP8 DUP3 ADD SWAP3 SWAP2 MUL SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC52 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD DUP3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 SWAP1 SSTORE DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE SWAP3 KECCAK256 DUP4 SWAP1 SSTORE DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xD25 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 AND SWAP3 SWAP1 DUP2 LT PUSH2 0xD03 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 SWAP1 SWAP2 MUL ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND EQ SWAP1 POP PUSH2 0x76D JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP INVALID SLOAD PUSH9 0x6520696E7075742061 PUSH19 0x72617920697320626967676572207468616E20 PUSH5 0x65636C6172 PUSH6 0x64206C6F6732 KECCAK256 PUSH20 0x697A6554686520696E646578206F662068697374 PUSH16 0x727920646F65736E2774206578697374 KECCAK256 PUSH26 0x657454686520696E707574206172726179206D75737420636F6E PUSH21 0x61696E20706F776572206F66203220656C656D656E PUSH21 0x735468652076616C7565206F66206C6F673253697A PUSH6 0x20646F65736E 0x27 PUSH21 0x206D6174636820696E20686973746F727943616E6E PUSH16 0x7420626520626967676572207468616E KECCAK256 PUSH21 0x6865206D616368696E6520697473656C6654686520 PUSH10 0x6E64657820646F65736E 0x27 PUSH21 0x20657869737420696E2074686520686973746F7279 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD DUP15 PUSH12 0x39637D32A688A53738636551 0xFB SDIV 0xC5 GASLIMIT 0xBA 0xD8 0x5C PUSH3 0x6415B4 0xBF 0xE2 0x25 0xF8 PUSH18 0xFA64736F6C63430007040033000000000000 ", "sourceMap": "1510:4842:4:-:0;;;1976:1;1946:31;;1510:4842;;;;;;;;;;;;;;;;" }, "deployedBytecode": { "generatedSources": [], "immutableReferences": {}, "linkReferences": { "@cartesi/util/contracts/Merkle.sol": { "Merkle": [ { "length": 20, "start": 1364 }, { "length": 20, "start": 2014 }, { "length": 20, "start": 2589 }, { "length": 20, "start": 2805 } ] } }, "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26987B60 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x4891EA36 EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x6A22E5FD EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x833459BC EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0xA1DDFF26 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xADAEA8DC EQ PUSH2 0x221 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x261 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x267 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x773 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7C8 JUMP JUMPDEST PUSH2 0x6F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7DA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x48617320746F206265206174206C65617374206F6E6520776F72640000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO PUSH2 0x311 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDE4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD GT PUSH2 0x367 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54686520696E7075742061727261792063616E6E6F7420626520656D70747900 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 NOT DUP7 ADD DUP2 AND PUSH1 0x2 EXP AND SWAP1 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD2F PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 MLOAD EQ PUSH2 0x49A JUMPI PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x407 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x457 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x422 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x436 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x40D JUMP JUMPDEST POP DUP5 MLOAD JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 PUSH1 0xC0 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x475 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x45B JUMP JUMPDEST POP SWAP2 POP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4DD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x54F JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x4F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND DUP2 MSTORE PUSH1 0x8 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4E3 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0x0 PUSH4 0x82B0EAB8 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP11 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP7 DUP2 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE SWAP6 MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x2 SWAP1 SWAP8 MUL SWAP7 DUP8 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND SWAP2 SWAP1 SWAP7 AND OR SWAP1 SWAP5 SSTORE MLOAD PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85C SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x4 SLOAD DUP5 MLOAD DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP5 DUP3 MSTORE DUP12 MLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP11 MLOAD SWAP5 SWAP6 POP DUP6 SWAP5 PUSH32 0x5FDB13B5E276437AF6AFB5D6BEDE9CF90CB8CD2F13C93048434BF9FCF7284622 SWAP4 DUP13 SWAP4 DUP15 SWAP4 SWAP3 DUP4 SWAP3 PUSH1 0x60 DUP5 ADD SWAP3 DUP8 DUP3 ADD SWAP3 SWAP1 SWAP2 MUL SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x716 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6FE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD DUP3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP2 SWAP1 SSTORE DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE SWAP3 KECCAK256 DUP4 SWAP1 SSTORE DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD DUP3 LT PUSH2 0x7B5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE0C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0x0 PUSH4 0xD82AE4B1 DUP4 MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x840 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x893 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD86 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x974 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x8AB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x4 SLOAD GT PUSH2 0x8F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3