019bab3d-c746-7355-af08-a01c5cba9495
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 39142 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39143 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39144 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39145 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39146 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39147 | detector.run | complete | 1 / 3 | 3 months ago |
| 39148 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39254 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39255 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-vqubff6j)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-vqubff6j)
TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415) sends eth to arbitrary user
Dangerous calls:
- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)
VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336) sends eth to arbitrary user
Dangerous calls:
- (success,returnData_) = targets[i].call{value: values[i]}(data[i]) (src/library/VaultLib.sol#329)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) has bitwise-xor operator ^ instead of the exponentiation operator **:
- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#184)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation
TransparentUpgradeableProxy._fallback() (lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#93-103) calls Proxy._fallback() (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#58-60) which halt the execution return(uint256,uint256)(0,returndatasize()()) (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#42)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-return-in-assembly
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#184)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#188)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#189)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#190)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#191)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#192)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#193)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#172)
- result = prod0 * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#199)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
TimelockController.getOperationState(bytes32) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#207-218) uses a dangerous strict equality:
- timestamp == 0 (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#209)
TimelockController.getOperationState(bytes32) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#207-218) uses a dangerous strict equality:
- timestamp == _DONE_TIMESTAMP (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#211)
VaultLib.computeTotalAssets() (src/library/VaultLib.sol#295-310) uses a dangerous strict equality:
- balance == 0 (src/library/VaultLib.sol#307)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415) ignores return value by Address.verifyCallResult(success,returndata) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#414)
ERC1967Utils.upgradeToAndCall(address,bytes) (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#83-92) ignores return value by Address.functionDelegateCall(newImplementation,data) (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#88)
ERC1967Utils.upgradeBeaconToAndCall(address,bytes) (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#173-182) ignores return value by Address.functionDelegateCall(IBeacon(newBeacon).implementation(),data) (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#178)
BaseVault._withdraw(address,address,address,uint256,uint256) (src/BaseVault.sol#506-522) ignores return value by IStrategy(vaultStorage.buffer).withdraw(assets,receiver,address(this)) (src/BaseVault.sol#519)
BaseVault._convertToAssets(address,uint256,Math.Rounding) (src/BaseVault.sol#531-538) ignores return value by VaultLib.convertToAssets(asset_,shares,rounding) (src/BaseVault.sol#537)
BaseVault._convertToShares(address,uint256,Math.Rounding) (src/BaseVault.sol#547-554) ignores return value by VaultLib.convertToShares(asset_,assets,rounding) (src/BaseVault.sol#553)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
ERC20PermitUpgradeable.__ERC20Permit_init(string).name (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#40) shadows:
- ERC20Upgradeable.name() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#76-79) (function)
- IERC20Metadata.name() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#15) (function)
BaseVault._initialize(address,string,string,uint8,bool,bool,bool,uint256).name (src/BaseVault.sol#73) shadows:
- ERC20Upgradeable.name() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#76-79) (function)
- IERC20Metadata.name() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#15) (function)
BaseVault._initialize(address,string,string,uint8,bool,bool,bool,uint256).symbol (src/BaseVault.sol#74) shadows:
- ERC20Upgradeable.symbol() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#85-88) (function)
- IERC20Metadata.symbol() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#20) (function)
Vault.initialize(address,string,string,uint8,uint64,bool,bool,uint256).name (src/Vault.sol#45) shadows:
- ERC20Upgradeable.name() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#76-79) (function)
- IERC20Metadata.name() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#15) (function)
Vault.initialize(address,string,string,uint8,uint64,bool,bool,uint256).symbol (src/Vault.sol#46) shadows:
- ERC20Upgradeable.symbol() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#85-88) (function)
- IERC20Metadata.symbol() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#20) (function)
ICurveLpConnector.rate().rate (src/interface/IProvider.sol#42) shadows:
- ICurveLpConnector.rate() (src/interface/IProvider.sol#42) (function)
IVault.setProvider(address).provider (src/interface/IVault.sol#126) shadows:
- IVault.provider() (src/interface/IVault.sol#121) (function)
IVault.setBuffer(address).buffer (src/interface/IVault.sol#127) shadows:
- IVault.buffer() (src/interface/IVault.sol#122) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
TransparentUpgradeableProxy.constructor(address,address,bytes).initialOwner (lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#77) lacks a zero-check on :
- _admin = address(new ProxyAdmin(initialOwner)) (lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#78)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415) has external calls inside a loop: (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)
Calls stack containing the loop:
TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32)
VaultLib.computeTotalAssets() (src/library/VaultLib.sol#295-310) has external calls inside a loop: balance = IERC20(assetList[i]).balanceOf(address(this)) (src/library/VaultLib.sol#306)
VaultLib.convertAssetToBase(address,uint256) (src/library/VaultLib.sol#177-181) has external calls inside a loop: rate = IProvider(getVaultStorage().provider).getRate(asset_) (src/library/VaultLib.sol#179)
Calls stack containing the loop:
VaultLib.computeTotalAssets()
VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336) has external calls inside a loop: (success,returnData_) = targets[i].call{value: values[i]}(data[i]) (src/library/VaultLib.sol#329)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in BaseVault._deposit(address,address,address,uint256,uint256,uint256) (src/BaseVault.sol#458-480):
External calls:
- SafeERC20.safeTransferFrom(IERC20(asset_),caller,address(this),assets) (src/BaseVault.sol#472)
State variables written after the call(s):
- _mint(receiver,shares) (src/BaseVault.sol#473)
- $ = ERC20StorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#53)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in TimelockController.execute(address,uint256,bytes,bytes32,bytes32) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#358-371):
External calls:
- _execute(target,value,payload) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#368)
- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)
Event emitted after the call(s):
- CallExecuted(id,0,target,value,payload) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#369)
Reentrancy in TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#385-407):
External calls:
- _execute(target,value,payload) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#403)
- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)
Event emitted after the call(s):
- CallExecuted(id,i,target,value,payload) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#404)
Reentrancy in VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336):
External calls:
- (success,returnData_) = targets[i].call{value: values[i]}(data[i]) (src/library/VaultLib.sol#329)
Event emitted after the call(s):
- IVault.ProcessSuccess(targets,values,returnData) (src/library/VaultLib.sol#335)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
TimelockController.getOperationState(bytes32) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#207-218) uses timestamp for comparisons
Dangerous comparisons:
- timestamp == 0 (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#209)
- timestamp == _DONE_TIMESTAMP (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#211)
- timestamp > block.timestamp (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#213)
ERC20PermitUpgradeable.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#49-72) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > deadline (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#58)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Proxy._delegate(address) (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#22-45) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#23-44)
Address._revert(bytes) (lib/openzeppelin-contracts/contracts/utils/Address.sol#146-158) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Address.sol#151-154)
StorageSlot.getAddressSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#59-64) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#61-63)
StorageSlot.getBooleanSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#69-74) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#71-73)
StorageSlot.getBytes32Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#79-84) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#81-83)
StorageSlot.getUint256Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#89-94) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#91-93)
StorageSlot.getStringSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#99-104) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#101-103)
StorageSlot.getStringSlot(string) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#109-114) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#111-113)
StorageSlot.getBytesSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#119-124) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#121-123)
StorageSlot.getBytesSlot(bytes) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#129-134) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#131-133)
Strings.toString(uint256) (lib/openzeppelin-contracts/contracts/utils/Strings.sol#24-44) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#30-32)
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#36-38)
ECDSA.tryRecover(bytes32,bytes) (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#56-73) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#64-68)
MessageHashUtils.toEthSignedMessageHash(bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#30-37) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#32-36)
MessageHashUtils.toTypedDataHash(bytes32,bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#76-85) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#78-84)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#123-202) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#130-133)
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#154-161)
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#167-176)
AccessControlUpgradeable._getAccessControlStorage() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#67-71) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#68-70)
Initializable._getInitializableStorage() (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#223-227) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#224-226)
ERC20Upgradeable._getERC20Storage() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#51-55) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#52-54)
NoncesUpgradeable._getNoncesStorage() (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#23-27) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#24-26)
ReentrancyGuardUpgradeable._getReentrancyGuardStorage() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#46-50) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#47-49)
EIP712Upgradeable._getEIP712Storage() (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#50-54) uses assembly
- INLINE ASM (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#51-53)
VaultLib.getERC20Storage() (src/library/VaultLib.sol#25-30) uses assembly
- INLINE ASM (src/library/VaultLib.sol#26-29)
VaultLib.getVaultStorage() (src/library/VaultLib.sol#36-41) uses assembly
- INLINE ASM (src/library/VaultLib.sol#37-40)
VaultLib.getAssetStorage() (src/library/VaultLib.sol#47-52) uses assembly
- INLINE ASM (src/library/VaultLib.sol#48-51)
VaultLib.getProcessorStorage() (src/library/VaultLib.sol#58-63) uses assembly
- INLINE ASM (src/library/VaultLib.sol#59-62)
VaultLib.getFeeStorage() (src/library/VaultLib.sol#69-74) uses assembly
- INLINE ASM (src/library/VaultLib.sol#70-73)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
2 different versions of Solidity are used:
- Version constraint ^0.8.20 is used by:
-^0.8.20 (lib/openzeppelin-contracts/contracts/access/AccessControl.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/access/IAccessControl.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/access/Ownable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol#3)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Strings.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#3)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#4)
-^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)
- Version constraint ^0.8.24 is used by:
-^0.8.24 (src/BaseVault.sol#2)
-^0.8.24 (src/Common.sol#3)
-^0.8.24 (src/Vault.sol#2)
-^0.8.24 (src/interface/IProvider.sol#2)
-^0.8.24 (src/interface/IStrategy.sol#2)
-^0.8.24 (src/interface/IValidator.sol#2)
-^0.8.24 (src/interface/IVault.sol#2)
-^0.8.24 (src/library/VaultLib.sol#2)
-^0.8.24 (src/module/FeeMath.sol#2)
-^0.8.24 (src/module/Guard.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
BaseVault._convertAssetToBase(address,uint256) (src/BaseVault.sol#562-564) is never used and should be removed
BaseVault._convertBaseToAsset(address,uint256) (src/BaseVault.sol#572-574) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- ^0.8.20 (lib/openzeppelin-contracts/contracts/access/AccessControl.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/access/IAccessControl.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/access/Ownable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol#3)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/Proxy.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Address.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Strings.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#3)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415):
- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)
Low level call in SafeERC20._callOptionalReturnBool(IERC20,bytes) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#110-117):
- (success,returndata) = address(token).call(data) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#115)
Low level call in Address.sendValue(address,uint256) (lib/openzeppelin-contracts/contracts/utils/Address.sol#41-50):
- (success,None) = recipient.call{value: amount}() (lib/openzeppelin-contracts/contracts/utils/Address.sol#46)
Low level call in Address.functionCallWithValue(address,bytes,uint256) (lib/openzeppelin-contracts/contracts/utils/Address.sol#83-89):
- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#87)
Low level call in Address.functionStaticCall(address,bytes) (lib/openzeppelin-contracts/contracts/utils/Address.sol#95-98):
- (success,returndata) = target.staticcall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#96)
Low level call in Address.functionDelegateCall(address,bytes) (lib/openzeppelin-contracts/contracts/utils/Address.sol#104-107):
- (success,returndata) = target.delegatecall(data) (lib/openzeppelin-contracts/contracts/utils/Address.sol#105)
Low level call in VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336):
- (success,returnData_) = targets[i].call{value: values[i]}(data[i]) (src/library/VaultLib.sol#329)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function IERC20Permit.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol#89) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#82-83) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#85-86) is not in mixedCase
Constant AccessControlUpgradeable.AccessControlStorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol#65) is not in UPPER_CASE_WITH_UNDERSCORES
Function ERC20Upgradeable.__ERC20_init(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#63-65) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#67-71) is not in mixedCase
Constant ERC20Upgradeable.ERC20StorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol#49) is not in UPPER_CASE_WITH_UNDERSCORES
Function ERC20PermitUpgradeable.__ERC20Permit_init(string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#40-42) is not in mixedCase
Function ERC20PermitUpgradeable.__ERC20Permit_init_unchained(string) (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#44) is not in mixedCase
Function ERC20PermitUpgradeable.DOMAIN_SEPARATOR() (lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol#85-87) is not in mixedCase
Function ContextUpgradeable.__Context_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Function NoncesUpgradeable.__Nonces_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#29-30) is not in mixedCase
Function NoncesUpgradeable.__Nonces_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#32-33) is not in mixedCase
Constant NoncesUpgradeable.NoncesStorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol#21) is not in UPPER_CASE_WITH_UNDERSCORES
Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#57-59) is not in mixedCase
Function ReentrancyGuardUpgradeable.__ReentrancyGuard_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#61-64) is not in mixedCase
Constant ReentrancyGuardUpgradeable.ReentrancyGuardStorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol#44) is not in UPPER_CASE_WITH_UNDERSCORES
Function EIP712Upgradeable.__EIP712_init(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#68-70) is not in mixedCase
Function EIP712Upgradeable.__EIP712_init_unchained(string,string) (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#72-80) is not in mixedCase
Function EIP712Upgradeable._EIP712Name() (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#151-154) is not in mixedCase
Function EIP712Upgradeable._EIP712Version() (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#162-165) is not in mixedCase
Function EIP712Upgradeable._EIP712NameHash() (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#172-187) is not in mixedCase
Function EIP712Upgradeable._EIP712VersionHash() (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#194-209) is not in mixedCase
Constant EIP712Upgradeable.EIP712StorageLocation (lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol#48) is not in UPPER_CASE_WITH_UNDERSCORES
Function ERC165Upgradeable.__ERC165_init() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#22-23) is not in mixedCase
Function ERC165Upgradeable.__ERC165_init_unchained() (lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol#25-26) is not in mixedCase
Function BaseVault._feeOnRaw(uint256) (src/BaseVault.sol#826) is not in mixedCase
Function BaseVault._feeOnTotal(uint256) (src/BaseVault.sol#833) is not in mixedCase
Function Vault._feeOnRaw(uint256) (src/Vault.sol#74-81) is not in mixedCase
Function Vault._feeOnTotal(uint256) (src/Vault.sol#90-97) is not in mixedCase
Function IVault._feeOnRaw(uint256) (src/interface/IVault.sol#141) is not in mixedCase
Function IVault._feeOnTotal(uint256) (src/interface/IVault.sol#142) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
. analyzed (64 contracts with 100 detectors), 110 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.24",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.24",
"install_stderr": null,
"install_stdout": "Version '0.8.24' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-vqubff6j --include-path /tmp/slither-vqubff6j/lib --include-path /tmp/slither-vqubff6j/lib/openzeppelin-contracts-upgradeable --include-path /tmp/slither-vqubff6j/lib/openzeppelin-contracts --allow-paths /tmp/slither-vqubff6j,/tmp/slither-vqubff6j/lib,/tmp/slither-vqubff6j/lib/openzeppelin-contracts,/tmp/slither-vqubff6j/lib/openzeppelin-contracts-upgradeable,/tmp/slither-vqubff6j/src",
"remappings": [
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/wrapped-token/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"wrapped-token/=lib/wrapped-token/",
"src/=src/"
],
"source_files": [
"src/Vault.sol",
"src/BaseVault.sol",
"src/module/FeeMath.sol",
"src/library/VaultLib.sol",
"src/Common.sol",
"src/interface/IVault.sol",
"src/interface/IStrategy.sol",
"src/interface/IProvider.sol",
"src/module/Guard.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol",
"lib/openzeppelin-contracts/contracts/utils/Address.sol",
"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol",
"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol",
"lib/openzeppelin-contracts/contracts/utils/math/Math.sol",
"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol",
"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol",
"lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
"src/interface/IValidator.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol",
"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol",
"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"lib/openzeppelin-contracts/contracts/utils/Context.sol",
"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol",
"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol",
"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol",
"lib/openzeppelin-contracts/contracts/access/Ownable.sol",
"lib/openzeppelin-contracts/contracts/access/AccessControl.sol",
"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol",
"lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol",
"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol",
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol",
"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol",
"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol",
"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol",
"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol",
"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"lib/openzeppelin-contracts/contracts/utils/Strings.sol",
"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 110,
"workspace_hash": "c89522052af2e9ff4a80020e56c56c2157714b6927b7106c6361778ff0c61f68",
"duration_seconds": 3.777475118637085,
"solc_version_requested": "0.8.24"
}
{"no_findings":false,"summary":"Found 3 issues: accounting ignores buffer-held assets (share price manipulation), unguarded oracle rates, and fee-on-transfer deposits can inflate shares.","findings":[{"severity":"high","category":"other","title":"processAccounting ignores buffer/strategy assets, enabling share price manipulation","exploit_scenario":"If vault assets are moved into the buffer strategy (used for withdrawals), any user can call processAccounting() and force totalAssets to be recomputed from only the vault’s on-contract balances. This can drop totalAssets close to zero even though assets still exist in the buffer. An attacker can then deposit a small amount and mint disproportionately many shares (since shares are priced off the deflated totalAssets). Once assets are moved back on-vault or accounting is corrected, the attacker can redeem for more assets than deposited, extracting value from existing holders. Even without profit, it can misprice shares and break maxWithdraw logic.","recommendation":"Include buffer/strategy balances in computeTotalAssets (e.g., add IStrategy(buffer).totalAssets() plus any other strategy holdings) or prevent processAccounting from overwriting totalAssets while assets are held off-vault. Consider restricting processAccounting to trusted keepers if accuracy cannot be guaranteed.","evidence":"computeTotalAssets only sums balances held by address(this) and processAccounting overwrites totalAssets with that value.","locations":["src/library/VaultLib.sol:295","src/library/VaultLib.sol:301","src/library/VaultLib.sol:305","src/BaseVault.sol:773","src/BaseVault.sol:777"]},{"severity":"medium","category":"oracle","title":"Share pricing fully trusts provider rates without validation or staleness checks","exploit_scenario":"convertAssetToBase/convertBaseToAsset use IProvider.getRate(asset_) directly. If the provider source can be manipulated (e.g., DEX spot price, stale oracle, or malicious provider), an attacker can skew the rate, call processAccounting or deposit/redeem, minting shares at an inflated rate or redeeming at a deflated rate and draining value. Because processAccounting is public, attackers can time the update to the manipulated rate themselves.","recommendation":"Use robust oracles (TWAP/Chainlink), add staleness and bounds checks, and consider restricting processAccounting to trusted keepers or validating rates before accepting them. Revert on zero or out-of-range rates.","evidence":"Rates are pulled from IProvider with no validation and used directly in conversions that determine share pricing.","locations":["src/library/VaultLib.sol:177","src/library/VaultLib.sol:189","src/library/VaultLib.sol:248"]},{"severity":"low","category":"other","title":"Fee-on-transfer tokens can inflate shares and totalAssets","exploit_scenario":"_deposit mints shares and increments totalAssets using the requested assets amount, then calls transferFrom. For fee-on-transfer/deflationary tokens, the vault receives fewer tokens than assets, but still mints full shares and records full baseAssets. A user can deposit such a token to mint excess shares, then redeem for more value than actually deposited, diluting existing holders.","recommendation":"Either disallow fee-on-transfer/rebasing assets explicitly or compute actual received amount by checking balanceBefore/balanceAfter and base share minting on the received amount.","evidence":"_deposit updates accounting and mints shares before verifying actual tokens received.","locations":["src/BaseVault.sol:458","src/BaseVault.sol:470","src/BaseVault.sol:472","src/BaseVault.sol:473"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-n7vft4lr
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac3c-e27f-70a1-8cff-cca4a38754d4
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-n7vft4lr succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
lib
src
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-n7vft4lr succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: src/BaseVault.sol
================================================================================
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.24;
import {
AccessControlUpgradeable,
ERC20PermitUpgradeable,
ERC20Upgradeable,
IERC20,
IERC20Metadata,
Math,
ReentrancyGuardUpgradeable,
SafeERC20
} from "src/Common.sol";
thinking
**Planning to read full AUDIT_BUNDLE**
exec
/bin/bash -lc 'rg -n "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-n7vft4lr succeeded in 6ms:
5:FILE: src/BaseVault.sol
843:FILE: src/Common.sol
875:FILE: src/Vault.sol
1008:FILE: src/interface/IProvider.sol
1055:FILE: src/interface/IStrategy.sol
1080:FILE: src/interface/IValidator.sol
1096:FILE: src/interface/IVault.sol
1243:FILE: src/library/VaultLib.sol
1584:FILE: src/module/FeeMath.sol
1627:FILE: src/module/Guard.sol
thinking
**Preparing to read files for inspection**
exec
/bin/bash -lc "sed -n '1,250p' AUDIT_BUNDLE.txt" in /tmp/codex-n7vft4lr succeeded in 26ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: src/BaseVault.sol
================================================================================
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.24;
import {
AccessControlUpgradeable,
ERC20PermitUpgradeable,
ERC20Upgradeable,
IERC20,
IERC20Metadata,
Math,
ReentrancyGuardUpgradeable,
SafeERC20
} from "src/Common.sol";
thinking
**Continuing to gather BaseVault code**
exec
/bin/bash -lc "sed -n '250,500p' AUDIT_BUNDLE.txt" in /tmp/codex-n7vft4lr succeeded in 6ms:
function maxWithdraw(address owner) public view virtual returns (uint256) {
if (paused()) {
return 0;
}
uint256 bufferAssets = IStrategy(buffer()).maxWithdraw(address(this));
if (bufferAssets == 0) {
return 0;
}
uint256 ownerShares = balanceOf(owner);
uint256 maxAssets = previewRedeem(ownerShares);
return bufferAssets < maxAssets ? bufferAssets : maxAssets;
}
/**
* @notice Returns the maximum amount of shares that can be redeemed by a given owner.
* @param owner The address of the owner.
* @return uint256 The maximum amount of shares.
exec
/bin/bash -lc "sed -n '500,750p' AUDIT_BUNDLE.txt" in /tmp/codex-n7vft4lr succeeded in 9ms:
function _subTotalAssets(uint256 baseAssets) internal virtual {
VaultLib.subTotalAssets(baseAssets);
}
/**
* @notice Internal function to handle withdrawals.
* @param caller The address of the caller.
* @param receiver The address of the receiver.
* @param owner The address of the owner.
* @param assets The amount of assets to withdraw.
* @param shares The equivalent amount of shares.
*/
function _withdraw(address caller, address receiver, address owner, uint256 assets, uint256 shares)
internal
virtual
{
VaultStorage storage vaultStorage = _getVaultStorage();
_subTotalAssets(VaultLib.convertAssetToBase(asset(), assets));
if (caller != owner) {
_spendAllowance(owner, caller, shares);
exec
/bin/bash -lc "sed -n '750,1000p' AUDIT_BUNDLE.txt" in /tmp/codex-n7vft4lr succeeded in 5ms:
revert Paused();
}
VaultStorage storage vaultStorage = _getVaultStorage();
vaultStorage.paused = true;
emit Pause(true);
}
/**
* @notice Unpauses the vault.
*/
function unpause() external virtual onlyRole(UNPAUSER_ROLE) {
if (!paused()) {
revert Unpaused();
}
VaultStorage storage vaultStorage = _getVaultStorage();
if (provider() == address(0)) {
revert ProviderNotSet();
}
exec
/bin/bash -lc "sed -n '1000,1250p' AUDIT_BUNDLE.txt" in /tmp/codex-n7vft4lr succeeded in 28ms:
* @return uint64 The base withdrawal fee in basis points (1/10000)
*/
function baseWithdrawalFee() external view returns (uint64) {
return _getFeeStorage().baseWithdrawalFee;
}
}
================================================================================
FILE: src/interface/IProvider.sol
================================================================================
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity ^0.8.24;
interface IProvider {
function getRate(address asset) external view returns (uint256);
}
interface IStETH {
function getPooledEthByShares(uint256 _ethAmount) external view returns (uint256);
}
thinking
**Analyzing potential vulnerabilities in Vault contracts**
I’m reviewing key risks like reentrancy, access control, upgradeability, oracle manipulation, and accounting inconsistencies in VaultLib and BaseVault. There are nuanced concerns with cached totalAssets causing share inflation risk, reliance on external oracle rates without sanity checks, and Guard’s parameter validation possibly bypassable for dynamic types. I’m sifting through external call patterns, role protections, and initialization logic to identify exploitable gaps and economic risks. Let’s explore these together!
thinking
**Identifying accounting and strategy integration flaws**
I’m uncovering a major inconsistency where totalAssets calculation ignores assets held in the buffer strategy, causing serious share price miscalculations and potential inflation exploits. The public processAccounting allows anyone to trigger stale asset updates leading to dilution risks if assets reside in buffer. Additionally, there are risks in Guard’s parameter validation for dynamic data potentially allowing allowlist bypass, alongside reentrancy considerations limited by strict role control. This blend of accounting gaps and validation weaknesses is quite compelling to analyze further!
thinking
**Analyzing nuanced accounting and access intricacies**
I’m working through subtle interactions around array parameter handling in Guard that might cause unintended failures but not exploits, and diving deep into withdrawal, fee, and share calculations that generally hold up. The main spotlight remains on the significant gap where processAccounting ignores buffered assets, risking serious share price inconsistencies if triggered at inopportune times. I’m piecing together how cached totals versus computed totals interplay and whether an attacker could profit from this under certain scenarios.
thinking
**Evaluating multiple design flaws and risks**
There is a tricky design flaw with processAccounting ignoring buffer assets, enabling share price manipulation during timing windows, and a significant risk from permissionless processAccounting combined with manipulable oracle rates affecting totalAssets and share valuation. I’m also spotting a known vulnerability where fee-on-transfer tokens misstate totalAssets on deposit, plus missing ERC20Permit initialization that could impact signature security. These findings point to several serious but distinct areas worth flagging.
thinking
**Analyzing permit initialization and token interaction risks**
I’m looking into the missing ERC20Permit initialization causing permit signatures to malfunction, plus potential reentrancy concerns with token transfers and processAccounting’s use of external token calls. I also note provider zero-rate handling could cause unexpected deposit or withdrawal behaviors, so I’ll gather exact file locations next.
exec
/bin/bash -lc "nl -ba src/library/VaultLib.sol | sed -n '120,220p'" in /tmp/codex-n7vft4lr succeeded in 14ms:
120 emit IVault.NewAsset(asset_, decimals_, index);
121 }
122
123 /**
124 * @notice Updates an existing asset's parameters in the vault.
125 * @param index The index of the asset to update.
126 * @param fields The AssetUpdateFields struct containing the updated fields.
127 */
128 function updateAsset(uint256 index, IVault.AssetUpdateFields calldata fields) public {
129 IVault.AssetStorage storage assetStorage = getAssetStorage();
130 if (index >= assetStorage.list.length) {
131 revert IVault.InvalidAsset(address(0));
132 }
133
134 address asset_ = assetStorage.list[index];
135 IVault.AssetParams storage assetParams = assetStorage.assets[asset_];
136 assetParams.active = fields.active;
137 emit IVault.UpdateAsset(index, asset_, fields);
138 }
139
thinking
**Locating computeTotalAssets code**
exec
/bin/bash -lc "nl -ba src/library/VaultLib.sol | sed -n '240,340p'" in /tmp/codex-n7vft4lr succeeded in 6ms:
240 * @param rounding The rounding direction.
241 * @return (shares, baseAssets) The equivalent amount of shares.
242 */
243 function convertToShares(address asset_, uint256 assets, Math.Rounding rounding)
244 public
245 view
246 returns (uint256, uint256)
247 {
248 uint256 totalAssets = IVault(address(this)).totalBaseAssets();
249 uint256 totalSupply = getERC20Storage().totalSupply;
250 uint256 baseAssets = convertAssetToBase(asset_, assets);
251 uint256 shares = baseAssets.mulDiv(totalSupply + 1, totalAssets + 1, rounding);
252 return (shares, baseAssets);
253 }
254
255 /**
256 * @notice Sets the processor rule for a given contract address and function signature.
257 * @param target The address of the target contract.
258 * @param functionSig The function signature.
259 * @param rule The function rule.
thinking
**Locating processAccounting function**
exec
/bin/bash -lc "nl -ba src/BaseVault.sol | sed -n '720,860p'" in /tmp/codex-n7vft4lr succeeded in 6ms:
720 virtual
721 onlyRole(ASSET_MANAGER_ROLE)
722 {
723 _getVaultStorage().alwaysComputeTotalAssets = alwaysComputeTotalAssets_;
724 emit SetAlwaysComputeTotalAssets(alwaysComputeTotalAssets_);
725
726 if (!alwaysComputeTotalAssets_) {
727 _processAccounting();
728 }
729 }
730
731 /**
732 * @notice Returns whether the vault always computes total assets.
733 * @return bool True if the vault always computes total assets.
734 */
735 function alwaysComputeTotalAssets() public view virtual returns (bool) {
736 return _getVaultStorage().alwaysComputeTotalAssets;
737 }
738
739 /**
thinking
**Analyzing multiple vault vulnerabilities**
I'm working through several issues in the vault contracts, including stale cached totalAssets causing share price manipulation, permissionless processAccounting allowing yield capture, missing checks on provider rates enabling oracle manipulation, and ignoring buffer assets in computeTotalAssets—some marked high risk, others medium or low. I'm gathering line references and detailed reasoning to clearly document these findings.
exec
/bin/bash -lc "nl -ba src/BaseVault.sol | sed -n '330,430p'" in /tmp/codex-n7vft4lr succeeded in 29ms:
330
331 _withdraw(_msgSender(), receiver, owner, assets, shares);
332 }
333
334 /**
335 * @notice Redeems a given amount of shares and transfers the equivalent amount of assets to the receiver.
336 * @param shares The amount of shares to redeem.
337 * @param receiver The address of the receiver.
338 * @param owner The address of the owner.
339 * @return assets The equivalent amount of assets.
340 */
341 function redeem(uint256 shares, address receiver, address owner)
342 public
343 virtual
344 nonReentrant
345 returns (uint256 assets)
346 {
347 if (paused()) {
348 revert Paused();
349 }
thinking
**Locating _deposit function**
exec
/bin/bash -lc "nl -ba src/BaseVault.sol | sed -n '430,520p'" in /tmp/codex-n7vft4lr succeeded in 6ms:
430 * @param receiver The address of the receiver.
431 * @return uint256 The equivalent amount of shares.
432 */
433 function depositAsset(address asset_, uint256 assets, address receiver)
434 public
435 virtual
436 nonReentrant
437 returns (uint256)
438 {
439 if (paused()) {
440 revert Paused();
441 }
442 (uint256 shares, uint256 baseAssets) = _convertToShares(asset_, assets, Math.Rounding.Floor);
443 _deposit(asset_, _msgSender(), receiver, assets, shares, baseAssets);
444 return shares;
445 }
446
447 //// INTERNAL ////
448
449 /**
thinking
**Summarizing key security findings**
I'm putting together a structured JSON report describing three main issues: a high-severity accounting bug where `processAccounting` undercounts buffer assets leading to share price manipulation; a medium-severity oracle trust problem due to unchecked provider rates enabling price manipulation; and a low-severity issue where fee-on-transfer tokens cause share inflation by minting based on requested instead of actual received assets. I'll carefully cite code locations, explain exploit scenarios, assign severities, and ensure the output matches the required format with proper categories and evidence.
codex
{"no_findings":false,"summary":"Found 3 issues: accounting ignores buffer-held assets (share price manipulation), unguarded oracle rates, and fee-on-transfer deposits can inflate shares.","findings":[{"severity":"high","category":"other","title":"processAccounting ignores buffer/strategy assets, enabling share price manipulation","exploit_scenario":"If vault assets are moved into the buffer strategy (used for withdrawals), any user can call processAccounting() and force totalAssets to be recomputed from only the vault’s on-contract balances. This can drop totalAssets close to zero even though assets still exist in the buffer. An attacker can then deposit a small amount and mint disproportionately many shares (since shares are priced off the deflated totalAssets). Once assets are moved back on-vault or accounting is corrected, the attacker can redeem for more assets than deposited, extracting value from existing holders. Even without profit, it can misprice shares and break maxWithdraw logic.","recommendation":"Include buffer/strategy balances in computeTotalAssets (e.g., add IStrategy(buffer).totalAssets() plus any other strategy holdings) or prevent processAccounting from overwriting totalAssets while assets are held off-vault. Consider restricting processAccounting to trusted keepers if accuracy cannot be guaranteed.","evidence":"computeTotalAssets only sums balances held by address(this) and processAccounting overwrites totalAssets with that value.","locations":["src/library/VaultLib.sol:295","src/library/VaultLib.sol:301","src/library/VaultLib.sol:305","src/BaseVault.sol:773","src/BaseVault.sol:777"]},{"severity":"medium","category":"oracle","title":"Share pricing fully trusts provider rates without validation or staleness checks","exploit_scenario":"convertAssetToBase/convertBaseToAsset use IProvider.getRate(asset_) directly. If the provider source can be manipulated (e.g., DEX spot price, stale oracle, or malicious provider), an attacker can skew the rate, call processAccounting or deposit/redeem, minting shares at an inflated rate or redeeming at a deflated rate and draining value. Because processAccounting is public, attackers can time the update to the manipulated rate themselves.","recommendation":"Use robust oracles (TWAP/Chainlink), add staleness and bounds checks, and consider restricting processAccounting to trusted keepers or validating rates before accepting them. Revert on zero or out-of-range rates.","evidence":"Rates are pulled from IProvider with no validation and used directly in conversions that determine share pricing.","locations":["src/library/VaultLib.sol:177","src/library/VaultLib.sol:189","src/library/VaultLib.sol:248"]},{"severity":"low","category":"other","title":"Fee-on-transfer tokens can inflate shares and totalAssets","exploit_scenario":"_deposit mints shares and increments totalAssets using the requested assets amount, then calls transferFrom. For fee-on-transfer/deflationary tokens, the vault receives fewer tokens than assets, but still mints full shares and records full baseAssets. A user can deposit such a token to mint excess shares, then redeem for more value than actually deposited, diluting existing holders.","recommendation":"Either disallow fee-on-transfer/rebasing assets explicitly or compute actual received amount by checking balanceBefore/balanceAfter and base share minting on the received amount.","evidence":"_deposit updates accounting and mints shares before verifying actual tokens received.","locations":["src/BaseVault.sol:458","src/BaseVault.sol:470","src/BaseVault.sol:472","src/BaseVault.sol:473"]}]}
tokens used
57,660
{
"codex": {
"ran_at": "2026-01-11T08:54:02.262342+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 55,
"import_count": 77,
"first_party_contracts_count": 10
},
"summary": "Found 3 issues: accounting ignores buffer-held assets (share price manipulation), unguarded oracle rates, and fee-on-transfer deposits can inflate shares.",
"raw_final": {
"summary": "Found 3 issues: accounting ignores buffer-held assets (share price manipulation), unguarded oracle rates, and fee-on-transfer deposits can inflate shares.",
"findings": [
{
"title": "processAccounting ignores buffer/strategy assets, enabling share price manipulation",
"category": "other",
"evidence": "computeTotalAssets only sums balances held by address(this) and processAccounting overwrites totalAssets with that value.",
"severity": "high",
"locations": [
"src/library/VaultLib.sol:295",
"src/library/VaultLib.sol:301",
"src/library/VaultLib.sol:305",
"src/BaseVault.sol:773",
"src/BaseVault.sol:777"
],
"recommendation": "Include buffer/strategy balances in computeTotalAssets (e.g., add IStrategy(buffer).totalAssets() plus any other strategy holdings) or prevent processAccounting from overwriting totalAssets while assets are held off-vault. Consider restricting processAccounting to trusted keepers if accuracy cannot be guaranteed.",
"exploit_scenario": "If vault assets are moved into the buffer strategy (used for withdrawals), any user can call processAccounting() and force totalAssets to be recomputed from only the vault\u2019s on-contract balances. This can drop totalAssets close to zero even though assets still exist in the buffer. An attacker can then deposit a small amount and mint disproportionately many shares (since shares are priced off the deflated totalAssets). Once assets are moved back on-vault or accounting is corrected, the attacker can redeem for more assets than deposited, extracting value from existing holders. Even without profit, it can misprice shares and break maxWithdraw logic."
},
{
"title": "Share pricing fully trusts provider rates without validation or staleness checks",
"category": "oracle",
"evidence": "Rates are pulled from IProvider with no validation and used directly in conversions that determine share pricing.",
"severity": "medium",
"locations": [
"src/library/VaultLib.sol:177",
"src/library/VaultLib.sol:189",
"src/library/VaultLib.sol:248"
],
"recommendation": "Use robust oracles (TWAP/Chainlink), add staleness and bounds checks, and consider restricting processAccounting to trusted keepers or validating rates before accepting them. Revert on zero or out-of-range rates.",
"exploit_scenario": "convertAssetToBase/convertBaseToAsset use IProvider.getRate(asset_) directly. If the provider source can be manipulated (e.g., DEX spot price, stale oracle, or malicious provider), an attacker can skew the rate, call processAccounting or deposit/redeem, minting shares at an inflated rate or redeeming at a deflated rate and draining value. Because processAccounting is public, attackers can time the update to the manipulated rate themselves."
},
{
"title": "Fee-on-transfer tokens can inflate shares and totalAssets",
"category": "other",
"evidence": "_deposit updates accounting and mints shares before verifying actual tokens received.",
"severity": "low",
"locations": [
"src/BaseVault.sol:458",
"src/BaseVault.sol:470",
"src/BaseVault.sol:472",
"src/BaseVault.sol:473"
],
"recommendation": "Either disallow fee-on-transfer/rebasing assets explicitly or compute actual received amount by checking balanceBefore/balanceAfter and base share minting on the received amount.",
"exploit_scenario": "_deposit mints shares and increments totalAssets using the requested assets amount, then calls transferFrom. For fee-on-transfer/deflationary tokens, the vault receives fewer tokens than assets, but still mints full shares and records full baseAssets. A user can deposit such a token to mint excess shares, then redeem for more value than actually deposited, diluting existing holders."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x042f 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x76cd816b 00000018: GT 00000019: PUSH2 0x022b 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0xc4b1b3b4 00000023: GT 00000024: PUSH2 0x0129 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xd905777e 0000002e: GT 0000002f: PUSH2 0x00b3 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xecfe5f93 00000039: GT 0000003a: PUSH2 0x0078 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xecfe5f93 00000044: EQ 00000045: PUSH2 0x0d4d 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xedaafe20 0000004f: EQ 00000050: PUSH2 0x0d6c 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0xef8b30f7 0000005a: EQ 0000005b: PUSH2 0x0bef 0000005e: JUMPI 0000005f: DUP1 00000060: PUSH4 0xf4595b89 00000065: EQ 00000066: PUSH2 0x0d80 00000069: JUMPI 0000006a: DUP1 0000006b: PUSH4 0xfb1bb9de 00000070: EQ 00000071: PUSH2 0x0db0 00000074: JUMPI 00000075: PUSH0 00000076: DUP1 00000077: REVERT 00000078: JUMPDEST 00000079: DUP1 0000007a: PUSH4 0xd905777e 0000007f: EQ 00000080: PUSH2 0x0ca9 00000083: JUMPI 00000084: DUP1 00000085: PUSH4 0xdd62ed3e 0000008a: EQ 0000008b: PUSH2 0x0cc8 0000008e: JUMPI 0000008f: DUP1 00000090: PUSH4 0xe63ab1e9 00000095: EQ 00000096: PUSH2 0x0ce7 00000099: JUMPI 0000009a: DUP1 0000009b: PUSH4 0xe6ef2a27 000000a0: EQ 000000a1: PUSH2 0x0d1a 000000a4: JUMPI 000000a5: DUP1 000000a6: PUSH4 0xe95c41c3 000000ab: EQ 000000ac: PUSH2 0x0d2e 000000af: JUMPI 000000b0: PUSH0 000000b1: DUP1 000000b2: REVERT 000000b3: JUMPDEST 000000b4: DUP1 000000b5: PUSH4 0xc7e5fa94 000000ba: GT 000000bb: PUSH2 0x00f9 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0xc7e5fa94 000000c5: EQ 000000c6: PUSH2 0x0c0e 000000c9: JUMPI 000000ca: DUP1 000000cb: PUSH4 0xce96cb77 000000d0: EQ 000000d1: PUSH2 0x0c2d 000000d4: JUMPI 000000d5: DUP1 000000d6: PUSH4 0xcfd8d6c0 000000db: EQ 000000dc: PUSH2 0x0c4c 000000df: JUMPI 000000e0: DUP1 000000e1: PUSH4 0xd505accf 000000e6: EQ 000000e7: PUSH2 0x0c6b 000000ea: JUMPI 000000eb: DUP1 000000ec: PUSH4 0xd547741f 000000f1: EQ 000000f2: PUSH2 0x0c8a 000000f5: JUMPI 000000f6: PUSH0 000000f7: DUP1 000000f8: REVERT 000000f9: JUMPDEST 000000fa: DUP1 000000fb: PUSH4 0xc4b1b3b4 00000100: EQ 00000101: PUSH2 0x0b89 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0xc58dd16c 0000010b: EQ 0000010c: PUSH2 0x0bbc 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0xc63d75b6 00000116: EQ 00000117: PUSH2 0x0809 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0xc6e6f592 00000121: EQ 00000122: PUSH2 0x0bef 00000125: JUMPI 00000126: PUSH0 00000127: DUP1 00000128: REVERT 00000129: JUMPDEST 0000012a: DUP1 0000012b: PUSH4 0x95d89b41 00000130: GT 00000131: PUSH2 0x01b5 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0xb3d7f6b9 0000013b: GT 0000013c: PUSH2 0x017a 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0xb3d7f6b9 00000146: EQ 00000147: PUSH2 0x0af9 0000014a: JUMPI 0000014b: DUP1 0000014c: PUSH4 0xb460af94 00000151: EQ 00000152: PUSH2 0x0b18 00000155: JUMPI 00000156: DUP1 00000157: PUSH4 0xb4e6aca0 0000015c: EQ 0000015d: PUSH2 0x0b37 00000160: JUMPI 00000161: DUP1 00000162: PUSH4 0xba087652 00000167: EQ 00000168: PUSH2 0x0b56 0000016b: JUMPI 0000016c: DUP1 0000016d: PUSH4 0xc02add89 00000172: EQ 00000173: PUSH2 0x0b75 00000176: JUMPI 00000177: PUSH0 00000178: DUP1 00000179: REVERT 0000017a: JUMPDEST 0000017b: DUP1 0000017c: PUSH4 0x95d89b41 00000181: EQ 00000182: PUSH2 0x0a74 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0xa217fddf 0000018c: EQ 0000018d: PUSH2 0x0a88 00000190: JUMPI 00000191: DUP1 00000192: PUSH4 0xa4b32de8 00000197: EQ 00000198: PUSH2 0x0a9b 0000019b: JUMPI 0000019c: DUP1 0000019d: PUSH4 0xa9059cbb 000001a2: EQ 000001a3: PUSH2 0x0abb 000001a6: JUMPI 000001a7: DUP1 000001a8: PUSH4 0xb039b629 000001ad: EQ 000001ae: PUSH2 0x0ada 000001b1: JUMPI 000001b2: PUSH0 000001b3: DUP1 000001b4: REVERT 000001b5: JUMPDEST 000001b6: DUP1 000001b7: PUSH4 0x8222bdb2 000001bc: GT 000001bd: PUSH2 0x01fb 000001c0: JUMPI 000001c1: DUP1 000001c2: PUSH4 0x8222bdb2 000001c7: EQ 000001c8: PUSH2 0x09c8 000001cb: JUMPI 000001cc: DUP1 000001cd: PUSH4 0x8456cb59 000001d2: EQ 000001d3: PUSH2 0x09fb 000001d6: JUMPI 000001d7: DUP1 000001d8: PUSH4 0x84b0196e 000001dd: EQ 000001de: PUSH2 0x0a0f 000001e1: JUMPI 000001e2: DUP1 000001e3: PUSH4 0x91d14854 000001e8: EQ 000001e9: PUSH2 0x0a36 000001ec: JUMPI 000001ed: DUP1 000001ee: PUSH4 0x94bf804d 000001f3: EQ 000001f4: PUSH2 0x0a55 000001f7: JUMPI 000001f8: PUSH0 000001f9: DUP1 000001fa: REVERT 000001fb: JUMPDEST 000001fc: DUP1 000001fd: PUSH4 0x76cd816b 00000202: EQ 00000203: PUSH2 0x0957 00000206: JUMPI 00000207: DUP1 00000208: PUSH4 0x789b274d 0000020d: EQ 0000020e: PUSH2 0x0976 00000211: JUMPI 00000212: DUP1 00000213: PUSH4 0x7eb79b53 00000218: EQ 00000219: PUSH2 0x098a 0000021c: JUMPI 0000021d: DUP1 0000021e: PUSH4 0x7ecebe00 00000223: EQ 00000224: PUSH2 0x09a9 00000227: JUMPI 00000228: PUSH0 00000229: DUP1 0000022a: REVERT 0000022b: JUMPDEST 0000022c: DUP1 0000022d: PUSH4 0x30b8b2c6 00000232: GT 00000233: PUSH2 0x0338 00000236: JUMPI 00000237: DUP1 00000238: PUSH4 0x465d8576 0000023d: GT 0000023e: PUSH2 0x02c2 00000241: JUMPI 00000242: DUP1 00000243: PUSH4 0x67e4ac2c 00000248: GT 00000249: PUSH2 0x0287 0000024c: JUMPI 0000024d: DUP1 0000024e: PUSH4 0x67e4ac2c 00000253: EQ 00000254: PUSH2 0x08c5 00000257: JUMPI 00000258: DUP1 00000259: PUSH4 0x6d00cfdf 0000025e: EQ 0000025f: PUSH2 0x08e6 00000262: JUMPI 00000263: DUP1 00000264: PUSH4 0x6e553f65 00000269: EQ 0000026a: PUSH2 0x08fa 0000026d: JUMPI 0000026e: DUP1 0000026f: PUSH4 0x7002a60f 00000274: EQ 00000275: PUSH2 0x0919 00000278: JUMPI 00000279: DUP1 0000027a: PUSH4 0x70a08231 0000027f: EQ 00000280: PUSH2 0x0938 00000283: JUMPI 00000284: PUSH0 00000285: DUP1 00000286: REVERT 00000287: JUMPDEST 00000288: DUP1 00000289: PUSH4 0x465d8576 0000028e: EQ 0000028f: PUSH2 0x0828 00000292: JUMPI 00000293: DUP1 00000294: PUSH4 0x4cdad506 00000299: EQ 0000029a: PUSH2 0x0847 0000029d: JUMPI 0000029e: DUP1 0000029f: PUSH4 0x536f4c2f 000002a4: EQ 000002a5: PUSH2 0x0866 000002a8: JUMPI 000002a9: DUP1 000002aa: PUSH4 0x5836edfa 000002af: EQ 000002b0: PUSH2 0x0892 000002b3: JUMPI 000002b4: DUP1 000002b5: PUSH4 0x5c975abb 000002ba: EQ 000002bb: PUSH2 0x08b1 000002be: JUMPI 000002bf: PUSH0 000002c0: DUP1 000002c1: REVERT 000002c2: JUMPDEST 000002c3: DUP1 000002c4: PUSH4 0x36568abe 000002c9: GT 000002ca: PUSH2 0x0308 000002cd: JUMPI 000002ce: DUP1 000002cf: PUSH4 0x36568abe 000002d4: EQ 000002d5: PUSH2 0x07a3 000002d8: JUMPI 000002d9: DUP1 000002da: PUSH4 0x38d52e0f 000002df: EQ 000002e0: PUSH2 0x07c2 000002e3: JUMPI 000002e4: DUP1 000002e5: PUSH4 0x395f7904 000002ea: EQ 000002eb: PUSH2 0x07d6 000002ee: JUMPI 000002ef: DUP1 000002f0: PUSH4 0x3f4ba83a 000002f5: EQ 000002f6: PUSH2 0x07f5 000002f9: JUMPI 000002fa: DUP1 000002fb: PUSH4 0x402d267d 00000300: EQ 00000301: PUSH2 0x0809 00000304: JUMPI 00000305: PUSH0 00000306: DUP1 00000307: REVERT 00000308: JUMPDEST 00000309: DUP1 0000030a: PUSH4 0x30b8b2c6 0000030f: EQ 00000310: PUSH2 0x0704 00000313: JUMPI 00000314: DUP1 00000315: PUSH4 0x313ce567 0000031a: EQ 0000031b: PUSH2 0x074a 0000031e: JUMPI 0000031f: DUP1 00000320: PUSH4 0x31982e7a 00000325: EQ 00000326: PUSH2 0x0770 00000329: JUMPI 0000032a: DUP1 0000032b: PUSH4 0x3644e515 00000330: EQ 00000331: PUSH2 0x078f 00000334: JUMPI 00000335: PUSH0 00000336: DUP1 00000337: REVERT 00000338: JUMPDEST 00000339: DUP1 0000033a: PUSH4 0x0f111e10 0000033f: GT 00000340: PUSH2 0x03b9 00000343: JUMPI 00000344: DUP1 00000345: PUSH4 0x23b872dd 0000034a: GT 0000034b: PUSH2 0x0389 0000034e: JUMPI 0000034f: DUP1 00000350: PUSH4 0x23b872dd 00000355: EQ 00000356: PUSH2 0x0653 00000359: JUMPI 0000035a: DUP1 0000035b: PUSH4 0x248a9ca3 00000360: EQ 00000361: PUSH2 0x0672 00000364: JUMPI 00000365: DUP1 00000366: PUSH4 0x28f256b4 0000036b: EQ 0000036c: PUSH2 0x0691 0000036f: JUMPI 00000370: DUP1 00000371: PUSH4 0x2e8ca5d3 00000376: EQ 00000377: PUSH2 0x06b2 0000037a: JUMPI 0000037b: DUP1 0000037c: PUSH4 0x2f2ff15d 00000381: EQ 00000382: PUSH2 0x06e5 00000385: JUMPI 00000386: PUSH0 00000387: DUP1 00000388: REVERT 00000389: JUMPDEST 0000038a: DUP1 0000038b: PUSH4 0x0f111e10 00000390: EQ 00000391: PUSH2 0x05b4 00000394: JUMPI 00000395: DUP1 00000396: PUSH4 0x15be2288 0000039b: EQ 0000039c: PUSH2 0x05e0 0000039f: JUMPI 000003a0: DUP1 000003a1: PUSH4 0x18160ddd 000003a6: EQ 000003a7: PUSH2 0x060c 000003aa: JUMPI 000003ab: DUP1 000003ac: PUSH4 0x23b4f441 000003b1: EQ 000003b2: PUSH2 0x063f 000003b5: JUMPI 000003b6: PUSH0 000003b7: DUP1 000003b8: REVERT 000003b9: JUMPDEST 000003ba: DUP1 000003bb: PUSH4 0x06fdde03 000003c0: GT 000003c1: PUSH2 0x03ff 000003c4: JUMPI 000003c5: DUP1 000003c6: PUSH4 0x06fdde03 000003cb: EQ 000003cc: PUSH2 0x050a 000003cf: JUMPI 000003d0: DUP1 000003d1: PUSH4 0x07a2d13a 000003d6: EQ 000003d7: PUSH2 0x052b 000003da: JUMPI 000003db: DUP1 000003dc: PUSH4 0x085d4883 000003e1: EQ 000003e2: PUSH2 0x054a 000003e5: JUMPI 000003e6: DUP1 000003e7: PUSH4 0x095ea7b3 000003ec: EQ 000003ed: PUSH2 0x0576 000003f0: JUMPI 000003f1: DUP1 000003f2: PUSH4 0x0a28a477 000003f7: EQ 000003f8: PUSH2 0x0595 000003fb: JUMPI 000003fc: PUSH0 000003fd: DUP1 000003fe: REVERT 000003ff: JUMPDEST 00000400: DUP1 00000401: PUSH4 0x01e1d114 00000406: EQ 00000407: PUSH2 0x046d 0000040a: JUMPI 0000040b: DUP1 0000040c: PUSH4 0x01ffc9a7 00000411: EQ 00000412: PUSH2 0x0494 00000415: JUMPI 00000416: DUP1 00000417: PUSH4 0x02584ba6 0000041c: EQ 0000041d: PUSH2 0x04c3 00000420: JUMPI 00000421: DUP1 00000422: PUSH4 0x05db2f41 00000427: EQ 00000428: PUSH2 0x04d7 0000042b: JUMPI 0000042c: PUSH0 0000042d: DUP1 0000042e: REVERT 0000042f: JUMPDEST 00000430: CALLDATASIZE 00000431: PUSH2 0x0469 00000434: JUMPI 00000435: PUSH1 0x40 00000437: MLOAD 00000438: CALLVALUE 00000439: DUP2 0000043a: MSTORE 0000043b: PUSH32 0x9f00d3f40a2a58e2c0f74f2fa05aac30f5bb0032e23e0cb66003ba208265c91c 0000045c: SWAP1 0000045d: PUSH1 0x20 0000045f: ADD 00000460: PUSH1 0x40 00000462: MLOAD 00000463: DUP1 00000464: SWAP2 00000465: SUB 00000466: SWAP1 00000467: LOG1 00000468: STOP 00000469: JUMPDEST 0000046a: PUSH0 0000046b: DUP1 0000046c: REVERT 0000046d: JUMPDEST 0000046e: CALLVALUE 0000046f: DUP1 00000470: ISZERO 00000471: PUSH2 0x0478 00000474: JUMPI 00000475: PUSH0 00000476: DUP1 00000477: REVERT 00000478: JUMPDEST 00000479: POP 0000047a: PUSH2 0x0481 0000047d: PUSH2 0x0de3 00000480: JUMP 00000481: JUMPDEST 00000482: PUSH1 0x40 00000484: MLOAD 00000485: SWAP1 00000486: DUP2 00000487: MSTORE 00000488: PUSH1 0x20 0000048a: ADD 0000048b: JUMPDEST 0000048c: PUSH1 0x40 0000048e: MLOAD 0000048f: DUP1 00000490: SWAP2 00000491: SUB 00000492: SWAP1 00000493: RETURN 00000494: JUMPDEST 00000495: CALLVALUE 00000496: DUP1 00000497: ISZERO 00000498: PUSH2 0x049f 0000049b: JUMPI 0000049c: PUSH0 0000049d: DUP1 0000049e: REVERT 0000049f: JUMPDEST 000004a0: POP 000004a1: PUSH2 0x04b3 000004a4: PUSH2 0x04ae 000004a7: CALLDATASIZE 000004a8: PUSH1 0x04 000004aa: PUSH2 0x3800 000004ad: JUMP 000004ae: JUMPDEST 000004af: PUSH2 0x0e7e 000004b2: JUMP 000004b3: JUMPDEST 000004b4: PUSH1 0x40 000004b6: MLOAD 000004b7: SWAP1 000004b8: ISZERO 000004b9: ISZERO 000004ba: DUP2 000004bb: MSTORE 000004bc: PUSH1 0x20 000004be: ADD 000004bf: PUSH2 0x048b 000004c2: JUMP 000004c3: JUMPDEST 000004c4: CALLVALUE 000004c5: DUP1 000004c6: ISZERO 000004c7: PUSH2 0x04ce 000004ca: JUMPI 000004cb: PUSH0 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: POP 000004d0: PUSH2 0x0481 000004d3: PUSH2 0x0eb4 000004d6: JUMP 000004d7: JUMPDEST 000004d8: CALLVALUE 000004d9: DUP1 000004da: ISZERO 000004db: PUSH2 0x04e2 000004de: JUMPI 000004df: PUSH0 000004e0: DUP1 000004e1: REVERT 000004e2: JUMPDEST 000004e3: POP 000004e4: PUSH2 0x0481 000004e7: PUSH32 0x6c0757dc3e6b28b2580c03fd9e96c274acf4f99d91fbec9b418fa1d70604ff1c 00000508: DUP2 00000509: JUMP 0000050a: JUMPDEST 0000050b: CALLVALUE 0000050c: DUP1 0000050d: ISZERO 0000050e: PUSH2 0x0515 00000511: JUMPI 00000512: PUSH0 00000513: DUP1 00000514: REVERT 00000515: JUMPDEST 00000516: POP 00000517: PUSH2 0x051e 0000051a: PUSH2 0x0ec6 0000051d: JUMP 0000051e: JUMPDEST 0000051f: PUSH1 0x40 00000521: MLOAD 00000522: PUSH2 0x048b 00000525: SWAP2 00000526: SWAP1 00000527: PUSH2 0x3866 0000052a: JUMP 0000052b: JUMPDEST 0000052c: CALLVALUE 0000052d: DUP1 0000052e: ISZERO 0000052f: PUSH2 0x0536 00000532: JUMPI 00000533: PUSH0 00000534: DUP1 00000535: REVERT 00000536: JUMPDEST 00000537: POP 00000538: PUSH2 0x0481 0000053b: PUSH2 0x0545 0000053e: CALLDATASIZE 0000053f: PUSH1 0x04 00000541: PUSH2 0x3878 00000544: JUMP 00000545: JUMPDEST 00000546: PUSH2 0x0f6b 00000549: JUMP 0000054a: JUMPDEST 0000054b: CALLVALUE 0000054c: DUP1 0000054d: ISZERO 0000054e: PUSH2 0x0555 00000551: JUMPI 00000552: PUSH0 00000553: DUP1 00000554: REVERT 00000555: JUMPDEST 00000556: POP 00000557: PUSH2 0x055e 0000055a: PUSH2 0x0f85 0000055d: JUMP 0000055e: JUMPDEST 0000055f: PUSH1 0x40 00000561: MLOAD 00000562: PUSH1 0x01 00000564: PUSH1 0x01 00000566: PUSH1 0xa0 00000568: SHL 00000569: SUB 0000056a: SWAP1 0000056b: SWAP2 0000056c: AND 0000056d: DUP2 0000056e: MSTORE 0000056f: PUSH1 0x20 00000571: ADD 00000572: PUSH2 0x048b 00000575: JUMP 00000576: JUMPDEST 00000577: CALLVALUE 00000578: DUP1 00000579: ISZERO 0000057a: PUSH2 0x0581 0000057d: JUMPI 0000057e: PUSH0 0000057f: DUP1 00000580: REVERT 00000581: JUMPDEST 00000582: POP 00000583: PUSH2 0x04b3 00000586: PUSH2 0x0590 00000589: CALLDATASIZE 0000058a: PUSH1 0x04 0000058c: PUSH2 0x38a3 0000058f: JUMP 00000590: JUMPDEST 00000591: PUSH2 0x0fa0 00000594: JUMP 00000595: JUMPDEST 00000596: CALLVALUE 00000597: DUP1 00000598: ISZERO 00000599: PUSH2 0x05a0 0000059c: JUMPI 0000059d: PUSH0 0000059e: DUP1 0000059f: REVERT 000005a0: JUMPDEST 000005a1: POP 000005a2: PUSH2 0x0481 000005a5: PUSH2 0x05af 000005a8: CALLDATASIZE 000005a9: PUSH1 0x04 000005ab: PUSH2 0x3878 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH2 0x0fb7 000005b3: JUMP 000005b4: JUMPDEST 000005b5: CALLVALUE 000005b6: DUP1 000005b7: ISZERO 000005b8: PUSH2 0x05bf 000005bb: JUMPI 000005bc: PUSH0 000005bd: DUP1 000005be: REVERT 000005bf: JUMPDEST 000005c0: POP 000005c1: PUSH2 0x05d3 000005c4: PUSH2 0x05ce 000005c7: CALLDATASIZE 000005c8: PUSH1 0x04 000005ca: PUSH2 0x38cd 000005cd: JUMP 000005ce: JUMPDEST 000005cf: PUSH2 0x0fe8 000005d2: JUMP 000005d3: JUMPDEST 000005d4: PUSH1 0x40 000005d6: MLOAD 000005d7: PUSH2 0x048b 000005da: SWAP2 000005db: SWAP1 000005dc: PUSH2 0x3928 000005df: JUMP 000005e0: JUMPDEST 000005e1: CALLVALUE 000005e2: DUP1 000005e3: ISZERO 000005e4: PUSH2 0x05eb 000005e7: JUMPI 000005e8: PUSH0 000005e9: DUP1 000005ea: REVERT 000005eb: JUMPDEST 000005ec: POP 000005ed: PUSH2 0x05ff 000005f0: PUSH2 0x05fa 000005f3: CALLDATASIZE 000005f4: PUSH1 0x04 000005f6: PUSH2 0x3aba 000005f9: JUMP 000005fa: JUMPDEST 000005fb: PUSH2 0x1172 000005fe: JUMP 000005ff: JUMPDEST 00000600: PUSH1 0x40 00000602: MLOAD 00000603: PUSH2 0x048b 00000606: SWAP2 00000607: SWAP1 00000608: PUSH2 0x3b9e 0000060b: JUMP 0000060c: JUMPDEST 0000060d: CALLVALUE 0000060e: DUP1 0000060f: ISZERO 00000610: PUSH2 0x0617 00000613: JUMPI 00000614: PUSH0 00000615: DUP1 00000616: REVERT 00000617: JUMPDEST 00000618: POP 00000619: PUSH32 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02 0000063a: SLOAD 0000063b: PUSH2 0x0481 0000063e: JUMP 0000063f: JUMPDEST 00000640: CALLVALUE 00000641: DUP1 00000642: ISZERO 00000643: PUSH2 0x064a 00000646: JUMPI 00000647: PUSH0 00000648: DUP1 00000649: REVERT 0000064a: JUMPDEST 0000064b: POP 0000064c: PUSH2 0x04b3 0000064f: PUSH2 0x1229 00000652: JUMP 00000653: JUMPDEST 00000654: CALLVALUE 00000655: DUP1 00000656: ISZERO 00000657: PUSH2 0x065e 0000065a: JUMPI 0000065b: PUSH0 0000065c: DUP1 0000065d: REVERT 0000065e: JUMPDEST 0000065f: POP 00000660: PUSH2 0x04b3 00000663: PUSH2 0x066d 00000666: CALLDATASIZE 00000667: PUSH1 0x04 00000669: PUSH2 0x3c00 0000066c: JUMP 0000066d: JUMPDEST 0000066e: PUSH2 0x1245 00000671: JUMP 00000672: JUMPDEST 00000673: CALLVALUE 00000674: DUP1 00000675: ISZERO 00000676: PUSH2 0x067d 00000679: JUMPI 0000067a: PUSH0 0000067b: DUP1 0000067c: REVERT 0000067d: JUMPDEST 0000067e: POP 0000067f: PUSH2 0x0481 00000682: PUSH2 0x068c 00000685: CALLDATASIZE 00000686: PUSH1 0x04 00000688: PUSH2 0x3878 0000068b: JUMP 0000068c: JUMPDEST 0000068d: PUSH2 0x126a 00000690: JUMP 00000691: JUMPDEST 00000692: CALLVALUE 00000693: DUP1 00000694: ISZERO 00000695: PUSH2 0x069c 00000698: JUMPI 00000699: PUSH0 0000069a: DUP1 0000069b: REVERT 0000069c: JUMPDEST 0000069d: POP 0000069e: PUSH2 0x06b0 000006a1: PUSH2 0x06ab 000006a4: CALLDATASIZE 000006a5: PUSH1 0x04 000006a7: PUSH2 0x3c4b 000006aa: JUMP 000006ab: JUMPDEST 000006ac: PUSH2 0x128a 000006af: JUMP 000006b0: JUMPDEST 000006b1: STOP 000006b2: JUMPDEST 000006b3: CALLVALUE 000006b4: DUP1 000006b5: ISZERO 000006b6: PUSH2 0x06bd 000006b9: JUMPI 000006ba: PUSH0 000006bb: DUP1 000006bc: REVERT 000006bd: JUMPDEST 000006be: POP 000006bf: PUSH2 0x0481 000006c2: PUSH32 0xe5d2521c7601dc3ebb9e087fbf87bdb7a14e74956103c86bf28d0f9d0e87c832 000006e3: DUP2 000006e4: JUMP 000006e5: JUMPDEST 000006e6: CALLVALUE 000006e7: DUP1 000006e8: ISZERO 000006e9: PUSH2 0x06f0 000006ec: JUMPI 000006ed: PUSH0 000006ee: DUP1 000006ef: REVERT 000006f0: JUMPDEST 000006f1: POP 000006f2: PUSH2 0x06b0 000006f5: PUSH2 0x06ff 000006f8: CALLDATASIZE 000006f9: PUSH1 0x04 000006fb: PUSH2 0x3c82 000006fe: JUMP 000006ff: JUMPDEST 00000700: PUSH2 0x1310 00000703: JUMP 00000704: JUMPDEST 00000705: CALLVALUE 00000706: DUP1 00000707: ISZERO 00000708: PUSH2 0x070f 0000070b: JUMPI 0000070c: PUSH0 0000070d: DUP1 0000070e: REVERT 0000070f: JUMPDEST 00000710: POP 00000711: PUSH2 0x0723 00000714: PUSH2 0x071e 00000717: CALLDATASIZE 00000718: PUSH1 0x04 0000071a: PUSH2 0x3ca5 0000071d: JUMP 0000071e: JUMPDEST 0000071f: PUSH2 0x1332 00000722: JUMP 00000723: JUMPDEST 00000724: PUSH1 0x40 00000726: DUP1 00000727: MLOAD 00000728: DUP3 00000729: MLOAD 0000072a: DUP2 0000072b: MSTORE 0000072c: PUSH1 0x20 0000072e: DUP1 0000072f: DUP5 00000730: ADD 00000731: MLOAD 00000732: ISZERO 00000733: ISZERO 00000734: SWAP1 00000735: DUP3 00000736: ADD 00000737: MSTORE 00000738: SWAP2 00000739: DUP2 0000073a: ADD 0000073b: MLOAD 0000073c: PUSH1 0xff 0000073e: AND 0000073f: SWAP1 00000740: DUP3 00000741: ADD 00000742: MSTORE 00000743: PUSH1 0x60 00000745: ADD 00000746: PUSH2 0x048b 00000749: JUMP 0000074a: JUMPDEST 0000074b: CALLVALUE 0000074c: DUP1 0000074d: ISZERO 0000074e: PUSH2 0x0755 00000751: JUMPI 00000752: PUSH0 00000753: DUP1 00000754: REVERT 00000755: JUMPDEST 00000756: POP 00000757: PUSH2 0x075e 0000075a: PUSH2 0x13a0 0000075d: JUMP 0000075e: JUMPDEST 0000075f: PUSH1 0x40 00000761: MLOAD 00000762: PUSH1 0xff 00000764: SWAP1 00000765: SWAP2 00000766: AND 00000767: DUP2 00000768: MSTORE 00000769: PUSH1 0x20 0000076b: ADD 0000076c: PUSH2 0x048b 0000076f: JUMP 00000770: JUMPDEST 00000771: CALLVALUE 00000772: DUP1 00000773: ISZERO 00000774: PUSH2 0x077b 00000777: JUMPI 00000778: PUSH0 00000779: DUP1 0000077a: REVERT 0000077b: JUMPDEST 0000077c: POP 0000077d: PUSH2 0x06b0 00000780: PUSH2 0x078a 00000783: CALLDATASIZE 00000784: PUSH1 0x04 00000786: PUSH2 0x3cc0 00000789: JUMP 0000078a: JUMPDEST 0000078b: PUSH2 0x13bc 0000078e: JUMP 0000078f: JUMPDEST 00000790: CALLVALUE 00000791: DUP1 00000792: ISZERO 00000793: PUSH2 0x079a 00000796: JUMPI 00000797: PUSH0 00000798: DUP1 00000799: REVERT 0000079a: JUMPDEST 0000079b: POP 0000079c: PUSH2 0x0481 0000079f: PUSH2 0x13f1 000007a2: JUMP 000007a3: JUMPDEST 000007a4: CALLVALUE 000007a5: DUP1 000007a6: ISZERO 000007a7: PUSH2 0x07ae 000007aa: JUMPI 000007ab: PUSH0 000007ac: DUP1 000007ad: REVERT 000007ae: JUMPDEST 000007af: POP 000007b0: PUSH2 0x06b0 000007b3: PUSH2 0x07bd 000007b6: CALLDATASIZE 000007b7: PUSH1 0x04 000007b9: PUSH2 0x3c82 000007bc: JUMP 000007bd: JUMPDEST 000007be: PUSH2 0x13fa 000007c1: JUMP 000007c2: JUMPDEST 000007c3: CALLVALUE 000007c4: DUP1 000007c5: ISZERO 000007c6: PUSH2 0x07cd 000007c9: JUMPI 000007ca: PUSH0 000007cb: DUP1 000007cc: REVERT 000007cd: JUMPDEST 000007ce: POP 000007cf: PUSH2 0x055e 000007d2: PUSH2 0x142d 000007d5: JUMP 000007d6: JUMPDEST 000007d7: CALLVALUE 000007d8: DUP1 000007d9: ISZERO 000007da: PUSH2 0x07e1 000007dd: JUMPI 000007de: PUSH0 000007df: DUP1 000007e0: REVERT 000007e1: JUMPDEST 000007e2: POP 000007e3: PUSH2 0x06b0 000007e6: PUSH2 0x07f0 000007e9: CALLDATASIZE 000007ea: PUSH1 0x04 000007ec: PUSH2 0x3d37 000007ef: JUMP 000007f0: JUMPDEST 000007f1: PUSH2 0x146e 000007f4: JUMP 000007f5: JUMPDEST 000007f6: CALLVALUE 000007f7: DUP1 000007f8: ISZERO 000007f9: PUSH2 0x0800 000007fc: JUMPI 000007fd: PUSH0 000007fe: DUP1 000007ff: REVERT 00000800: JUMPDEST 00000801: POP 00000802: PUSH2 0x06b0 00000805: PUSH2 0x14a5 00000808: JUMP 00000809: JUMPDEST 0000080a: CALLVALUE 0000080b: DUP1 0000080c: ISZERO 0000080d: PUSH2 0x0814 00000810: JUMPI 00000811: PUSH0 00000812: DUP1 00000813: REVERT 00000814: JUMPDEST 00000815: POP 00000816: PUSH2 0x0481 00000819: PUSH2 0x0823 0000081c: CALLDATASIZE 0000081d: PUSH1 0x04 0000081f: PUSH2 0x3ca5 00000822: JUMP 00000823: JUMPDEST 00000824: PUSH2 0x1576 00000827: JUMP 00000828: JUMPDEST 00000829: CALLVALUE 0000082a: DUP1 0000082b: ISZERO 0000082c: PUSH2 0x0833 0000082f: JUMPI 00000830: PUSH0 00000831: DUP1 00000832: REVERT 00000833: JUMPDEST 00000834: POP 00000835: PUSH2 0x0481 00000838: PUSH2 0x0842 0000083b: CALLDATASIZE 0000083c: PUSH1 0x04 0000083e: PUSH2 0x3d50 00000841: JUMP 00000842: JUMPDEST 00000843: PUSH2 0x1593 00000846: JUMP 00000847: JUMPDEST 00000848: CALLVALUE 00000849: DUP1 0000084a: ISZERO 0000084b: PUSH2 0x0852 0000084e: JUMPI 0000084f: PUSH0 00000850: DUP1 00000851: REVERT 00000852: JUMPDEST 00000853: POP 00000854: PUSH2 0x0481 00000857: PUSH2 0x0861 0000085a: CALLDATASIZE 0000085b: PUSH1 0x04 0000085d: PUSH2 0x3878 00000860: JUMP 00000861: JUMPDEST 00000862: PUSH2 0x1600 00000865: JUMP 00000866: JUMPDEST 00000867: CALLVALUE 00000868: DUP1 00000869: ISZERO 0000086a: PUSH2 0x0871 0000086d: JUMPI 0000086e: PUSH0 0000086f: DUP1 00000870: REVERT 00000871: JUMPDEST 00000872: POP 00000873: PUSH2 0x087a 00000876: PUSH2 0x1622 00000879: JUMP 0000087a: JUMPDEST 0000087b: PUSH1 0x40 0000087d: MLOAD 0000087e: PUSH1 0x01 00000880: PUSH1 0x01 00000882: PUSH1 0x40 00000884: SHL 00000885: SUB 00000886: SWAP1 00000887: SWAP2 00000888: AND 00000889: DUP2 0000088a: MSTORE 0000088b: PUSH1 0x20 0000088d: ADD 0000088e: PUSH2 0x048b 00000891: JUMP 00000892: JUMPDEST 00000893: CALLVALUE 00000894: DUP1 00000895: ISZERO 00000896: PUSH2 0x089d 00000899: JUMPI 0000089a: PUSH0 0000089b: DUP1 0000089c: REVERT 0000089d: JUMPDEST 0000089e: POP 0000089f: PUSH2 0x06b0 000008a2: PUSH2 0x08ac 000008a5: CALLDATASIZE 000008a6: PUSH1 0x04 000008a8: PUSH2 0x3d84 000008ab: JUMP 000008ac: JUMPDEST 000008ad: PUSH2 0x163a 000008b0: JUMP 000008b1: JUMPDEST 000008b2: CALLVALUE 000008b3: DUP1 000008b4: ISZERO 000008b5: PUSH2 0x08bc 000008b8: JUMPI 000008b9: PUSH0 000008ba: DUP1 000008bb: REVERT 000008bc: JUMPDEST 000008bd: POP 000008be: PUSH2 0x04b3 000008c1: PUSH2 0x16b9 000008c4: JUMP 000008c5: JUMPDEST 000008c6: CALLVALUE 000008c7: DUP1 000008c8: ISZERO 000008c9: PUSH2 0x08d0 000008cc: JUMPI 000008cd: PUSH0 000008ce: DUP1 000008cf: REVERT 000008d0: JUMPDEST 000008d1: POP 000008d2: PUSH2 0x08d9 000008d5: PUSH2 0x16d5 000008d8: JUMP 000008d9: JUMPDEST 000008da: PUSH1 0x40 000008dc: MLOAD 000008dd: PUSH2 0x048b 000008e0: SWAP2 000008e1: SWAP1 000008e2: PUSH2 0x3d9f 000008e5: JUMP 000008e6: JUMPDEST 000008e7: CALLVALUE 000008e8: DUP1 000008e9: ISZERO 000008ea: PUSH2 0x08f1 000008ed: JUMPI 000008ee: PUSH0 000008ef: DUP1 000008f0: REVERT 000008f1: JUMPDEST 000008f2: POP 000008f3: PUSH2 0x0481 000008f6: PUSH2 0x173e 000008f9: JUMP 000008fa: JUMPDEST 000008fb: CALLVALUE 000008fc: DUP1 000008fd: ISZERO 000008fe: PUSH2 0x0905 00000901: JUMPI 00000902: PUSH0 00000903: DUP1 00000904: REVERT 00000905: JUMPDEST 00000906: POP 00000907: PUSH2 0x0481 0000090a: PUSH2 0x0914 0000090d: CALLDATASIZE 0000090e: PUSH1 0x04 00000910: PUSH2 0x3c82 00000913: JUMP 00000914: JUMPDEST 00000915: PUSH2 0x1786 00000918: JUMP 00000919: JUMPDEST 0000091a: CALLVALUE 0000091b: DUP1 0000091c: ISZERO 0000091d: PUSH2 0x0924 00000920: JUMPI 00000921: PUSH0 00000922: DUP1 00000923: REVERT 00000924: JUMPDEST 00000925: POP 00000926: PUSH2 0x06b0 00000929: PUSH2 0x0933 0000092c: CALLDATASIZE 0000092d: PUSH1 0x04 0000092f: PUSH2 0x3ddf 00000932: JUMP 00000933: JUMPDEST 00000934: PUSH2 0x17f7 00000937: JUMP 00000938: JUMPDEST 00000939: CALLVALUE 0000093a: DUP1 0000093b: ISZERO 0000093c: PUSH2 0x0943 0000093f: JUMPI 00000940: PUSH0 00000941: DUP1 00000942: REVERT 00000943: JUMPDEST 00000944: POP 00000945: PUSH2 0x0481 00000948: PUSH2 0x0952 0000094b: CALLDATASIZE 0000094c: PUSH1 0x04 0000094e: PUSH2 0x3ca5 00000951: JUMP 00000952: JUMPDEST 00000953: PUSH2 0x18e6 00000956: JUMP 00000957: JUMPDEST 00000958: CALLVALUE 00000959: DUP1 0000095a: ISZERO 0000095b: PUSH2 0x0962 0000095e: JUMPI 0000095f: PUSH0 00000960: DUP1 00000961: REVERT 00000962: JUMPDEST 00000963: POP 00000964: PUSH2 0x06b0 00000967: PUSH2 0x0971 0000096a: CALLDATASIZE 0000096b: PUSH1 0x04 0000096d: PUSH2 0x3ef2 00000970: JUMP 00000971: JUMPDEST 00000972: PUSH2 0x1916 00000975: JUMP 00000976: JUMPDEST 00000977: CALLVALUE 00000978: DUP1 00000979: ISZERO 0000097a: PUSH2 0x0981 0000097d: JUMPI 0000097e: PUSH0 0000097f: DUP1 00000980: REVERT 00000981: JUMPDEST 00000982: POP 00000983: PUSH2 0x04b3 00000986: PUSH2 0x1a3a 00000989: JUMP 0000098a: JUMPDEST 0000098b: CALLVALUE 0000098c: DUP1 0000098d: ISZERO 0000098e: PUSH2 0x0995 00000991: JUMPI 00000992: PUSH0 00000993: DUP1 00000994: REVERT 00000995: JUMPDEST 00000996: POP 00000997: PUSH2 0x06b0 0000099a: PUSH2 0x09a4 0000099d: CALLDATASIZE 0000099e: PUSH1 0x04 000009a0: PUSH2 0x3878 000009a3: JUMP 000009a4: JUMPDEST 000009a5: PUSH2 0x1a56 000009a8: JUMP 000009a9: JUMPDEST 000009aa: CALLVALUE 000009ab: DUP1 000009ac: ISZERO 000009ad: PUSH2 0x09b4 000009b0: JUMPI 000009b1: PUSH0 000009b2: DUP1 000009b3: REVERT 000009b4: JUMPDEST 000009b5: POP 000009b6: PUSH2 0x0481 000009b9: PUSH2 0x09c3 000009bc: CALLDATASIZE 000009bd: PUSH1 0x04 000009bf: PUSH2 0x3ca5 000009c2: JUMP 000009c3: JUMPDEST 000009c4: PUSH2 0x1a76 000009c7: JUMP 000009c8: JUMPDEST 000009c9: CALLVALUE 000009ca: DUP1 000009cb: ISZERO 000009cc: PUSH2 0x09d3 000009cf: JUMPI 000009d0: PUSH0 000009d1: DUP1 000009d2: REVERT 000009d3: JUMPDEST 000009d4: POP 000009d5: PUSH2 0x0481 000009d8: PUSH32 0xe61decff6e4a5c6b5a3d3cbd28f882e595173563b49353ce5f31dba2de7f05ee 000009f9: DUP2 000009fa: JUMP 000009fb: JUMPDEST 000009fc: CALLVALUE 000009fd: DUP1 000009fe: ISZERO 000009ff: PUSH2 0x0a06 00000a02: JUMPI 00000a03: PUSH0 00000a04: DUP1 00000a05: REVERT 00000a06: JUMPDEST 00000a07: POP 00000a08: PUSH2 0x06b0 00000a0b: PUSH2 0x1a80 00000a0e: JUMP 00000a0f: JUMPDEST 00000a10: CALLVALUE 00000a11: DUP1 00000a12: ISZERO 00000a13: PUSH2 0x0a1a 00000a16: JUMPI 00000a17: PUSH0 00000a18: DUP1 00000a19: REVERT 00000a1a: JUMPDEST 00000a1b: POP 00000a1c: PUSH2 0x0a23 00000a1f: PUSH2 0x1b22 00000a22: JUMP 00000a23: JUMPDEST 00000a24: PUSH1 0x40 00000a26: MLOAD 00000a27: PUSH2 0x048b 00000a2a: SWAP8 00000a2b: SWAP7 00000a2c: SWAP6 00000a2d: SWAP5 00000a2e: SWAP4 00000a2f: SWAP3 00000a30: SWAP2 00000a31: SWAP1 00000a32: PUSH2 0x3fb5 00000a35: JUMP 00000a36: JUMPDEST 00000a37: CALLVALUE 00000a38: DUP1 00000a39: ISZERO 00000a3a: PUSH2 0x0a41 00000a3d: JUMPI 00000a3e: PUSH0 00000a3f: DUP1 00000a40: REVERT 00000a41: JUMPDEST 00000a42: POP 00000a43: PUSH2 0x04b3 00000a46: PUSH2 0x0a50 00000a49: CALLDATASIZE 00000a4a: PUSH1 0x04 00000a4c: PUSH2 0x3c82 00000a4f: JUMP 00000a50: JUMPDEST 00000a51: PUSH2 0x1bd0 00000a54: JUMP 00000a55: JUMPDEST 00000a56: CALLVALUE 00000a57: DUP1 00000a58: ISZERO 00000a59: PUSH2 0x0a60 00000a5c: JUMPI 00000a5d: PUSH0 00000a5e: DUP1 00000a5f: REVERT 00000a60: JUMPDEST 00000a61: POP 00000a62: PUSH2 0x0481 00000a65: PUSH2 0x0a6f 00000a68: CALLDATASIZE 00000a69: PUSH1 0x04 00000a6b: PUSH2 0x3c82 00000a6e: JUMP 00000a6f: JUMPDEST 00000a70: PUSH2 0x1c06 00000a73: JUMP 00000a74: JUMPDEST 00000a75: CALLVALUE 00000a76: DUP1 00000a77: ISZERO 00000a78: PUSH2 0x0a7f 00000a7b: JUMPI 00000a7c: PUSH0 00000a7d: DUP1 00000a7e: REVERT 00000a7f: JUMPDEST 00000a80: POP 00000a81: PUSH2 0x051e 00000a84: PUSH2 0x1c62 00000a87: JUMP 00000a88: JUMPDEST 00000a89: CALLVALUE 00000a8a: DUP1 00000a8b: ISZERO 00000a8c: PUSH2 0x0a93 00000a8f: JUMPI 00000a90: PUSH0 00000a91: DUP1 00000a92: REVERT 00000a93: JUMPDEST 00000a94: POP 00000a95: PUSH2 0x0481 00000a98: PUSH0 00000a99: DUP2 00000a9a: JUMP 00000a9b: JUMPDEST 00000a9c: CALLVALUE 00000a9d: DUP1 00000a9e: ISZERO 00000a9f: PUSH2 0x0aa6 00000aa2: JUMPI 00000aa3: PUSH0 00000aa4: DUP1 00000aa5: REVERT 00000aa6: JUMPDEST 00000aa7: POP 00000aa8: PUSH2 0x0481 00000aab: PUSH0 00000aac: DUP1 00000aad: MLOAD 00000aae: PUSH1 0x20 00000ab0: PUSH2 0x4ad2 00000ab3: DUP4 00000ab4: CODECOPY 00000ab5: DUP2 00000ab6: MLOAD 00000ab7: SWAP2 00000ab8: MSTORE 00000ab9: DUP2 00000aba: JUMP 00000abb: JUMPDEST 00000abc: CALLVALUE 00000abd: DUP1 00000abe: ISZERO 00000abf: PUSH2 0x0ac6 00000ac2: JUMPI 00000ac3: PUSH0 00000ac4: DUP1 00000ac5: REVERT 00000ac6: JUMPDEST 00000ac7: POP 00000ac8: PUSH2 0x04b3 00000acb: PUSH2 0x0ad5 00000ace: CALLDATASIZE 00000acf: PUSH1 0x04 00000ad1: PUSH2 0x38a3 00000ad4: JUMP 00000ad5: JUMPDEST 00000ad6: PUSH2 0x1ca0 00000ad9: JUMP 00000ada: JUMPDEST 00000adb: CALLVALUE 00000adc: DUP1 00000add: ISZERO 00000ade: PUSH2 0x0ae5 00000ae1: JUMPI 00000ae2: PUSH0 00000ae3: DUP1 00000ae4: REVERT 00000ae5: JUMPDEST 00000ae6: POP 00000ae7: PUSH2 0x0481 00000aea: PUSH2 0x0af4 00000aed: CALLDATASIZE 00000aee: PUSH1 0x04 00000af0: PUSH2 0x3878 00000af3: JUMP 00000af4: JUMPDEST 00000af5: PUSH2 0x1cad 00000af8: JUMP 00000af9: JUMPDEST 00000afa: CALLVALUE 00000afb: DUP1 00000afc: ISZERO 00000afd: PUSH2 0x0b04 00000b00: JUMPI 00000b01: PUSH0 00000b02: DUP1 00000b03: REVERT 00000b04: JUMPDEST 00000b05: POP 00000b06: PUSH2 0x0481 00000b09: PUSH2 0x0b13 00000b0c: CALLDATASIZE 00000b0d: PUSH1 0x04 00000b0f: PUSH2 0x3878 00000b12: JUMP 00000b13: JUMPDEST 00000b14: PUSH2 0x1ce8 00000b17: JUMP 00000b18: JUMPDEST 00000b19: CALLVALUE 00000b1a: DUP1 00000b1b: ISZERO 00000b1c: PUSH2 0x0b23 00000b1f: JUMPI 00000b20: PUSH0 00000b21: DUP1 00000b22: REVERT 00000b23: JUMPDEST 00000b24: POP 00000b25: PUSH2 0x0481 00000b28: PUSH2 0x0b32 00000b2b: CALLDATASIZE 00000b2c: PUSH1 0x04 00000b2e: PUSH2 0x404c 00000b31: JUMP 00000b32: JUMPDEST 00000b33: PUSH2 0x1cfc 00000b36: JUMP 00000b37: JUMPDEST 00000b38: CALLVALUE 00000b39: DUP1 00000b3a: ISZERO 00000b3b: PUSH2 0x0b42 00000b3e: JUMPI 00000b3f: PUSH0 00000b40: DUP1 00000b41: REVERT 00000b42: JUMPDEST 00000b43: POP 00000b44: PUSH2 0x0481 00000b47: PUSH2 0x0b51 00000b4a: CALLDATASIZE 00000b4b: PUSH1 0x04 00000b4d: PUSH2 0x38a3 00000b50: JUMP 00000b51: JUMPDEST 00000b52: PUSH2 0x1d8d 00000b55: JUMP 00000b56: JUMPDEST 00000b57: CALLVALUE 00000b58: DUP1 00000b59: ISZERO 00000b5a: PUSH2 0x0b61 00000b5d: JUMPI 00000b5e: PUSH0 00000b5f: DUP1 00000b60: REVERT 00000b61: JUMPDEST 00000b62: POP 00000b63: PUSH2 0x0481 00000b66: PUSH2 0x0b70 00000b69: CALLDATASIZE 00000b6a: PUSH1 0x04 00000b6c: PUSH2 0x404c 00000b6f: JUMP 00000b70: JUMPDEST 00000b71: PUSH2 0x1d99 00000b74: JUMP 00000b75: JUMPDEST 00000b76: CALLVALUE 00000b77: DUP1 00000b78: ISZERO 00000b79: PUSH2 0x0b80 00000b7c: JUMPI 00000b7d: PUSH0 00000b7e: DUP1 00000b7f: REVERT 00000b80: JUMPDEST 00000b81: POP 00000b82: PUSH2 0x0481 00000b85: PUSH2 0x1e13 00000b88: JUMP 00000b89: JUMPDEST 00000b8a: CALLVALUE 00000b8b: DUP1 00000b8c: ISZERO 00000b8d: PUSH2 0x0b94 00000b90: JUMPI 00000b91: PUSH0 00000b92: DUP1 00000b93: REVERT 00000b94: JUMPDEST 00000b95: POP 00000b96: PUSH2 0x0481 00000b99: PUSH32 0x1b5c71208e8e044e1cadc5505569e80ff1ea068fcb794cd4bb41d7c0da7d21cb 00000bba: DUP2 00000bbb: JUMP 00000bbc: JUMPDEST 00000bbd: CALLVALUE 00000bbe: DUP1 00000bbf: ISZERO 00000bc0: PUSH2 0x0bc7 00000bc3: JUMPI 00000bc4: PUSH0 00000bc5: DUP1 00000bc6: REVERT 00000bc7: JUMPDEST 00000bc8: POP 00000bc9: PUSH2 0x0481 00000bcc: PUSH32 0xa7df8ec7b8a003b34a76de97612c0ec79afe073d251e44040efb4f1ad64af94e 00000bed: DUP2 00000bee: JUMP 00000bef: JUMPDEST 00000bf0: CALLVALUE 00000bf1: DUP1 00000bf2: ISZERO 00000bf3: PUSH2 0x0bfa 00000bf6: JUMPI 00000bf7: PUSH0 00000bf8: DUP1 00000bf9: REVERT 00000bfa: JUMPDEST 00000bfb: POP 00000bfc: PUSH2 0x0481 00000bff: PUSH2 0x0c09 00000c02: CALLDATASIZE 00000c03: PUSH1 0x04 00000c05: PUSH2 0x3878 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: PUSH2 0x1e45 00000c0d: JUMP 00000c0e: JUMPDEST 00000c0f: CALLVALUE 00000c10: DUP1 00000c11: ISZERO 00000c12: PUSH2 0x0c19 00000c15: JUMPI 00000c16: PUSH0 00000c17: DUP1 00000c18: REVERT 00000c19: JUMPDEST 00000c1a: POP 00000c1b: PUSH2 0x06b0 00000c1e: PUSH2 0x0c28 00000c21: CALLDATASIZE 00000c22: PUSH1 0x04 00000c24: PUSH2 0x4080 00000c27: JUMP 00000c28: JUMPDEST 00000c29: PUSH2 0x1e58 00000c2c: JUMP 00000c2d: JUMPDEST 00000c2e: CALLVALUE 00000c2f: DUP1 00000c30: ISZERO 00000c31: PUSH2 0x0c38 00000c34: JUMPI 00000c35: PUSH0 00000c36: DUP1 00000c37: REVERT 00000c38: JUMPDEST 00000c39: POP 00000c3a: PUSH2 0x0481 00000c3d: PUSH2 0x0c47 00000c40: CALLDATASIZE 00000c41: PUSH1 0x04 00000c43: PUSH2 0x3ca5 00000c46: JUMP 00000c47: JUMPDEST 00000c48: PUSH2 0x1e79 00000c4b: JUMP 00000c4c: JUMPDEST 00000c4d: CALLVALUE 00000c4e: DUP1 00000c4f: ISZERO 00000c50: PUSH2 0x0c57 00000c53: JUMPI 00000c54: PUSH0 00000c55: DUP1 00000c56: REVERT 00000c57: JUMPDEST 00000c58: POP 00000c59: PUSH2 0x06b0 00000c5c: PUSH2 0x0c66 00000c5f: CALLDATASIZE 00000c60: PUSH1 0x04 00000c62: PUSH2 0x3ca5 00000c65: JUMP 00000c66: JUMPDEST 00000c67: PUSH2 0x1f40 00000c6a: JUMP 00000c6b: JUMPDEST 00000c6c: CALLVALUE 00000c6d: DUP1 00000c6e: ISZERO 00000c6f: PUSH2 0x0c76 00000c72: JUMPI 00000c73: PUSH0 00000c74: DUP1 00000c75: REVERT 00000c76: JUMPDEST 00000c77: POP 00000c78: PUSH2 0x06b0 00000c7b: PUSH2 0x0c85 00000c7e: CALLDATASIZE 00000c7f: PUSH1 0x04 00000c81: PUSH2 0x40b5 00000c84: JUMP 00000c85: JUMPDEST 00000c86: PUSH2 0x1fd6 00000c89: JUMP 00000c8a: JUMPDEST 00000c8b: CALLVALUE 00000c8c: DUP1 00000c8d: ISZERO 00000c8e: PUSH2 0x0c95 00000c91: JUMPI 00000c92: PUSH0 00000c93: DUP1 00000c94: REVERT 00000c95: JUMPDEST 00000c96: POP 00000c97: PUSH2 0x06b0 00000c9a: PUSH2 0x0ca4 00000c9d: CALLDATASIZE 00000c9e: PUSH1 0x04 00000ca0: PUSH2 0x3c82 00000ca3: JUMP 00000ca4: JUMPDEST 00000ca5: PUSH2 0x212b 00000ca8: JUMP 00000ca9: JUMPDEST 00000caa: CALLVALUE 00000cab: DUP1 00000cac: ISZERO 00000cad: PUSH2 0x0cb4 00000cb0: JUMPI 00000cb1: PUSH0 00000cb2: DUP1 00000cb3: REVERT 00000cb4: JUMPDEST 00000cb5: POP 00000cb6: PUSH2 0x0481 00000cb9: PUSH2 0x0cc3 00000cbc: CALLDATASIZE 00000cbd: PUSH1 0x04 00000cbf: PUSH2 0x3ca5 00000cc2: JUMP 00000cc3: JUMPDEST 00000cc4: PUSH2 0x2147 00000cc7: JUMP 00000cc8: JUMPDEST 00000cc9: CALLVALUE 00000cca: DUP1 00000ccb: ISZERO 00000ccc: PUSH2 0x0cd3 00000ccf: JUMPI 00000cd0: PUSH0 00000cd1: DUP1 00000cd2: REVERT 00000cd3: JUMPDEST 00000cd4: POP 00000cd5: PUSH2 0x0481 00000cd8: PUSH2 0x0ce2 00000cdb: CALLDATASIZE 00000cdc: PUSH1 0x04 00000cde: PUSH2 0x4121 00000ce1: JUMP 00000ce2: JUMPDEST 00000ce3: PUSH2 0x2208 00000ce6: JUMP 00000ce7: JUMPDEST 00000ce8: CALLVALUE 00000ce9: DUP1 00000cea: ISZERO 00000ceb: PUSH2 0x0cf2 00000cee: JUMPI 00000cef: PUSH0 00000cf0: DUP1 00000cf1: REVERT 00000cf2: JUMPDEST 00000cf3: POP 00000cf4: PUSH2 0x0481 00000cf7: PUSH32 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a 00000d18: DUP2 00000d19: JUMP 00000d1a: JUMPDEST 00000d1b: CALLVALUE 00000d1c: DUP1 00000d1d: ISZERO 00000d1e: PUSH2 0x0d25 00000d21: JUMPI 00000d22: PUSH0 00000d23: DUP1 00000d24: REVERT 00000d25: JUMPDEST 00000d26: POP 00000d27: PUSH2 0x06b0 00000d2a: PUSH2 0x2251 00000d2d: JUMP 00000d2e: JUMPDEST 00000d2f: CALLVALUE 00000d30: DUP1 00000d31: ISZERO 00000d32: PUSH2 0x0d39 00000d35: JUMPI 00000d36: PUSH0 00000d37: DUP1 00000d38: REVERT 00000d39: JUMPDEST 00000d3a: POP 00000d3b: PUSH2 0x06b0 00000d3e: PUSH2 0x0d48 00000d41: CALLDATASIZE 00000d42: PUSH1 0x04 00000d44: PUSH2 0x3ca5 00000d47: JUMP 00000d48: JUMPDEST 00000d49: PUSH2 0x2279 00000d4c: JUMP 00000d4d: JUMPDEST 00000d4e: CALLVALUE 00000d4f: DUP1 00000d50: ISZERO 00000d51: PUSH2 0x0d58 00000d54: JUMPI 00000d55: PUSH0 00000d56: DUP1 00000d57: REVERT 00000d58: JUMPDEST 00000d59: POP 00000d5a: PUSH2 0x0481 00000d5d: PUSH2 0x0d67 00000d60: CALLDATASIZE 00000d61: PUSH1 0x04 00000d63: PUSH2 0x3878 00000d66: JUMP 00000d67: JUMPDEST 00000d68: PUSH2 0x22e3 00000d6b: JUMP 00000d6c: JUMPDEST 00000d6d: CALLVALUE 00000d6e: DUP1 00000d6f: ISZERO 00000d70: PUSH2 0x0d77 00000d73: JUMPI 00000d74: PUSH0 00000d75: DUP1 00000d76: REVERT 00000d77: JUMPDEST 00000d78: POP 00000d79: PUSH2 0x055e 00000d7c: PUSH2 0x2316 00000d7f: JUMP 00000d80: JUMPDEST 00000d81: CALLVALUE 00000d82: DUP1 00000d83: ISZERO 00000d84: PUSH2 0x0d8b 00000d87: JUMPI 00000d88: PUSH0 00000d89: DUP1 00000d8a: REVERT 00000d8b: JUMPDEST 00000d8c: POP 00000d8d: PUSH2 0x051e 00000d90: PUSH1 0x40 00000d92: MLOAD 00000d93: DUP1 00000d94: PUSH1 0x40 00000d96: ADD 00000d97: PUSH1 0x40 00000d99: MSTORE 00000d9a: DUP1 00000d9b: PUSH1 0x05 00000d9d: DUP2 00000d9e: MSTORE 00000d9f: PUSH1 0x20 00000da1: ADD 00000da2: PUSH5 0x0302e332e3 00000da8: PUSH1 0xdc 00000daa: SHL 00000dab: DUP2 00000dac: MSTORE 00000dad: POP 00000dae: DUP2 00000daf: JUMP 00000db0: JUMPDEST 00000db1: CALLVALUE 00000db2: DUP1 00000db3: ISZERO 00000db4: PUSH2 0x0dbb 00000db7: JUMPI 00000db8: PUSH0 00000db9: DUP1 00000dba: REVERT 00000dbb: JUMPDEST 00000dbc: POP 00000dbd: PUSH2 0x0481 00000dc0: PUSH32 0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a 00000de1: DUP2 00000de2: JUMP 00000de3: JUMPDEST 00000de4: PUSH0 00000de5: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00000dfa: PUSH4 0x734ab301 00000dff: PUSH2 0x0e06 00000e02: PUSH2 0x142d 00000e05: JUMP 00000e06: JUMPDEST 00000e07: PUSH2 0x0e0e 00000e0a: PUSH2 0x1e13 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: PUSH1 0x40 00000e11: MLOAD 00000e12: PUSH1 0x01 00000e14: PUSH1 0x01 00000e16: PUSH1 0xe0 00000e18: SHL 00000e19: SUB 00000e1a: NOT 00000e1b: PUSH1 0xe0 00000e1d: DUP6 00000e1e: SWAP1 00000e1f: SHL 00000e20: AND 00000e21: DUP2 00000e22: MSTORE 00000e23: PUSH1 0x01 00000e25: PUSH1 0x01 00000e27: PUSH1 0xa0 00000e29: SHL 00000e2a: SUB 00000e2b: SWAP1 00000e2c: SWAP3 00000e2d: AND 00000e2e: PUSH1 0x04 00000e30: DUP4 00000e31: ADD 00000e32: MSTORE 00000e33: PUSH1 0x24 00000e35: DUP3 00000e36: ADD 00000e37: MSTORE 00000e38: PUSH1 0x44 00000e3a: ADD 00000e3b: PUSH1 0x20 00000e3d: PUSH1 0x40 00000e3f: MLOAD 00000e40: DUP1 00000e41: DUP4 00000e42: SUB 00000e43: DUP2 00000e44: DUP7 00000e45: GAS 00000e46: DELEGATECALL 00000e47: ISZERO 00000e48: DUP1 00000e49: ISZERO 00000e4a: PUSH2 0x0e55 00000e4d: JUMPI 00000e4e: RETURNDATASIZE 00000e4f: PUSH0 00000e50: DUP1 00000e51: RETURNDATACOPY 00000e52: RETURNDATASIZE 00000e53: PUSH0 00000e54: REVERT 00000e55: JUMPDEST 00000e56: POP 00000e57: POP 00000e58: POP 00000e59: POP 00000e5a: PUSH1 0x40 00000e5c: MLOAD 00000e5d: RETURNDATASIZE 00000e5e: PUSH1 0x1f 00000e60: NOT 00000e61: PUSH1 0x1f 00000e63: DUP3 00000e64: ADD 00000e65: AND 00000e66: DUP3 00000e67: ADD 00000e68: DUP1 00000e69: PUSH1 0x40 00000e6b: MSTORE 00000e6c: POP 00000e6d: DUP2 00000e6e: ADD 00000e6f: SWAP1 00000e70: PUSH2 0x0e79 00000e73: SWAP2 00000e74: SWAP1 00000e75: PUSH2 0x414d 00000e78: JUMP 00000e79: JUMPDEST 00000e7a: SWAP1 00000e7b: POP 00000e7c: SWAP1 00000e7d: JUMP 00000e7e: JUMPDEST 00000e7f: PUSH0 00000e80: PUSH1 0x01 00000e82: PUSH1 0x01 00000e84: PUSH1 0xe0 00000e86: SHL 00000e87: SUB 00000e88: NOT 00000e89: DUP3 00000e8a: AND 00000e8b: PUSH4 0x7965db0b 00000e90: PUSH1 0xe0 00000e92: SHL 00000e93: EQ 00000e94: DUP1 00000e95: PUSH2 0x0eae 00000e98: JUMPI 00000e99: POP 00000e9a: PUSH4 0x01ffc9a7 00000e9f: PUSH1 0xe0 00000ea1: SHL 00000ea2: PUSH1 0x01 00000ea4: PUSH1 0x01 00000ea6: PUSH1 0xe0 00000ea8: SHL 00000ea9: SUB 00000eaa: NOT 00000eab: DUP4 00000eac: AND 00000ead: EQ 00000eae: JUMPDEST 00000eaf: SWAP3 00000eb0: SWAP2 00000eb1: POP 00000eb2: POP 00000eb3: JUMP 00000eb4: JUMPDEST 00000eb5: PUSH0 00000eb6: PUSH2 0x0ebd 00000eb9: PUSH2 0x2331 00000ebc: JUMP 00000ebd: JUMPDEST 00000ebe: PUSH1 0x03 00000ec0: ADD 00000ec1: SLOAD 00000ec2: SWAP1 00000ec3: POP 00000ec4: SWAP1 00000ec5: JUMP 00000ec6: JUMPDEST 00000ec7: PUSH1 0x60 00000ec9: PUSH0 00000eca: PUSH0 00000ecb: DUP1 00000ecc: MLOAD 00000ecd: PUSH1 0x20 00000ecf: PUSH2 0x4a92 00000ed2: DUP4 00000ed3: CODECOPY 00000ed4: DUP2 00000ed5: MLOAD 00000ed6: SWAP2 00000ed7: MSTORE 00000ed8: JUMPDEST 00000ed9: SWAP1 00000eda: POP 00000edb: DUP1 00000edc: PUSH1 0x03 00000ede: ADD 00000edf: DUP1 00000ee0: SLOAD 00000ee1: PUSH2 0x0ee9 00000ee4: SWAP1 00000ee5: PUSH2 0x4164 00000ee8: JUMP 00000ee9: JUMPDEST 00000eea: DUP1 00000eeb: PUSH1 0x1f 00000eed: ADD 00000eee: PUSH1 0x20 00000ef0: DUP1 00000ef1: SWAP2 00000ef2: DIV 00000ef3: MUL 00000ef4: PUSH1 0x20 00000ef6: ADD 00000ef7: PUSH1 0x40 00000ef9: MLOAD 00000efa: SWAP1 00000efb: DUP2 00000efc: ADD 00000efd: PUSH1 0x40 00000eff: MSTORE 00000f00: DUP1 00000f01: SWAP3 00000f02: SWAP2 00000f03: SWAP1 00000f04: DUP2 00000f05: DUP2 00000f06: MSTORE 00000f07: PUSH1 0x20 00000f09: ADD 00000f0a: DUP3 00000f0b: DUP1 00000f0c: SLOAD 00000f0d: PUSH2 0x0f15 00000f10: SWAP1 00000f11: PUSH2 0x4164 00000f14: JUMP 00000f15: JUMPDEST 00000f16: DUP1 00000f17: ISZERO 00000f18: PUSH2 0x0f60 00000f1b: JUMPI 00000f1c: DUP1 00000f1d: PUSH1 0x1f 00000f1f: LT 00000f20: PUSH2 0x0f37 00000f23: JUMPI 00000f24: PUSH2 0x0100 00000f27: DUP1 00000f28: DUP4 00000f29: SLOAD 00000f2a: DIV 00000f2b: MUL 00000f2c: DUP4 00000f2d: MSTORE 00000f2e: SWAP2 00000f2f: PUSH1 0x20 00000f31: ADD 00000f32: SWAP2 00000f33: PUSH2 0x0f60 00000f36: JUMP 00000f37: JUMPDEST 00000f38: DUP3 00000f39: ADD 00000f3a: SWAP2 00000f3b: SWAP1 00000f3c: PUSH0 00000f3d: MSTORE 00000f3e: PUSH1 0x20 00000f40: PUSH0 00000f41: KECCAK256 00000f42: SWAP1 00000f43: JUMPDEST 00000f44: DUP2 00000f45: SLOAD 00000f46: DUP2 00000f47: MSTORE 00000f48: SWAP1 00000f49: PUSH1 0x01 00000f4b: ADD 00000f4c: SWAP1 00000f4d: PUSH1 0x20 00000f4f: ADD 00000f50: DUP1 00000f51: DUP4 00000f52: GT 00000f53: PUSH2 0x0f43 00000f56: JUMPI 00000f57: DUP3 00000f58: SWAP1 00000f59: SUB 00000f5a: PUSH1 0x1f 00000f5c: AND 00000f5d: DUP3 00000f5e: ADD 00000f5f: SWAP2 00000f60: JUMPDEST 00000f61: POP 00000f62: POP 00000f63: POP 00000f64: POP 00000f65: POP 00000f66: SWAP2 00000f67: POP 00000f68: POP 00000f69: SWAP1 00000f6a: JUMP 00000f6b: JUMPDEST 00000f6c: PUSH0 00000f6d: PUSH2 0x0f7e 00000f70: PUSH2 0x0f77 00000f73: PUSH2 0x142d 00000f76: JUMP 00000f77: JUMPDEST 00000f78: DUP4 00000f79: PUSH0 00000f7a: PUSH2 0x2379 00000f7d: JUMP 00000f7e: JUMPDEST 00000f7f: POP 00000f80: SWAP3 00000f81: SWAP2 00000f82: POP 00000f83: POP 00000f84: JUMP 00000f85: JUMPDEST 00000f86: PUSH0 00000f87: PUSH2 0x0f8e 00000f8a: PUSH2 0x2331 00000f8d: JUMP 00000f8e: JUMPDEST 00000f8f: PUSH1 0x01 00000f91: ADD 00000f92: SLOAD 00000f93: PUSH1 0x01 00000f95: PUSH1 0x01 00000f97: PUSH1 0xa0 00000f99: SHL 00000f9a: SUB 00000f9b: AND 00000f9c: SWAP2 00000f9d: SWAP1 00000f9e: POP 00000f9f: JUMP 00000fa0: JUMPDEST 00000fa1: PUSH0 00000fa2: CALLER 00000fa3: PUSH2 0x0fad 00000fa6: DUP2 00000fa7: DUP6 00000fa8: DUP6 00000fa9: PUSH2 0x2400 00000fac: JUMP 00000fad: JUMPDEST 00000fae: POP 00000faf: PUSH1 0x01 00000fb1: SWAP4 00000fb2: SWAP3 00000fb3: POP 00000fb4: POP 00000fb5: POP 00000fb6: JUMP 00000fb7: JUMPDEST 00000fb8: PUSH0 00000fb9: DUP1 00000fba: PUSH2 0x0fc2 00000fbd: DUP4 00000fbe: PUSH2 0x22e3 00000fc1: JUMP 00000fc2: JUMPDEST 00000fc3: SWAP1 00000fc4: POP 00000fc5: PUSH2 0x0fe0 00000fc8: PUSH2 0x0fcf 00000fcb: PUSH2 0x142d 00000fce: JUMP 00000fcf: JUMPDEST 00000fd0: PUSH2 0x0fd9 00000fd3: DUP4 00000fd4: DUP7 00000fd5: PUSH2 0x41b0 00000fd8: JUMP 00000fd9: JUMPDEST 00000fda: PUSH1 0x01 00000fdc: PUSH2 0x240d 00000fdf: JUMP 00000fe0: JUMPDEST 00000fe1: POP 00000fe2: SWAP4 00000fe3: SWAP3 00000fe4: POP 00000fe5: POP 00000fe6: POP 00000fe7: JUMP 00000fe8: JUMPDEST 00000fe9: PUSH2 0x1015 00000fec: PUSH1 0x40 00000fee: MLOAD 00000fef: DUP1 00000ff0: PUSH1 0x60 00000ff2: ADD 00000ff3: PUSH1 0x40 00000ff5: MSTORE 00000ff6: DUP1 00000ff7: PUSH0 00000ff8: ISZERO 00000ff9: ISZERO 00000ffa: DUP2 00000ffb: MSTORE 00000ffc: PUSH1 0x20 00000ffe: ADD 00000fff: PUSH1 0x60 00001001: DUP2 00001002: MSTORE 00001003: PUSH1 0x20 00001005: ADD 00001006: PUSH0 00001007: PUSH1 0x01 00001009: PUSH1 0x01 0000100b: PUSH1 0xa0 0000100d: SHL 0000100e: SUB 0000100f: AND 00001010: DUP2 00001011: MSTORE 00001012: POP 00001013: SWAP1 00001014: JUMP 00001015: JUMPDEST 00001016: PUSH2 0x101d 00001019: PUSH2 0x244a 0000101c: JUMP 0000101d: JUMPDEST 0000101e: PUSH1 0x01 00001020: PUSH1 0x01 00001022: PUSH1 0xa0 00001024: SHL 00001025: SUB 00001026: DUP5 00001027: AND 00001028: PUSH0 00001029: SWAP1 0000102a: DUP2 0000102b: MSTORE 0000102c: PUSH1 0x02 0000102e: SWAP2 0000102f: SWAP1 00001030: SWAP2 00001031: ADD 00001032: PUSH1 0x20 00001034: SWAP1 00001035: DUP2 00001036: MSTORE 00001037: PUSH1 0x40 00001039: DUP1 0000103a: DUP4 0000103b: KECCAK256 0000103c: PUSH1 0x01 0000103e: PUSH1 0x01 00001040: PUSH1 0xe0 00001042: SHL 00001043: SUB 00001044: NOT 00001045: DUP7 00001046: AND 00001047: DUP5 00001048: MSTORE 00001049: DUP3 0000104a: MSTORE 0000104b: DUP1 0000104c: DUP4 0000104d: KECCAK256 0000104e: DUP2 0000104f: MLOAD 00001050: PUSH1 0x60 00001052: DUP2 00001053: ADD 00001054: DUP4 00001055: MSTORE 00001056: DUP2 00001057: SLOAD 00001058: PUSH1 0xff 0000105a: AND 0000105b: ISZERO 0000105c: ISZERO 0000105d: DUP2 0000105e: MSTORE 0000105f: PUSH1 0x01 00001061: DUP3 00001062: ADD 00001063: DUP1 00001064: SLOAD 00001065: DUP5 00001066: MLOAD 00001067: DUP2 00001068: DUP8 00001069: MUL 0000106a: DUP2 0000106b: ADD 0000106c: DUP8 0000106d: ADD 0000106e: SWAP1 0000106f: SWAP6 00001070: MSTORE 00001071: DUP1 00001072: DUP6 00001073: MSTORE 00001074: SWAP2 00001075: SWAP6 00001076: SWAP3 00001077: SWAP5 00001078: DUP7 00001079: DUP2 0000107a: ADD 0000107b: SWAP5 0000107c: SWAP4 0000107d: SWAP2 0000107e: SWAP3 0000107f: SWAP2 00001080: SWAP1 00001081: DUP5 00001082: ADD 00001083: JUMPDEST 00001084: DUP3 00001085: DUP3 00001086: LT 00001087: ISZERO 00001088: PUSH2 0x114e 0000108b: JUMPI 0000108c: PUSH0 0000108d: DUP5 0000108e: DUP2 0000108f: MSTORE 00001090: PUSH1 0x20 00001092: SWAP1 00001093: KECCAK256 00001094: PUSH1 0x40 00001096: DUP1 00001097: MLOAD 00001098: PUSH1 0x60 0000109a: DUP2 0000109b: ADD 0000109c: SWAP1 0000109d: SWAP2 0000109e: MSTORE 0000109f: PUSH1 0x02 000010a1: DUP5 000010a2: MUL 000010a3: SWAP1 000010a4: SWAP2 000010a5: ADD 000010a6: DUP1 000010a7: SLOAD 000010a8: DUP3 000010a9: SWAP1 000010aa: PUSH1 0xff 000010ac: AND 000010ad: PUSH1 0x01 000010af: DUP2 000010b0: GT 000010b1: ISZERO 000010b2: PUSH2 0x10bd 000010b5: JUMPI 000010b6: PUSH2 0x10bd 000010b9: PUSH2 0x3900 000010bc: JUMP 000010bd: JUMPDEST 000010be: PUSH1 0x01 000010c0: DUP2 000010c1: GT 000010c2: ISZERO 000010c3: PUSH2 0x10ce 000010c6: JUMPI 000010c7: PUSH2 0x10ce 000010ca: PUSH2 0x3900 000010cd: JUMP 000010ce: JUMPDEST 000010cf: DUP2 000010d0: MSTORE 000010d1: DUP2 000010d2: SLOAD 000010d3: PUSH2 0x0100 000010d6: SWAP1 000010d7: DIV 000010d8: PUSH1 0xff 000010da: AND 000010db: ISZERO 000010dc: ISZERO 000010dd: PUSH1 0x20 000010df: DUP1 000010e0: DUP4 000010e1: ADD 000010e2: SWAP2 000010e3: SWAP1 000010e4: SWAP2 000010e5: MSTORE 000010e6: PUSH1 0x01 000010e8: DUP4 000010e9: ADD 000010ea: DUP1 000010eb: SLOAD 000010ec: PUSH1 0x40 000010ee: DUP1 000010ef: MLOAD 000010f0: DUP3 000010f1: DUP6 000010f2: MUL 000010f3: DUP2 000010f4: ADD 000010f5: DUP6 000010f6: ADD 000010f7: DUP3 000010f8: MSTORE 000010f9: DUP3 000010fa: DUP2 000010fb: MSTORE 000010fc: SWAP5 000010fd: ADD 000010fe: SWAP4 000010ff: SWAP3 00001100: DUP4 00001101: ADD 00001102: DUP3 00001103: DUP3 00001104: DUP1 00001105: ISZERO 00001106: PUSH2 0x1136 00001109: JUMPI 0000110a: PUSH1 0x20 0000110c: MUL 0000110d: DUP3 0000110e: ADD 0000110f: SWAP2 00001110: SWAP1 00001111: PUSH0 00001112: MSTORE 00001113: PUSH1 0x20 00001115: PUSH0 00001116: KECCAK256 00001117: SWAP1 00001118: JUMPDEST 00001119: DUP2 0000111a: SLOAD 0000111b: PUSH1 0x01 0000111d: PUSH1 0x01 0000111f: PUSH1 0xa0 00001121: SHL 00001122: SUB 00001123: AND 00001124: DUP2 00001125: MSTORE 00001126: PUSH1 0x01 00001128: SWAP1 00001129: SWAP2 0000112a: ADD 0000112b: SWAP1 0000112c: PUSH1 0x20 0000112e: ADD 0000112f: DUP1 00001130: DUP4 00001131: GT 00001132: PUSH2 0x1118 00001135: JUMPI 00001136: JUMPDEST 00001137: POP 00001138: POP 00001139: POP 0000113a: POP 0000113b: POP 0000113c: DUP2 0000113d: MSTORE 0000113e: POP 0000113f: POP 00001140: DUP2 00001141: MSTORE 00001142: PUSH1 0x20 00001144: ADD 00001145: SWAP1 00001146: PUSH1 0x01 00001148: ADD 00001149: SWAP1 0000114a: PUSH2 0x1083 0000114d: JUMP 0000114e: JUMPDEST 0000114f: POP 00001150: POP 00001151: POP 00001152: SWAP1 00001153: DUP3 00001154: MSTORE 00001155: POP 00001156: PUSH1 0x02 00001158: SWAP2 00001159: SWAP1 0000115a: SWAP2 0000115b: ADD 0000115c: SLOAD 0000115d: PUSH1 0x01 0000115f: PUSH1 0x01 00001161: PUSH1 0xa0 00001163: SHL 00001164: SUB 00001165: AND 00001166: PUSH1 0x20 00001168: SWAP1 00001169: SWAP2 0000116a: ADD 0000116b: MSTORE 0000116c: SWAP4 0000116d: SWAP3 0000116e: POP 0000116f: POP 00001170: POP 00001171: JUMP 00001172: JUMPDEST 00001173: PUSH1 0x60 00001175: PUSH32 0xe61decff6e4a5c6b5a3d3cbd28f882e595173563b49353ce5f31dba2de7f05ee 00001196: PUSH2 0x119e 00001199: DUP2 0000119a: PUSH2 0x2492 0000119d: JUMP 0000119e: JUMPDEST 0000119f: PUSH1 0x40 000011a1: MLOAD 000011a2: PUSH4 0x02b7c451 000011a7: PUSH1 0xe3 000011a9: SHL 000011aa: DUP2 000011ab: MSTORE 000011ac: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 000011c1: SWAP1 000011c2: PUSH4 0x15be2288 000011c7: SWAP1 000011c8: PUSH2 0x11dd 000011cb: SWAP1 000011cc: DUP11 000011cd: SWAP1 000011ce: DUP11 000011cf: SWAP1 000011d0: DUP11 000011d1: SWAP1 000011d2: DUP11 000011d3: SWAP1 000011d4: DUP11 000011d5: SWAP1 000011d6: PUSH1 0x04 000011d8: ADD 000011d9: PUSH2 0x427c 000011dc: JUMP 000011dd: JUMPDEST 000011de: PUSH0 000011df: PUSH1 0x40 000011e1: MLOAD 000011e2: DUP1 000011e3: DUP4 000011e4: SUB 000011e5: DUP2 000011e6: DUP7 000011e7: GAS 000011e8: DELEGATECALL 000011e9: ISZERO 000011ea: DUP1 000011eb: ISZERO 000011ec: PUSH2 0x11f7 000011ef: JUMPI 000011f0: RETURNDATASIZE 000011f1: PUSH0 000011f2: DUP1 000011f3: RETURNDATACOPY 000011f4: RETURNDATASIZE 000011f5: PUSH0 000011f6: REVERT 000011f7: JUMPDEST 000011f8: POP 000011f9: POP 000011fa: POP 000011fb: POP 000011fc: PUSH1 0x40 000011fe: MLOAD 000011ff: RETURNDATASIZE 00001200: PUSH0 00001201: DUP3 00001202: RETURNDATACOPY 00001203: PUSH1 0x1f 00001205: RETURNDATASIZE 00001206: SWAP1 00001207: DUP2 00001208: ADD 00001209: PUSH1 0x1f 0000120b: NOT 0000120c: AND 0000120d: DUP3 0000120e: ADD 0000120f: PUSH1 0x40 00001211: MSTORE 00001212: PUSH2 0x121e 00001215: SWAP2 00001216: SWAP1 00001217: DUP2 00001218: ADD 00001219: SWAP1 0000121a: PUSH2 0x431e 0000121d: JUMP 0000121e: JUMPDEST 0000121f: SWAP8 00001220: SWAP7 00001221: POP 00001222: POP 00001223: POP 00001224: POP 00001225: POP 00001226: POP 00001227: POP 00001228: JUMP 00001229: JUMPDEST 0000122a: PUSH0 0000122b: PUSH2 0x1232 0000122e: PUSH2 0x2331 00001231: JUMP 00001232: JUMPDEST 00001233: PUSH1 0x02 00001235: ADD 00001236: SLOAD 00001237: PUSH1 0x01 00001239: PUSH1 0xb8 0000123b: SHL 0000123c: SWAP1 0000123d: DIV 0000123e: PUSH1 0xff 00001240: AND 00001241: SWAP2 00001242: SWAP1 00001243: POP 00001244: JUMP 00001245: JUMPDEST 00001246: PUSH0 00001247: CALLER 00001248: PUSH2 0x1252 0000124b: DUP6 0000124c: DUP3 0000124d: DUP6 0000124e: PUSH2 0x249f 00001251: JUMP 00001252: JUMPDEST 00001253: PUSH2 0x125d 00001256: DUP6 00001257: DUP6 00001258: DUP6 00001259: PUSH2 0x24e9 0000125c: JUMP 0000125d: JUMPDEST 0000125e: PUSH1 0x01 00001260: SWAP2 00001261: POP 00001262: POP 00001263: JUMPDEST 00001264: SWAP4 00001265: SWAP3 00001266: POP 00001267: POP 00001268: POP 00001269: JUMP 0000126a: JUMPDEST 0000126b: PUSH0 0000126c: SWAP1 0000126d: DUP2 0000126e: MSTORE 0000126f: PUSH0 00001270: DUP1 00001271: MLOAD 00001272: PUSH1 0x20 00001274: PUSH2 0x4af2 00001277: DUP4 00001278: CODECOPY 00001279: DUP2 0000127a: MLOAD 0000127b: SWAP2 0000127c: MSTORE 0000127d: PUSH1 0x20 0000127f: MSTORE 00001280: PUSH1 0x40 00001282: SWAP1 00001283: KECCAK256 00001284: PUSH1 0x01 00001286: ADD 00001287: SLOAD 00001288: SWAP1 00001289: JUMP 0000128a: JUMPDEST 0000128b: PUSH0 0000128c: DUP1 0000128d: MLOAD 0000128e: PUSH1 0x20 00001290: PUSH2 0x4ad2 00001293: DUP4 00001294: CODECOPY 00001295: DUP2 00001296: MLOAD 00001297: SWAP2 00001298: MSTORE 00001299: PUSH2 0x12a1 0000129c: DUP2 0000129d: PUSH2 0x2492 000012a0: JUMP 000012a1: JUMPDEST 000012a2: PUSH2 0x130b 000012a5: DUP4 000012a6: DUP5 000012a7: PUSH1 0x01 000012a9: PUSH1 0x01 000012ab: PUSH1 0xa0 000012ad: SHL 000012ae: SUB 000012af: AND 000012b0: PUSH4 0x313ce567 000012b5: PUSH1 0x40 000012b7: MLOAD 000012b8: DUP2 000012b9: PUSH4 0xffffffff 000012be: AND 000012bf: PUSH1 0xe0 000012c1: SHL 000012c2: DUP2 000012c3: MSTORE 000012c4: PUSH1 0x04 000012c6: ADD 000012c7: PUSH1 0x20 000012c9: PUSH1 0x40 000012cb: MLOAD 000012cc: DUP1 000012cd: DUP4 000012ce: SUB 000012cf: DUP2 000012d0: DUP7 000012d1: GAS 000012d2: STATICCALL 000012d3: ISZERO 000012d4: DUP1 000012d5: ISZERO 000012d6: PUSH2 0x12e1 000012d9: JUMPI 000012da: RETURNDATASIZE 000012db: PUSH0 000012dc: DUP1 000012dd: RETURNDATACOPY 000012de: RETURNDATASIZE 000012df: PUSH0 000012e0: REVERT 000012e1: JUMPDEST 000012e2: POP 000012e3: POP 000012e4: POP 000012e5: POP 000012e6: PUSH1 0x40 000012e8: MLOAD 000012e9: RETURNDATASIZE 000012ea: PUSH1 0x1f 000012ec: NOT 000012ed: PUSH1 0x1f 000012ef: DUP3 000012f0: ADD 000012f1: AND 000012f2: DUP3 000012f3: ADD 000012f4: DUP1 000012f5: PUSH1 0x40 000012f7: MSTORE 000012f8: POP 000012f9: DUP2 000012fa: ADD 000012fb: SWAP1 000012fc: PUSH2 0x1305 000012ff: SWAP2 00001300: SWAP1 00001301: PUSH2 0x43ff 00001304: JUMP 00001305: JUMPDEST 00001306: DUP5 00001307: PUSH2 0x2546 0000130a: JUMP 0000130b: JUMPDEST 0000130c: POP 0000130d: POP 0000130e: POP 0000130f: JUMP 00001310: JUMPDEST 00001311: PUSH2 0x1319 00001314: DUP3 00001315: PUSH2 0x126a 00001318: JUMP 00001319: JUMPDEST 0000131a: PUSH2 0x1322 0000131d: DUP2 0000131e: PUSH2 0x2492 00001321: JUMP 00001322: JUMPDEST 00001323: PUSH2 0x132c 00001326: DUP4 00001327: DUP4 00001328: PUSH2 0x25c3 0000132b: JUMP 0000132c: JUMPDEST 0000132d: POP 0000132e: POP 0000132f: POP 00001330: POP 00001331: JUMP 00001332: JUMPDEST 00001333: PUSH1 0x40 00001335: DUP1 00001336: MLOAD 00001337: PUSH1 0x60 00001339: DUP2 0000133a: ADD 0000133b: DUP3 0000133c: MSTORE 0000133d: PUSH0 0000133e: DUP1 0000133f: DUP3 00001340: MSTORE 00001341: PUSH1 0x20 00001343: DUP3 00001344: ADD 00001345: DUP2 00001346: SWAP1 00001347: MSTORE 00001348: SWAP2 00001349: DUP2 0000134a: ADD 0000134b: SWAP2 0000134c: SWAP1 0000134d: SWAP2 0000134e: MSTORE 0000134f: PUSH2 0x1356 00001352: PUSH2 0x2664 00001355: JUMP 00001356: JUMPDEST 00001357: PUSH1 0x01 00001359: PUSH1 0x01 0000135b: PUSH1 0xa0 0000135d: SHL 0000135e: SUB 0000135f: SWAP1 00001360: SWAP3 00001361: AND 00001362: PUSH0 00001363: SWAP1 00001364: DUP2 00001365: MSTORE 00001366: PUSH1 0x20 00001368: SWAP3 00001369: DUP4 0000136a: MSTORE 0000136b: PUSH1 0x40 0000136d: SWAP1 0000136e: DUP2 0000136f: SWAP1 00001370: KECCAK256 00001371: DUP2 00001372: MLOAD 00001373: PUSH1 0x60 00001375: DUP2 00001376: ADD 00001377: DUP4 00001378: MSTORE 00001379: DUP2 0000137a: SLOAD 0000137b: DUP2 0000137c: MSTORE 0000137d: PUSH1 0x01 0000137f: SWAP1 00001380: SWAP2 00001381: ADD 00001382: SLOAD 00001383: PUSH1 0xff 00001385: DUP1 00001386: DUP3 00001387: AND 00001388: ISZERO 00001389: ISZERO 0000138a: SWAP6 0000138b: DUP4 0000138c: ADD 0000138d: SWAP6 0000138e: SWAP1 0000138f: SWAP6 00001390: MSTORE 00001391: PUSH2 0x0100 00001394: SWAP1 00001395: DIV 00001396: SWAP1 00001397: SWAP4 00001398: AND 00001399: SWAP1 0000139a: DUP4 0000139b: ADD 0000139c: MSTORE 0000139d: POP 0000139e: SWAP1 0000139f: JUMP 000013a0: JUMPDEST 000013a1: PUSH0 000013a2: PUSH2 0x13a9 000013a5: PUSH2 0x2331 000013a8: JUMP 000013a9: JUMPDEST 000013aa: PUSH1 0x02 000013ac: ADD 000013ad: SLOAD 000013ae: PUSH1 0x01 000013b0: PUSH1 0xa8 000013b2: SHL 000013b3: SWAP1 000013b4: DIV 000013b5: PUSH1 0xff 000013b7: AND 000013b8: SWAP2 000013b9: SWAP1 000013ba: POP 000013bb: JUMP 000013bc: JUMPDEST 000013bd: PUSH32 0xa7df8ec7b8a003b34a76de97612c0ec79afe073d251e44040efb4f1ad64af94e 000013de: PUSH2 0x13e6 000013e1: DUP2 000013e2: PUSH2 0x2492 000013e5: JUMP 000013e6: JUMPDEST 000013e7: PUSH2 0x132c 000013ea: DUP5 000013eb: DUP5 000013ec: DUP5 000013ed: PUSH2 0x26ac 000013f0: JUMP 000013f1: JUMPDEST 000013f2: PUSH0 000013f3: PUSH2 0x0e79 000013f6: PUSH2 0x273a 000013f9: JUMP 000013fa: JUMPDEST 000013fb: PUSH1 0x01 000013fd: PUSH1 0x01 000013ff: PUSH1 0xa0 00001401: SHL 00001402: SUB 00001403: DUP2 00001404: AND 00001405: CALLER 00001406: EQ 00001407: PUSH2 0x1423 0000140a: JUMPI 0000140b: PUSH1 0x40 0000140d: MLOAD 0000140e: PUSH4 0x334bd919 00001413: PUSH1 0xe1 00001415: SHL 00001416: DUP2 00001417: MSTORE 00001418: PUSH1 0x04 0000141a: ADD 0000141b: PUSH1 0x40 0000141d: MLOAD 0000141e: DUP1 0000141f: SWAP2 00001420: SUB 00001421: SWAP1 00001422: REVERT 00001423: JUMPDEST 00001424: PUSH2 0x130b 00001427: DUP3 00001428: DUP3 00001429: PUSH2 0x2743 0000142c: JUMP 0000142d: JUMPDEST 0000142e: PUSH0 0000142f: PUSH2 0x1436 00001432: PUSH2 0x2664 00001435: JUMP 00001436: JUMPDEST 00001437: PUSH1 0x01 00001439: ADD 0000143a: PUSH2 0x1441 0000143d: PUSH2 0x2331 00001440: JUMP 00001441: JUMPDEST 00001442: PUSH1 0x03 00001444: ADD 00001445: SLOAD 00001446: DUP2 00001447: SLOAD 00001448: DUP2 00001449: LT 0000144a: PUSH2 0x1455 0000144d: JUMPI 0000144e: PUSH2 0x1455 00001451: PUSH2 0x441a 00001454: JUMP 00001455: JUMPDEST 00001456: PUSH0 00001457: SWAP2 00001458: DUP3 00001459: MSTORE 0000145a: PUSH1 0x20 0000145c: SWAP1 0000145d: SWAP2 0000145e: KECCAK256 0000145f: ADD 00001460: SLOAD 00001461: PUSH1 0x01 00001463: PUSH1 0x01 00001465: PUSH1 0xa0 00001467: SHL 00001468: SUB 00001469: AND 0000146a: SWAP2 0000146b: SWAP1 0000146c: POP 0000146d: JUMP 0000146e: JUMPDEST 0000146f: PUSH32 0x6c0757dc3e6b28b2580c03fd9e96c274acf4f99d91fbec9b418fa1d70604ff1c 00001490: PUSH2 0x1498 00001493: DUP2 00001494: PUSH2 0x2492 00001497: JUMP 00001498: JUMPDEST 00001499: PUSH2 0x14a1 0000149c: DUP3 0000149d: PUSH2 0x27bc 000014a0: JUMP 000014a1: JUMPDEST 000014a2: POP 000014a3: POP 000014a4: JUMP 000014a5: JUMPDEST 000014a6: PUSH32 0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a 000014c7: PUSH2 0x14cf 000014ca: DUP2 000014cb: PUSH2 0x2492 000014ce: JUMP 000014cf: JUMPDEST 000014d0: PUSH2 0x14d7 000014d3: PUSH2 0x16b9 000014d6: JUMP 000014d7: JUMPDEST 000014d8: PUSH2 0x14f4 000014db: JUMPI 000014dc: PUSH1 0x40 000014de: MLOAD 000014df: PUSH4 0xa45f47fd 000014e4: PUSH1 0xe0 000014e6: SHL 000014e7: DUP2 000014e8: MSTORE 000014e9: PUSH1 0x04 000014eb: ADD 000014ec: PUSH1 0x40 000014ee: MLOAD 000014ef: DUP1 000014f0: SWAP2 000014f1: SUB 000014f2: SWAP1 000014f3: REVERT 000014f4: JUMPDEST 000014f5: PUSH0 000014f6: PUSH2 0x14fd 000014f9: PUSH2 0x2331 000014fc: JUMP 000014fd: JUMPDEST 000014fe: SWAP1 000014ff: POP 00001500: PUSH0 00001501: PUSH2 0x1508 00001504: PUSH2 0x0f85 00001507: JUMP 00001508: JUMPDEST 00001509: PUSH1 0x01 0000150b: PUSH1 0x01 0000150d: PUSH1 0xa0 0000150f: SHL 00001510: SUB 00001511: AND 00001512: SUB 00001513: PUSH2 0x152f 00001516: JUMPI 00001517: PUSH1 0x40 00001519: MLOAD 0000151a: PUSH4 0xa9456d43 0000151f: PUSH1 0xe0 00001521: SHL 00001522: DUP2 00001523: MSTORE 00001524: PUSH1 0x04 00001526: ADD 00001527: PUSH1 0x40 00001529: MLOAD 0000152a: DUP1 0000152b: SWAP2 0000152c: SUB 0000152d: SWAP1 0000152e: REVERT 0000152f: JUMPDEST 00001530: PUSH1 0x02 00001532: DUP2 00001533: ADD 00001534: DUP1 00001535: SLOAD 00001536: PUSH1 0xff 00001538: PUSH1 0xa0 0000153a: SHL 0000153b: NOT 0000153c: AND 0000153d: SWAP1 0000153e: SSTORE 0000153f: PUSH1 0x40 00001541: MLOAD 00001542: PUSH0 00001543: DUP2 00001544: MSTORE 00001545: PUSH32 0x9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304 00001566: SWAP1 00001567: PUSH1 0x20 00001569: ADD 0000156a: JUMPDEST 0000156b: PUSH1 0x40 0000156d: MLOAD 0000156e: DUP1 0000156f: SWAP2 00001570: SUB 00001571: SWAP1 00001572: LOG1 00001573: POP 00001574: POP 00001575: JUMP 00001576: JUMPDEST 00001577: PUSH0 00001578: PUSH2 0x157f 0000157b: PUSH2 0x16b9 0000157e: JUMP 0000157f: JUMPDEST 00001580: ISZERO 00001581: PUSH2 0x158b 00001584: JUMPI 00001585: POP 00001586: PUSH0 00001587: SWAP2 00001588: SWAP1 00001589: POP 0000158a: JUMP 0000158b: JUMPDEST 0000158c: POP 0000158d: PUSH0 0000158e: NOT 0000158f: SWAP2 00001590: SWAP1 00001591: POP 00001592: JUMP 00001593: JUMPDEST 00001594: PUSH0 00001595: PUSH2 0x159c 00001598: PUSH2 0x2861 0000159b: JUMP 0000159c: JUMPDEST 0000159d: PUSH2 0x15a4 000015a0: PUSH2 0x16b9 000015a3: JUMP 000015a4: JUMPDEST 000015a5: ISZERO 000015a6: PUSH2 0x15c2 000015a9: JUMPI 000015aa: PUSH1 0x40 000015ac: MLOAD 000015ad: PUSH4 0x13d0ff59 000015b2: PUSH1 0xe3 000015b4: SHL 000015b5: DUP2 000015b6: MSTORE 000015b7: PUSH1 0x04 000015b9: ADD 000015ba: PUSH1 0x40 000015bc: MLOAD 000015bd: DUP1 000015be: SWAP2 000015bf: SUB 000015c0: SWAP1 000015c1: REVERT 000015c2: JUMPDEST 000015c3: PUSH0 000015c4: DUP1 000015c5: PUSH2 0x15cf 000015c8: DUP7 000015c9: DUP7 000015ca: PUSH0 000015cb: PUSH2 0x240d 000015ce: JUMP 000015cf: JUMPDEST 000015d0: SWAP2 000015d1: POP 000015d2: SWAP2 000015d3: POP 000015d4: PUSH2 0x15e7 000015d7: DUP7 000015d8: PUSH2 0x15de 000015db: CALLER 000015dc: SWAP1 000015dd: JUMP 000015de: JUMPDEST 000015df: DUP7 000015e0: DUP9 000015e1: DUP7 000015e2: DUP7 000015e3: PUSH2 0x2898 000015e6: JUMP 000015e7: JUMPDEST 000015e8: POP 000015e9: SWAP1 000015ea: POP 000015eb: PUSH2 0x1263 000015ee: PUSH1 0x01 000015f0: PUSH0 000015f1: DUP1 000015f2: MLOAD 000015f3: PUSH1 0x20 000015f5: PUSH2 0x4b12 000015f8: DUP4 000015f9: CODECOPY 000015fa: DUP2 000015fb: MLOAD 000015fc: SWAP2 000015fd: MSTORE 000015fe: SSTORE 000015ff: JUMP 00001600: JUMPDEST 00001601: PUSH0 00001602: PUSH2 0x160c 00001605: PUSH2 0x0f77 00001608: PUSH2 0x142d 0000160b: JUMP 0000160c: JUMPDEST 0000160d: POP 0000160e: SWAP1 0000160f: POP 00001610: PUSH2 0x1618 00001613: DUP2 00001614: PUSH2 0x1cad 00001617: JUMP 00001618: JUMPDEST 00001619: PUSH2 0x0eae 0000161c: SWAP1 0000161d: DUP3 0000161e: PUSH2 0x442e 00001621: JUMP 00001622: JUMPDEST 00001623: PUSH0 00001624: PUSH2 0x162b 00001627: PUSH2 0x29c1 0000162a: JUMP 0000162b: JUMPDEST 0000162c: SLOAD 0000162d: PUSH1 0x01 0000162f: PUSH1 0x01 00001631: PUSH1 0x40 00001633: SHL 00001634: SUB 00001635: AND 00001636: SWAP2 00001637: SWAP1 00001638: POP 00001639: JUMP 0000163a: JUMPDEST 0000163b: PUSH0 0000163c: DUP1 0000163d: MLOAD 0000163e: PUSH1 0x20 00001640: PUSH2 0x4ad2 00001643: DUP4 00001644: CODECOPY 00001645: DUP2 00001646: MLOAD 00001647: SWAP2 00001648: MSTORE 00001649: PUSH2 0x1651 0000164c: DUP2 0000164d: PUSH2 0x2492 00001650: JUMP 00001651: JUMPDEST 00001652: DUP2 00001653: PUSH2 0x165a 00001656: PUSH2 0x2331 00001659: JUMP 0000165a: JUMPDEST 0000165b: PUSH1 0x02 0000165d: ADD 0000165e: DUP1 0000165f: SLOAD 00001660: SWAP2 00001661: ISZERO 00001662: ISZERO 00001663: PUSH1 0x01 00001665: PUSH1 0xb8 00001667: SHL 00001668: MUL 00001669: PUSH1 0xff 0000166b: PUSH1 0xb8 0000166d: SHL 0000166e: NOT 0000166f: SWAP1 00001670: SWAP3 00001671: AND 00001672: SWAP2 00001673: SWAP1 00001674: SWAP2 00001675: OR 00001676: SWAP1 00001677: SSTORE 00001678: PUSH1 0x40 0000167a: MLOAD 0000167b: DUP3 0000167c: ISZERO 0000167d: ISZERO 0000167e: DUP2 0000167f: MSTORE 00001680: PUSH32 0x7745ecd181726efad8021ac8f161f3b46433d6fa8877f62bd4e9309456b11328 000016a1: SWAP1 000016a2: PUSH1 0x20 000016a4: ADD 000016a5: PUSH1 0x40 000016a7: MLOAD 000016a8: DUP1 000016a9: SWAP2 000016aa: SUB 000016ab: SWAP1 000016ac: LOG1 000016ad: DUP2 000016ae: PUSH2 0x14a1 000016b1: JUMPI 000016b2: PUSH2 0x14a1 000016b5: PUSH2 0x2a09 000016b8: JUMP 000016b9: JUMPDEST 000016ba: PUSH0 000016bb: PUSH2 0x16c2 000016be: PUSH2 0x2331 000016c1: JUMP 000016c2: JUMPDEST 000016c3: PUSH1 0x02 000016c5: ADD 000016c6: SLOAD 000016c7: PUSH1 0x01 000016c9: PUSH1 0xa0 000016cb: SHL 000016cc: SWAP1 000016cd: DIV 000016ce: PUSH1 0xff 000016d0: AND 000016d1: SWAP2 000016d2: SWAP1 000016d3: POP 000016d4: JUMP 000016d5: JUMPDEST 000016d6: PUSH1 0x60 000016d8: PUSH2 0x16df 000016db: PUSH2 0x2664 000016de: JUMP 000016df: JUMPDEST 000016e0: PUSH1 0x01 000016e2: ADD 000016e3: DUP1 000016e4: SLOAD 000016e5: DUP1 000016e6: PUSH1 0x20 000016e8: MUL 000016e9: PUSH1 0x20 000016eb: ADD 000016ec: PUSH1 0x40 000016ee: MLOAD 000016ef: SWAP1 000016f0: DUP2 000016f1: ADD 000016f2: PUSH1 0x40 000016f4: MSTORE 000016f5: DUP1 000016f6: SWAP3 000016f7: SWAP2 000016f8: SWAP1 000016f9: DUP2 000016fa: DUP2 000016fb: MSTORE 000016fc: PUSH1 0x20 000016fe: ADD 000016ff: DUP3 00001700: DUP1 00001701: SLOAD 00001702: DUP1 00001703: ISZERO 00001704: PUSH2 0x1734 00001707: JUMPI 00001708: PUSH1 0x20 0000170a: MUL 0000170b: DUP3 0000170c: ADD 0000170d: SWAP2 0000170e: SWAP1 0000170f: PUSH0 00001710: MSTORE 00001711: PUSH1 0x20 00001713: PUSH0 00001714: KECCAK256 00001715: SWAP1 00001716: JUMPDEST 00001717: DUP2 00001718: SLOAD 00001719: PUSH1 0x01 0000171b: PUSH1 0x01 0000171d: PUSH1 0xa0 0000171f: SHL 00001720: SUB 00001721: AND 00001722: DUP2 00001723: MSTORE 00001724: PUSH1 0x01 00001726: SWAP1 00001727: SWAP2 00001728: ADD 00001729: SWAP1 0000172a: PUSH1 0x20 0000172c: ADD 0000172d: DUP1 0000172e: DUP4 0000172f: GT 00001730: PUSH2 0x1716 00001733: JUMPI 00001734: JUMPDEST 00001735: POP 00001736: POP 00001737: POP 00001738: POP 00001739: POP 0000173a: SWAP1 0000173b: POP 0000173c: SWAP1 0000173d: JUMP 0000173e: JUMPDEST 0000173f: PUSH0 00001740: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00001755: PUSH4 0x6d00cfdf 0000175a: PUSH1 0x40 0000175c: MLOAD 0000175d: DUP2 0000175e: PUSH4 0xffffffff 00001763: AND 00001764: PUSH1 0xe0 00001766: SHL 00001767: DUP2 00001768: MSTORE 00001769: PUSH1 0x04 0000176b: ADD 0000176c: PUSH1 0x20 0000176e: PUSH1 0x40 00001770: MLOAD 00001771: DUP1 00001772: DUP4 00001773: SUB 00001774: DUP2 00001775: DUP7 00001776: GAS 00001777: DELEGATECALL 00001778: ISZERO 00001779: DUP1 0000177a: ISZERO 0000177b: PUSH2 0x0e55 0000177e: JUMPI 0000177f: RETURNDATASIZE 00001780: PUSH0 00001781: DUP1 00001782: RETURNDATACOPY 00001783: RETURNDATASIZE 00001784: PUSH0 00001785: REVERT 00001786: JUMPDEST 00001787: PUSH0 00001788: PUSH2 0x178f 0000178b: PUSH2 0x2861 0000178e: JUMP 0000178f: JUMPDEST 00001790: PUSH2 0x1797 00001793: PUSH2 0x16b9 00001796: JUMP 00001797: JUMPDEST 00001798: ISZERO 00001799: PUSH2 0x17b5 0000179c: JUMPI 0000179d: PUSH1 0x40 0000179f: MLOAD 000017a0: PUSH4 0x13d0ff59 000017a5: PUSH1 0xe3 000017a7: SHL 000017a8: DUP2 000017a9: MSTORE 000017aa: PUSH1 0x04 000017ac: ADD 000017ad: PUSH1 0x40 000017af: MLOAD 000017b0: DUP1 000017b1: SWAP2 000017b2: SUB 000017b3: SWAP1 000017b4: REVERT 000017b5: JUMPDEST 000017b6: PUSH0 000017b7: DUP1 000017b8: PUSH2 0x17c9 000017bb: PUSH2 0x17c2 000017be: PUSH2 0x142d 000017c1: JUMP 000017c2: JUMPDEST 000017c3: DUP7 000017c4: PUSH0 000017c5: PUSH2 0x240d 000017c8: JUMP 000017c9: JUMPDEST 000017ca: SWAP2 000017cb: POP 000017cc: SWAP2 000017cd: POP 000017ce: PUSH2 0x17de 000017d1: PUSH2 0x17d8 000017d4: PUSH2 0x142d 000017d7: JUMP 000017d8: JUMPDEST 000017d9: CALLER 000017da: PUSH2 0x15de 000017dd: JUMP 000017de: JUMPDEST 000017df: POP 000017e0: SWAP1 000017e1: POP 000017e2: PUSH2 0x0eae 000017e5: PUSH1 0x01 000017e7: PUSH0 000017e8: DUP1 000017e9: MLOAD 000017ea: PUSH1 0x20 000017ec: PUSH2 0x4b12 000017ef: DUP4 000017f0: CODECOPY 000017f1: DUP2 000017f2: MLOAD 000017f3: SWAP2 000017f4: MSTORE 000017f5: SSTORE 000017f6: JUMP 000017f7: JUMPDEST 000017f8: PUSH32 0xa7df8ec7b8a003b34a76de97612c0ec79afe073d251e44040efb4f1ad64af94e 00001819: PUSH2 0x1821 0000181c: DUP2 0000181d: PUSH2 0x2492 00001820: JUMP 00001821: JUMPDEST 00001822: DUP6 00001823: DUP5 00001824: DUP2 00001825: EQ 00001826: ISZERO 00001827: DUP1 00001828: PUSH2 0x1831 0000182b: JUMPI 0000182c: POP 0000182d: DUP1 0000182e: DUP4 0000182f: EQ 00001830: ISZERO 00001831: JUMPDEST 00001832: ISZERO 00001833: PUSH2 0x184f 00001836: JUMPI 00001837: PUSH1 0x40 00001839: MLOAD 0000183a: PUSH4 0x1ec5aa51 0000183f: PUSH1 0xe0 00001841: SHL 00001842: DUP2 00001843: MSTORE 00001844: PUSH1 0x04 00001846: ADD 00001847: PUSH1 0x40 00001849: MLOAD 0000184a: DUP1 0000184b: SWAP2 0000184c: SUB 0000184d: SWAP1 0000184e: REVERT 0000184f: JUMPDEST 00001850: PUSH0 00001851: JUMPDEST 00001852: DUP2 00001853: DUP2 00001854: LT 00001855: ISZERO 00001856: PUSH2 0x18db 00001859: JUMPI 0000185a: PUSH2 0x18d3 0000185d: DUP10 0000185e: DUP10 0000185f: DUP4 00001860: DUP2 00001861: DUP2 00001862: LT 00001863: PUSH2 0x186e 00001866: JUMPI 00001867: PUSH2 0x186e 0000186a: PUSH2 0x441a 0000186d: JUMP 0000186e: JUMPDEST 0000186f: SWAP1 00001870: POP 00001871: PUSH1 0x20 00001873: MUL 00001874: ADD 00001875: PUSH1 0x20 00001877: DUP2 00001878: ADD 00001879: SWAP1 0000187a: PUSH2 0x1883 0000187d: SWAP2 0000187e: SWAP1 0000187f: PUSH2 0x3ca5 00001882: JUMP 00001883: JUMPDEST 00001884: DUP9 00001885: DUP9 00001886: DUP5 00001887: DUP2 00001888: DUP2 00001889: LT 0000188a: PUSH2 0x1895 0000188d: JUMPI 0000188e: PUSH2 0x1895 00001891: PUSH2 0x441a 00001894: JUMP 00001895: JUMPDEST 00001896: SWAP1 00001897: POP 00001898: PUSH1 0x20 0000189a: MUL 0000189b: ADD 0000189c: PUSH1 0x20 0000189e: DUP2 0000189f: ADD 000018a0: SWAP1 000018a1: PUSH2 0x18aa 000018a4: SWAP2 000018a5: SWAP1 000018a6: PUSH2 0x3800 000018a9: JUMP 000018aa: JUMPDEST 000018ab: DUP8 000018ac: DUP8 000018ad: DUP6 000018ae: DUP2 000018af: DUP2 000018b0: LT 000018b1: PUSH2 0x18bc 000018b4: JUMPI 000018b5: PUSH2 0x18bc 000018b8: PUSH2 0x441a 000018bb: JUMP 000018bc: JUMPDEST 000018bd: SWAP1 000018be: POP 000018bf: PUSH1 0x20 000018c1: MUL 000018c2: DUP2 000018c3: ADD 000018c4: SWAP1 000018c5: PUSH2 0x18ce 000018c8: SWAP2 000018c9: SWAP1 000018ca: PUSH2 0x4441 000018cd: JUMP 000018ce: JUMPDEST 000018cf: PUSH2 0x26ac 000018d2: JUMP 000018d3: JUMPDEST 000018d4: PUSH1 0x01 000018d6: ADD 000018d7: PUSH2 0x1851 000018da: JUMP 000018db: JUMPDEST 000018dc: POP 000018dd: POP 000018de: POP 000018df: POP 000018e0: POP 000018e1: POP 000018e2: POP 000018e3: POP 000018e4: POP 000018e5: JUMP 000018e6: JUMPDEST 000018e7: PUSH0 000018e8: DUP1 000018e9: PUSH0 000018ea: DUP1 000018eb: MLOAD 000018ec: PUSH1 0x20 000018ee: PUSH2 0x4a92 000018f1: DUP4 000018f2: CODECOPY 000018f3: DUP2 000018f4: MLOAD 000018f5: SWAP2 000018f6: MSTORE 000018f7: JUMPDEST 000018f8: PUSH1 0x01 000018fa: PUSH1 0x01 000018fc: PUSH1 0xa0 000018fe: SHL 000018ff: SUB 00001900: SWAP1 00001901: SWAP4 00001902: AND 00001903: PUSH0 00001904: SWAP1 00001905: DUP2 00001906: MSTORE 00001907: PUSH1 0x20 00001909: SWAP4 0000190a: SWAP1 0000190b: SWAP4 0000190c: MSTORE 0000190d: POP 0000190e: POP 0000190f: PUSH1 0x40 00001911: SWAP1 00001912: KECCAK256 00001913: SLOAD 00001914: SWAP1 00001915: JUMP 00001916: JUMPDEST 00001917: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 00001938: DUP1 00001939: SLOAD 0000193a: PUSH1 0x01 0000193c: PUSH1 0x40 0000193e: SHL 0000193f: DUP2 00001940: DIV 00001941: PUSH1 0xff 00001943: AND 00001944: ISZERO 00001945: SWAP1 00001946: PUSH1 0x01 00001948: PUSH1 0x01 0000194a: PUSH1 0x40 0000194c: SHL 0000194d: SUB 0000194e: AND 0000194f: PUSH0 00001950: DUP2 00001951: ISZERO 00001952: DUP1 00001953: ISZERO 00001954: PUSH2 0x195a 00001957: JUMPI 00001958: POP 00001959: DUP3 0000195a: JUMPDEST 0000195b: SWAP1 0000195c: POP 0000195d: PUSH0 0000195e: DUP3 0000195f: PUSH1 0x01 00001961: PUSH1 0x01 00001963: PUSH1 0x40 00001965: SHL 00001966: SUB 00001967: AND 00001968: PUSH1 0x01 0000196a: EQ 0000196b: DUP1 0000196c: ISZERO 0000196d: PUSH2 0x1975 00001970: JUMPI 00001971: POP 00001972: ADDRESS 00001973: EXTCODESIZE 00001974: ISZERO 00001975: JUMPDEST 00001976: SWAP1 00001977: POP 00001978: DUP2 00001979: ISZERO 0000197a: DUP1 0000197b: ISZERO 0000197c: PUSH2 0x1983 0000197f: JUMPI 00001980: POP 00001981: DUP1 00001982: ISZERO 00001983: JUMPDEST 00001984: ISZERO 00001985: PUSH2 0x19a1 00001988: JUMPI 00001989: PUSH1 0x40 0000198b: MLOAD 0000198c: PUSH4 0xf92ee8a9 00001991: PUSH1 0xe0 00001993: SHL 00001994: DUP2 00001995: MSTORE 00001996: PUSH1 0x04 00001998: ADD 00001999: PUSH1 0x40 0000199b: MLOAD 0000199c: DUP1 0000199d: SWAP2 0000199e: SUB 0000199f: SWAP1 000019a0: REVERT 000019a1: JUMPDEST 000019a2: DUP5 000019a3: SLOAD 000019a4: PUSH8 0xffffffffffffffff 000019ad: NOT 000019ae: AND 000019af: PUSH1 0x01 000019b1: OR 000019b2: DUP6 000019b3: SSTORE 000019b4: DUP4 000019b5: ISZERO 000019b6: PUSH2 0x19cb 000019b9: JUMPI 000019ba: DUP5 000019bb: SLOAD 000019bc: PUSH1 0xff 000019be: PUSH1 0x40 000019c0: SHL 000019c1: NOT 000019c2: AND 000019c3: PUSH1 0x01 000019c5: PUSH1 0x40 000019c7: SHL 000019c8: OR 000019c9: DUP6 000019ca: SSTORE 000019cb: JUMPDEST 000019cc: PUSH2 0x19dc 000019cf: DUP14 000019d0: DUP14 000019d1: DUP14 000019d2: DUP14 000019d3: PUSH1 0x01 000019d5: DUP14 000019d6: DUP14 000019d7: DUP14 000019d8: PUSH2 0x2a5a 000019db: JUMP 000019dc: JUMPDEST 000019dd: PUSH2 0x19e5 000019e0: DUP10 000019e1: PUSH2 0x27bc 000019e4: JUMP 000019e5: JUMPDEST 000019e6: DUP4 000019e7: ISZERO 000019e8: PUSH2 0x1a2b 000019eb: JUMPI 000019ec: DUP5 000019ed: SLOAD 000019ee: PUSH1 0xff 000019f0: PUSH1 0x40 000019f2: SHL 000019f3: NOT 000019f4: AND 000019f5: DUP6 000019f6: SSTORE 000019f7: PUSH1 0x40 000019f9: MLOAD 000019fa: PUSH1 0x01 000019fc: DUP2 000019fd: MSTORE 000019fe: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 00001a1f: SWAP1 00001a20: PUSH1 0x20 00001a22: ADD 00001a23: PUSH1 0x40 00001a25: MLOAD 00001a26: DUP1 00001a27: SWAP2 00001a28: SUB 00001a29: SWAP1 00001a2a: LOG1 00001a2b: JUMPDEST 00001a2c: POP 00001a2d: POP 00001a2e: POP 00001a2f: POP 00001a30: POP 00001a31: POP 00001a32: POP 00001a33: POP 00001a34: POP 00001a35: POP 00001a36: POP 00001a37: POP 00001a38: POP 00001a39: JUMP 00001a3a: JUMPDEST 00001a3b: PUSH0 00001a3c: PUSH2 0x1a43 00001a3f: PUSH2 0x2331 00001a42: JUMP 00001a43: JUMPDEST 00001a44: PUSH1 0x02 00001a46: ADD 00001a47: SLOAD 00001a48: PUSH1 0x01 00001a4a: PUSH1 0xb0 00001a4c: SHL 00001a4d: SWAP1 00001a4e: DIV 00001a4f: PUSH1 0xff 00001a51: AND 00001a52: SWAP2 00001a53: SWAP1 00001a54: POP 00001a55: JUMP 00001a56: JUMPDEST 00001a57: PUSH0 00001a58: DUP1 00001a59: MLOAD 00001a5a: PUSH1 0x20 00001a5c: PUSH2 0x4ad2 00001a5f: DUP4 00001a60: CODECOPY 00001a61: DUP2 00001a62: MLOAD 00001a63: SWAP2 00001a64: MSTORE 00001a65: PUSH2 0x1a6d 00001a68: DUP2 00001a69: PUSH2 0x2492 00001a6c: JUMP 00001a6d: JUMPDEST 00001a6e: PUSH2 0x14a1 00001a71: DUP3 00001a72: PUSH2 0x2b35 00001a75: JUMP 00001a76: JUMPDEST 00001a77: PUSH0 00001a78: PUSH2 0x0eae 00001a7b: DUP3 00001a7c: PUSH2 0x2b98 00001a7f: JUMP 00001a80: JUMPDEST 00001a81: PUSH32 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a 00001aa2: PUSH2 0x1aaa 00001aa5: DUP2 00001aa6: PUSH2 0x2492 00001aa9: JUMP 00001aaa: JUMPDEST 00001aab: PUSH2 0x1ab2 00001aae: PUSH2 0x16b9 00001ab1: JUMP 00001ab2: JUMPDEST 00001ab3: ISZERO 00001ab4: PUSH2 0x1ad0 00001ab7: JUMPI 00001ab8: PUSH1 0x40 00001aba: MLOAD 00001abb: PUSH4 0x13d0ff59 00001ac0: PUSH1 0xe3 00001ac2: SHL 00001ac3: DUP2 00001ac4: MSTORE 00001ac5: PUSH1 0x04 00001ac7: ADD 00001ac8: PUSH1 0x40 00001aca: MLOAD 00001acb: DUP1 00001acc: SWAP2 00001acd: SUB 00001ace: SWAP1 00001acf: REVERT 00001ad0: JUMPDEST 00001ad1: PUSH0 00001ad2: PUSH2 0x1ad9 00001ad5: PUSH2 0x2331 00001ad8: JUMP 00001ad9: JUMPDEST 00001ada: PUSH1 0x02 00001adc: DUP2 00001add: ADD 00001ade: DUP1 00001adf: SLOAD 00001ae0: PUSH1 0xff 00001ae2: PUSH1 0xa0 00001ae4: SHL 00001ae5: NOT 00001ae6: AND 00001ae7: PUSH1 0x01 00001ae9: PUSH1 0xa0 00001aeb: SHL 00001aec: OR 00001aed: SWAP1 00001aee: SSTORE 00001aef: PUSH1 0x40 00001af1: MLOAD 00001af2: PUSH1 0x01 00001af4: DUP2 00001af5: MSTORE 00001af6: SWAP1 00001af7: SWAP2 00001af8: POP 00001af9: PUSH32 0x9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304 00001b1a: SWAP1 00001b1b: PUSH1 0x20 00001b1d: ADD 00001b1e: PUSH2 0x156a 00001b21: JUMP 00001b22: JUMPDEST 00001b23: PUSH0 00001b24: PUSH1 0x60 00001b26: DUP1 00001b27: DUP3 00001b28: DUP1 00001b29: DUP1 00001b2a: DUP4 00001b2b: DUP2 00001b2c: PUSH0 00001b2d: DUP1 00001b2e: MLOAD 00001b2f: PUSH1 0x20 00001b31: PUSH2 0x4ab2 00001b34: DUP4 00001b35: CODECOPY 00001b36: DUP2 00001b37: MLOAD 00001b38: SWAP2 00001b39: MSTORE 00001b3a: DUP1 00001b3b: SLOAD 00001b3c: SWAP1 00001b3d: SWAP2 00001b3e: POP 00001b3f: ISZERO 00001b40: DUP1 00001b41: ISZERO 00001b42: PUSH2 0x1b4d 00001b45: JUMPI 00001b46: POP 00001b47: PUSH1 0x01 00001b49: DUP2 00001b4a: ADD 00001b4b: SLOAD 00001b4c: ISZERO 00001b4d: JUMPDEST 00001b4e: PUSH2 0x1b96 00001b51: JUMPI 00001b52: PUSH1 0x40 00001b54: MLOAD 00001b55: PUSH3 0x461bcd 00001b59: PUSH1 0xe5 00001b5b: SHL 00001b5c: DUP2 00001b5d: MSTORE 00001b5e: PUSH1 0x20 00001b60: PUSH1 0x04 00001b62: DUP3 00001b63: ADD 00001b64: MSTORE 00001b65: PUSH1 0x15 00001b67: PUSH1 0x24 00001b69: DUP3 00001b6a: ADD 00001b6b: MSTORE 00001b6c: PUSH21 0x1152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959 00001b82: PUSH1 0x5a 00001b84: SHL 00001b85: PUSH1 0x44 00001b87: DUP3 00001b88: ADD 00001b89: MSTORE 00001b8a: PUSH1 0x64 00001b8c: ADD 00001b8d: JUMPDEST 00001b8e: PUSH1 0x40 00001b90: MLOAD 00001b91: DUP1 00001b92: SWAP2 00001b93: SUB 00001b94: SWAP1 00001b95: REVERT 00001b96: JUMPDEST 00001b97: PUSH2 0x1b9e 00001b9a: PUSH2 0x2bc0 00001b9d: JUMP 00001b9e: JUMPDEST 00001b9f: PUSH2 0x1ba6 00001ba2: PUSH2 0x2bfe 00001ba5: JUMP 00001ba6: JUMPDEST 00001ba7: PUSH1 0x40 00001ba9: DUP1 00001baa: MLOAD 00001bab: PUSH0 00001bac: DUP1 00001bad: DUP3 00001bae: MSTORE 00001baf: PUSH1 0x20 00001bb1: DUP3 00001bb2: ADD 00001bb3: SWAP1 00001bb4: SWAP3 00001bb5: MSTORE 00001bb6: PUSH1 0x0f 00001bb8: PUSH1 0xf8 00001bba: SHL 00001bbb: SWAP13 00001bbc: SWAP4 00001bbd: SWAP12 00001bbe: POP 00001bbf: SWAP2 00001bc0: SWAP10 00001bc1: POP 00001bc2: CHAINID 00001bc3: SWAP9 00001bc4: POP 00001bc5: ADDRESS 00001bc6: SWAP8 00001bc7: POP 00001bc8: SWAP6 00001bc9: POP 00001bca: SWAP4 00001bcb: POP 00001bcc: SWAP2 00001bcd: POP 00001bce: POP 00001bcf: JUMP 00001bd0: JUMPDEST 00001bd1: PUSH0 00001bd2: SWAP2 00001bd3: DUP3 00001bd4: MSTORE 00001bd5: PUSH0 00001bd6: DUP1 00001bd7: MLOAD 00001bd8: PUSH1 0x20 00001bda: PUSH2 0x4af2 00001bdd: DUP4 00001bde: CODECOPY 00001bdf: DUP2 00001be0: MLOAD 00001be1: SWAP2 00001be2: MSTORE 00001be3: PUSH1 0x20 00001be5: SWAP1 00001be6: DUP2 00001be7: MSTORE 00001be8: PUSH1 0x40 00001bea: DUP1 00001beb: DUP5 00001bec: KECCAK256 00001bed: PUSH1 0x01 00001bef: PUSH1 0x01 00001bf1: PUSH1 0xa0 00001bf3: SHL 00001bf4: SUB 00001bf5: SWAP4 00001bf6: SWAP1 00001bf7: SWAP4 00001bf8: AND 00001bf9: DUP5 00001bfa: MSTORE 00001bfb: SWAP2 00001bfc: SWAP1 00001bfd: MSTORE 00001bfe: SWAP1 00001bff: KECCAK256 00001c00: SLOAD 00001c01: PUSH1 0xff 00001c03: AND 00001c04: SWAP1 00001c05: JUMP 00001c06: JUMPDEST 00001c07: PUSH0 00001c08: PUSH2 0x1c0f 00001c0b: PUSH2 0x2861 00001c0e: JUMP 00001c0f: JUMPDEST 00001c10: PUSH2 0x1c17 00001c13: PUSH2 0x16b9 00001c16: JUMP 00001c17: JUMPDEST 00001c18: ISZERO 00001c19: PUSH2 0x1c35 00001c1c: JUMPI 00001c1d: PUSH1 0x40 00001c1f: MLOAD 00001c20: PUSH4 0x13d0ff59 00001c25: PUSH1 0xe3 00001c27: SHL 00001c28: DUP2 00001c29: MSTORE 00001c2a: PUSH1 0x04 00001c2c: ADD 00001c2d: PUSH1 0x40 00001c2f: MLOAD 00001c30: DUP1 00001c31: SWAP2 00001c32: SUB 00001c33: SWAP1 00001c34: REVERT 00001c35: JUMPDEST 00001c36: PUSH0 00001c37: DUP1 00001c38: PUSH2 0x1c49 00001c3b: PUSH2 0x1c42 00001c3e: PUSH2 0x142d 00001c41: JUMP 00001c42: JUMPDEST 00001c43: DUP7 00001c44: PUSH0 00001c45: PUSH2 0x2379 00001c48: JUMP 00001c49: JUMPDEST 00001c4a: SWAP2 00001c4b: POP 00001c4c: SWAP2 00001c4d: POP 00001c4e: PUSH2 0x17de 00001c51: PUSH2 0x1c58 00001c54: PUSH2 0x142d 00001c57: JUMP 00001c58: JUMPDEST 00001c59: CALLER 00001c5a: DUP7 00001c5b: DUP6 00001c5c: DUP10 00001c5d: DUP7 00001c5e: PUSH2 0x2898 00001c61: JUMP 00001c62: JUMPDEST 00001c63: PUSH32 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04 00001c84: DUP1 00001c85: SLOAD 00001c86: PUSH1 0x60 00001c88: SWAP2 00001c89: PUSH0 00001c8a: DUP1 00001c8b: MLOAD 00001c8c: PUSH1 0x20 00001c8e: PUSH2 0x4a92 00001c91: DUP4 00001c92: CODECOPY 00001c93: DUP2 00001c94: MLOAD 00001c95: SWAP2 00001c96: MSTORE 00001c97: SWAP2 00001c98: PUSH2 0x0ee9 00001c9b: SWAP1 00001c9c: PUSH2 0x4164 00001c9f: JUMP 00001ca0: JUMPDEST 00001ca1: PUSH0 00001ca2: CALLER 00001ca3: PUSH2 0x0fad 00001ca6: DUP2 00001ca7: DUP6 00001ca8: DUP6 00001ca9: PUSH2 0x24e9 00001cac: JUMP 00001cad: JUMPDEST 00001cae: PUSH0 00001caf: DUP1 00001cb0: PUSH2 0x1cb7 00001cb3: PUSH2 0x29c1 00001cb6: JUMP 00001cb7: JUMPDEST 00001cb8: DUP1 00001cb9: SLOAD 00001cba: SWAP1 00001cbb: SWAP2 00001cbc: POP 00001cbd: PUSH1 0x01 00001cbf: PUSH1 0x01 00001cc1: PUSH1 0x40 00001cc3: SHL 00001cc4: SUB 00001cc5: AND 00001cc6: PUSH0 00001cc7: DUP2 00001cc8: SWAP1 00001cc9: SUB 00001cca: PUSH2 0x1cd6 00001ccd: JUMPI 00001cce: POP 00001ccf: PUSH0 00001cd0: SWAP4 00001cd1: SWAP3 00001cd2: POP 00001cd3: POP 00001cd4: POP 00001cd5: JUMP 00001cd6: JUMPDEST 00001cd7: PUSH2 0x1ce0 00001cda: DUP5 00001cdb: DUP3 00001cdc: PUSH2 0x2c14 00001cdf: JUMP 00001ce0: JUMPDEST 00001ce1: SWAP5 00001ce2: SWAP4 00001ce3: POP 00001ce4: POP 00001ce5: POP 00001ce6: POP 00001ce7: JUMP 00001ce8: JUMPDEST 00001ce9: PUSH0 00001cea: PUSH2 0x0f7e 00001ced: PUSH2 0x1cf4 00001cf0: PUSH2 0x142d 00001cf3: JUMP 00001cf4: JUMPDEST 00001cf5: DUP4 00001cf6: PUSH1 0x01 00001cf8: PUSH2 0x2379 00001cfb: JUMP 00001cfc: JUMPDEST 00001cfd: PUSH0 00001cfe: PUSH2 0x1d05 00001d01: PUSH2 0x2861 00001d04: JUMP 00001d05: JUMPDEST 00001d06: PUSH2 0x1d0d 00001d09: PUSH2 0x16b9 00001d0c: JUMP 00001d0d: JUMPDEST 00001d0e: ISZERO 00001d0f: PUSH2 0x1d2b 00001d12: JUMPI 00001d13: PUSH1 0x40 00001d15: MLOAD 00001d16: PUSH4 0x13d0ff59 00001d1b: PUSH1 0xe3 00001d1d: SHL 00001d1e: DUP2 00001d1f: MSTORE 00001d20: PUSH1 0x04 00001d22: ADD 00001d23: PUSH1 0x40 00001d25: MLOAD 00001d26: DUP1 00001d27: SWAP2 00001d28: SUB 00001d29: SWAP1 00001d2a: REVERT 00001d2b: JUMPDEST 00001d2c: PUSH0 00001d2d: PUSH2 0x1d35 00001d30: DUP4 00001d31: PUSH2 0x1e79 00001d34: JUMP 00001d35: JUMPDEST 00001d36: SWAP1 00001d37: POP 00001d38: DUP1 00001d39: DUP6 00001d3a: GT 00001d3b: ISZERO 00001d3c: PUSH2 0x1d5e 00001d3f: JUMPI 00001d40: DUP3 00001d41: DUP6 00001d42: DUP3 00001d43: PUSH1 0x40 00001d45: MLOAD 00001d46: PUSH4 0xd929e443 00001d4b: PUSH1 0xe0 00001d4d: SHL 00001d4e: DUP2 00001d4f: MSTORE 00001d50: PUSH1 0x04 00001d52: ADD 00001d53: PUSH2 0x1b8d 00001d56: SWAP4 00001d57: SWAP3 00001d58: SWAP2 00001d59: SWAP1 00001d5a: PUSH2 0x445f 00001d5d: JUMP 00001d5e: JUMPDEST 00001d5f: PUSH2 0x1d67 00001d62: DUP6 00001d63: PUSH2 0x0fb7 00001d66: JUMP 00001d67: JUMPDEST 00001d68: SWAP2 00001d69: POP 00001d6a: PUSH2 0x1d76 00001d6d: CALLER 00001d6e: DUP6 00001d6f: DUP6 00001d70: DUP9 00001d71: DUP7 00001d72: PUSH2 0x2c31 00001d75: JUMP 00001d76: JUMPDEST 00001d77: POP 00001d78: PUSH2 0x1263 00001d7b: PUSH1 0x01 00001d7d: PUSH0 00001d7e: DUP1 00001d7f: MLOAD 00001d80: PUSH1 0x20 00001d82: PUSH2 0x4b12 00001d85: DUP4 00001d86: CODECOPY 00001d87: DUP2 00001d88: MLOAD 00001d89: SWAP2 00001d8a: MSTORE 00001d8b: SSTORE 00001d8c: JUMP 00001d8d: JUMPDEST 00001d8e: PUSH0 00001d8f: PUSH2 0x0fe0 00001d92: DUP4 00001d93: DUP4 00001d94: PUSH0 00001d95: PUSH2 0x240d 00001d98: JUMP 00001d99: JUMPDEST 00001d9a: PUSH0 00001d9b: PUSH2 0x1da2 00001d9e: PUSH2 0x2861 00001da1: JUMP 00001da2: JUMPDEST 00001da3: PUSH2 0x1daa 00001da6: PUSH2 0x16b9 00001da9: JUMP 00001daa: JUMPDEST 00001dab: ISZERO 00001dac: PUSH2 0x1dc8 00001daf: JUMPI 00001db0: PUSH1 0x40 00001db2: MLOAD 00001db3: PUSH4 0x13d0ff59 00001db8: PUSH1 0xe3 00001dba: SHL 00001dbb: DUP2 00001dbc: MSTORE 00001dbd: PUSH1 0x04 00001dbf: ADD 00001dc0: PUSH1 0x40 00001dc2: MLOAD 00001dc3: DUP1 00001dc4: SWAP2 00001dc5: SUB 00001dc6: SWAP1 00001dc7: REVERT 00001dc8: JUMPDEST 00001dc9: PUSH0 00001dca: PUSH2 0x1dd2 00001dcd: DUP4 00001dce: PUSH2 0x2147 00001dd1: JUMP 00001dd2: JUMPDEST 00001dd3: SWAP1 00001dd4: POP 00001dd5: DUP1 00001dd6: DUP6 00001dd7: GT 00001dd8: ISZERO 00001dd9: PUSH2 0x1dfb 00001ddc: JUMPI 00001ddd: DUP3 00001dde: DUP6 00001ddf: DUP3 00001de0: PUSH1 0x40 00001de2: MLOAD 00001de3: PUSH4 0x2e2e2d67 00001de8: PUSH1 0xe2 00001dea: SHL 00001deb: DUP2 00001dec: MSTORE 00001ded: PUSH1 0x04 00001def: ADD 00001df0: PUSH2 0x1b8d 00001df3: SWAP4 00001df4: SWAP3 00001df5: SWAP2 00001df6: SWAP1 00001df7: PUSH2 0x445f 00001dfa: JUMP 00001dfb: JUMPDEST 00001dfc: PUSH2 0x1e04 00001dff: DUP6 00001e00: PUSH2 0x1600 00001e03: JUMP 00001e04: JUMPDEST 00001e05: SWAP2 00001e06: POP 00001e07: PUSH2 0x1d76 00001e0a: CALLER 00001e0b: DUP6 00001e0c: DUP6 00001e0d: DUP6 00001e0e: DUP10 00001e0f: PUSH2 0x2c31 00001e12: JUMP 00001e13: JUMPDEST 00001e14: PUSH0 00001e15: PUSH2 0x1e1c 00001e18: PUSH2 0x2331 00001e1b: JUMP 00001e1c: JUMPDEST 00001e1d: PUSH1 0x02 00001e1f: ADD 00001e20: SLOAD 00001e21: PUSH1 0x01 00001e23: PUSH1 0xb8 00001e25: SHL 00001e26: SWAP1 00001e27: DIV 00001e28: PUSH1 0xff 00001e2a: AND 00001e2b: ISZERO 00001e2c: PUSH2 0x1e37 00001e2f: JUMPI 00001e30: PUSH2 0x0e79 00001e33: PUSH2 0x173e 00001e36: JUMP 00001e37: JUMPDEST 00001e38: PUSH2 0x1e3f 00001e3b: PUSH2 0x2331 00001e3e: JUMP 00001e3f: JUMPDEST 00001e40: SLOAD 00001e41: SWAP2 00001e42: SWAP1 00001e43: POP 00001e44: JUMP 00001e45: JUMPDEST 00001e46: PUSH0 00001e47: PUSH2 0x0f7e 00001e4a: PUSH2 0x1e51 00001e4d: PUSH2 0x142d 00001e50: JUMP 00001e51: JUMPDEST 00001e52: DUP4 00001e53: PUSH0 00001e54: PUSH2 0x240d 00001e57: JUMP 00001e58: JUMPDEST 00001e59: PUSH0 00001e5a: DUP1 00001e5b: MLOAD 00001e5c: PUSH1 0x20 00001e5e: PUSH2 0x4ad2 00001e61: DUP4 00001e62: CODECOPY 00001e63: DUP2 00001e64: MLOAD 00001e65: SWAP2 00001e66: MSTORE 00001e67: PUSH2 0x1e6f 00001e6a: DUP2 00001e6b: PUSH2 0x2492 00001e6e: JUMP 00001e6f: JUMPDEST 00001e70: PUSH2 0x130b 00001e73: DUP4 00001e74: DUP4 00001e75: PUSH2 0x2dd6 00001e78: JUMP 00001e79: JUMPDEST 00001e7a: PUSH0 00001e7b: PUSH2 0x1e82 00001e7e: PUSH2 0x16b9 00001e81: JUMP 00001e82: JUMPDEST 00001e83: ISZERO 00001e84: PUSH2 0x1e8e 00001e87: JUMPI 00001e88: POP 00001e89: PUSH0 00001e8a: SWAP2 00001e8b: SWAP1 00001e8c: POP 00001e8d: JUMP 00001e8e: JUMPDEST 00001e8f: PUSH0 00001e90: PUSH2 0x1e97 00001e93: PUSH2 0x2316 00001e96: JUMP 00001e97: JUMPDEST 00001e98: PUSH1 0x40 00001e9a: MLOAD 00001e9b: PUSH4 0xce96cb77 00001ea0: PUSH1 0xe0 00001ea2: SHL 00001ea3: DUP2 00001ea4: MSTORE 00001ea5: ADDRESS 00001ea6: PUSH1 0x04 00001ea8: DUP3 00001ea9: ADD 00001eaa: MSTORE 00001eab: PUSH1 0x01 00001ead: PUSH1 0x01 00001eaf: PUSH1 0xa0 00001eb1: SHL 00001eb2: SUB 00001eb3: SWAP2 00001eb4: SWAP1 00001eb5: SWAP2 00001eb6: AND 00001eb7: SWAP1 00001eb8: PUSH4 0xce96cb77 00001ebd: SWAP1 00001ebe: PUSH1 0x24 00001ec0: ADD 00001ec1: PUSH1 0x20 00001ec3: PUSH1 0x40 00001ec5: MLOAD 00001ec6: DUP1 00001ec7: DUP4 00001ec8: SUB 00001ec9: DUP2 00001eca: DUP7 00001ecb: GAS 00001ecc: STATICCALL 00001ecd: ISZERO 00001ece: DUP1 00001ecf: ISZERO 00001ed0: PUSH2 0x1edb 00001ed3: JUMPI 00001ed4: RETURNDATASIZE 00001ed5: PUSH0 00001ed6: DUP1 00001ed7: RETURNDATACOPY 00001ed8: RETURNDATASIZE 00001ed9: PUSH0 00001eda: REVERT 00001edb: JUMPDEST 00001edc: POP 00001edd: POP 00001ede: POP 00001edf: POP 00001ee0: PUSH1 0x40 00001ee2: MLOAD 00001ee3: RETURNDATASIZE 00001ee4: PUSH1 0x1f 00001ee6: NOT 00001ee7: PUSH1 0x1f 00001ee9: DUP3 00001eea: ADD 00001eeb: AND 00001eec: DUP3 00001eed: ADD 00001eee: DUP1 00001eef: PUSH1 0x40 00001ef1: MSTORE 00001ef2: POP 00001ef3: DUP2 00001ef4: ADD 00001ef5: SWAP1 00001ef6: PUSH2 0x1eff 00001ef9: SWAP2 00001efa: SWAP1 00001efb: PUSH2 0x414d 00001efe: JUMP 00001eff: JUMPDEST 00001f00: SWAP1 00001f01: POP 00001f02: DUP1 00001f03: PUSH0 00001f04: SUB 00001f05: PUSH2 0x1f10 00001f08: JUMPI 00001f09: POP 00001f0a: PUSH0 00001f0b: SWAP3 00001f0c: SWAP2 00001f0d: POP 00001f0e: POP 00001f0f: JUMP 00001f10: JUMPDEST 00001f11: PUSH0 00001f12: PUSH2 0x1f1a 00001f15: DUP5 00001f16: PUSH2 0x18e6 00001f19: JUMP 00001f1a: JUMPDEST 00001f1b: SWAP1 00001f1c: POP 00001f1d: PUSH0 00001f1e: PUSH2 0x1f26 00001f21: DUP3 00001f22: PUSH2 0x1600 00001f25: JUMP 00001f26: JUMPDEST 00001f27: SWAP1 00001f28: POP 00001f29: DUP1 00001f2a: DUP4 00001f2b: LT 00001f2c: PUSH2 0x1f35 00001f2f: JUMPI 00001f30: DUP1 00001f31: PUSH2 0x1f37 00001f34: JUMP 00001f35: JUMPDEST 00001f36: DUP3 00001f37: JUMPDEST 00001f38: SWAP6 00001f39: SWAP5 00001f3a: POP 00001f3b: POP 00001f3c: POP 00001f3d: POP 00001f3e: POP 00001f3f: JUMP 00001f40: JUMPDEST 00001f41: PUSH32 0x1b5c71208e8e044e1cadc5505569e80ff1ea068fcb794cd4bb41d7c0da7d21cb 00001f62: PUSH2 0x1f6a 00001f65: DUP2 00001f66: PUSH2 0x2492 00001f69: JUMP 00001f6a: JUMPDEST 00001f6b: PUSH1 0x40 00001f6d: MLOAD 00001f6e: PUSH4 0x033f635b 00001f73: PUSH1 0xe6 00001f75: SHL 00001f76: DUP2 00001f77: MSTORE 00001f78: PUSH1 0x01 00001f7a: PUSH1 0x01 00001f7c: PUSH1 0xa0 00001f7e: SHL 00001f7f: SUB 00001f80: DUP4 00001f81: AND 00001f82: PUSH1 0x04 00001f84: DUP3 00001f85: ADD 00001f86: MSTORE 00001f87: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00001f9c: SWAP1 00001f9d: PUSH4 0xcfd8d6c0 00001fa2: SWAP1 00001fa3: PUSH1 0x24 00001fa5: ADD 00001fa6: JUMPDEST 00001fa7: PUSH0 00001fa8: PUSH1 0x40 00001faa: MLOAD 00001fab: DUP1 00001fac: DUP4 00001fad: SUB 00001fae: DUP2 00001faf: DUP7 00001fb0: DUP1 00001fb1: EXTCODESIZE 00001fb2: ISZERO 00001fb3: DUP1 00001fb4: ISZERO 00001fb5: PUSH2 0x1fbc 00001fb8: JUMPI 00001fb9: PUSH0 00001fba: DUP1 00001fbb: REVERT 00001fbc: JUMPDEST 00001fbd: POP 00001fbe: GAS 00001fbf: DELEGATECALL 00001fc0: ISZERO 00001fc1: DUP1 00001fc2: ISZERO 00001fc3: PUSH2 0x1fce 00001fc6: JUMPI 00001fc7: RETURNDATASIZE 00001fc8: PUSH0 00001fc9: DUP1 00001fca: RETURNDATACOPY 00001fcb: RETURNDATASIZE 00001fcc: PUSH0 00001fcd: REVERT 00001fce: JUMPDEST 00001fcf: POP 00001fd0: POP 00001fd1: POP 00001fd2: POP 00001fd3: POP 00001fd4: POP 00001fd5: JUMP 00001fd6: JUMPDEST 00001fd7: DUP4 00001fd8: TIMESTAMP 00001fd9: GT 00001fda: ISZERO 00001fdb: PUSH2 0x1ffa 00001fde: JUMPI 00001fdf: PUSH1 0x40 00001fe1: MLOAD 00001fe2: PUSH4 0x313c8981 00001fe7: PUSH1 0xe1 00001fe9: SHL 00001fea: DUP2 00001feb: MSTORE 00001fec: PUSH1 0x04 00001fee: DUP2 00001fef: ADD 00001ff0: DUP6 00001ff1: SWAP1 00001ff2: MSTORE 00001ff3: PUSH1 0x24 00001ff5: ADD 00001ff6: PUSH2 0x1b8d 00001ff9: JUMP 00001ffa: JUMPDEST 00001ffb: PUSH0 00001ffc: PUSH32 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9 0000201d: DUP9 0000201e: DUP9 0000201f: DUP9 00002020: PUSH2 0x2064 00002023: DUP13 00002024: PUSH1 0x01 00002026: PUSH1 0x01 00002028: PUSH1 0xa0 0000202a: SHL 0000202b: SUB 0000202c: AND 0000202d: PUSH0 0000202e: SWAP1 0000202f: DUP2 00002030: MSTORE 00002031: PUSH32 0x5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00 00002052: PUSH1 0x20 00002054: MSTORE 00002055: PUSH1 0x40 00002057: SWAP1 00002058: KECCAK256 00002059: DUP1 0000205a: SLOAD 0000205b: PUSH1 0x01 0000205d: DUP2 0000205e: ADD 0000205f: SWAP1 00002060: SWAP2 00002061: SSTORE 00002062: SWAP1 00002063: JUMP 00002064: JUMPDEST 00002065: PUSH1 0x40 00002067: DUP1 00002068: MLOAD 00002069: PUSH1 0x20 0000206b: DUP2 0000206c: ADD 0000206d: SWAP7 0000206e: SWAP1 0000206f: SWAP7 00002070: MSTORE 00002071: PUSH1 0x01 00002073: PUSH1 0x01 00002075: PUSH1 0xa0 00002077: SHL 00002078: SUB 00002079: SWAP5 0000207a: DUP6 0000207b: AND 0000207c: SWAP1 0000207d: DUP7 0000207e: ADD 0000207f: MSTORE 00002080: SWAP3 00002081: SWAP1 00002082: SWAP2 00002083: AND 00002084: PUSH1 0x60 00002086: DUP5 00002087: ADD 00002088: MSTORE 00002089: PUSH1 0x80 0000208b: DUP4 0000208c: ADD 0000208d: MSTORE 0000208e: PUSH1 0xa0 00002090: DUP3 00002091: ADD 00002092: MSTORE 00002093: PUSH1 0xc0 00002095: DUP2 00002096: ADD 00002097: DUP7 00002098: SWAP1 00002099: MSTORE 0000209a: PUSH1 0xe0 0000209c: ADD 0000209d: PUSH1 0x40 0000209f: MLOAD 000020a0: PUSH1 0x20 000020a2: DUP2 000020a3: DUP4 000020a4: SUB 000020a5: SUB 000020a6: DUP2 000020a7: MSTORE 000020a8: SWAP1 000020a9: PUSH1 0x40 000020ab: MSTORE 000020ac: DUP1 000020ad: MLOAD 000020ae: SWAP1 000020af: PUSH1 0x20 000020b1: ADD 000020b2: KECCAK256 000020b3: SWAP1 000020b4: POP 000020b5: PUSH0 000020b6: PUSH2 0x20be 000020b9: DUP3 000020ba: PUSH2 0x2e0f 000020bd: JUMP 000020be: JUMPDEST 000020bf: SWAP1 000020c0: POP 000020c1: PUSH0 000020c2: PUSH2 0x20cd 000020c5: DUP3 000020c6: DUP8 000020c7: DUP8 000020c8: DUP8 000020c9: PUSH2 0x2e3b 000020cc: JUMP 000020cd: JUMPDEST 000020ce: SWAP1 000020cf: POP 000020d0: DUP10 000020d1: PUSH1 0x01 000020d3: PUSH1 0x01 000020d5: PUSH1 0xa0 000020d7: SHL 000020d8: SUB 000020d9: AND 000020da: DUP2 000020db: PUSH1 0x01 000020dd: PUSH1 0x01 000020df: PUSH1 0xa0 000020e1: SHL 000020e2: SUB 000020e3: AND 000020e4: EQ 000020e5: PUSH2 0x2114 000020e8: JUMPI 000020e9: PUSH1 0x40 000020eb: MLOAD 000020ec: PUSH4 0x25c00723 000020f1: PUSH1 0xe1 000020f3: SHL 000020f4: DUP2 000020f5: MSTORE 000020f6: PUSH1 0x01 000020f8: PUSH1 0x01 000020fa: PUSH1 0xa0 000020fc: SHL 000020fd: SUB 000020fe: DUP1 000020ff: DUP4 00002100: AND 00002101: PUSH1 0x04 00002103: DUP4 00002104: ADD 00002105: MSTORE 00002106: DUP12 00002107: AND 00002108: PUSH1 0x24 0000210a: DUP3 0000210b: ADD 0000210c: MSTORE 0000210d: PUSH1 0x44 0000210f: ADD 00002110: PUSH2 0x1b8d 00002113: JUMP 00002114: JUMPDEST 00002115: PUSH2 0x211f 00002118: DUP11 00002119: DUP11 0000211a: DUP11 0000211b: PUSH2 0x2400 0000211e: JUMP 0000211f: JUMPDEST 00002120: POP 00002121: POP 00002122: POP 00002123: POP 00002124: POP 00002125: POP 00002126: POP 00002127: POP 00002128: POP 00002129: POP 0000212a: JUMP 0000212b: JUMPDEST 0000212c: PUSH2 0x2134 0000212f: DUP3 00002130: PUSH2 0x126a 00002133: JUMP 00002134: JUMPDEST 00002135: PUSH2 0x213d 00002138: DUP2 00002139: PUSH2 0x2492 0000213c: JUMP 0000213d: JUMPDEST 0000213e: PUSH2 0x132c 00002141: DUP4 00002142: DUP4 00002143: PUSH2 0x2743 00002146: JUMP 00002147: JUMPDEST 00002148: PUSH0 00002149: PUSH2 0x2150 0000214c: PUSH2 0x16b9 0000214f: JUMP 00002150: JUMPDEST 00002151: ISZERO 00002152: PUSH2 0x215c 00002155: JUMPI 00002156: POP 00002157: PUSH0 00002158: SWAP2 00002159: SWAP1 0000215a: POP 0000215b: JUMP 0000215c: JUMPDEST 0000215d: PUSH0 0000215e: PUSH2 0x2165 00002161: PUSH2 0x2316 00002164: JUMP 00002165: JUMPDEST 00002166: PUSH1 0x40 00002168: MLOAD 00002169: PUSH4 0xce96cb77 0000216e: PUSH1 0xe0 00002170: SHL 00002171: DUP2 00002172: MSTORE 00002173: ADDRESS 00002174: PUSH1 0x04 00002176: DUP3 00002177: ADD 00002178: MSTORE 00002179: PUSH1 0x01 0000217b: PUSH1 0x01 0000217d: PUSH1 0xa0 0000217f: SHL 00002180: SUB 00002181: SWAP2 00002182: SWAP1 00002183: SWAP2 00002184: AND 00002185: SWAP1 00002186: PUSH4 0xce96cb77 0000218b: SWAP1 0000218c: PUSH1 0x24 0000218e: ADD 0000218f: PUSH1 0x20 00002191: PUSH1 0x40 00002193: MLOAD 00002194: DUP1 00002195: DUP4 00002196: SUB 00002197: DUP2 00002198: DUP7 00002199: GAS 0000219a: STATICCALL 0000219b: ISZERO 0000219c: DUP1 0000219d: ISZERO 0000219e: PUSH2 0x21a9 000021a1: JUMPI 000021a2: RETURNDATASIZE 000021a3: PUSH0 000021a4: DUP1 000021a5: RETURNDATACOPY 000021a6: RETURNDATASIZE 000021a7: PUSH0 000021a8: REVERT 000021a9: JUMPDEST 000021aa: POP 000021ab: POP 000021ac: POP 000021ad: POP 000021ae: PUSH1 0x40 000021b0: MLOAD 000021b1: RETURNDATASIZE 000021b2: PUSH1 0x1f 000021b4: NOT 000021b5: PUSH1 0x1f 000021b7: DUP3 000021b8: ADD 000021b9: AND 000021ba: DUP3 000021bb: ADD 000021bc: DUP1 000021bd: PUSH1 0x40 000021bf: MSTORE 000021c0: POP 000021c1: DUP2 000021c2: ADD 000021c3: SWAP1 000021c4: PUSH2 0x21cd 000021c7: SWAP2 000021c8: SWAP1 000021c9: PUSH2 0x414d 000021cc: JUMP 000021cd: JUMPDEST 000021ce: SWAP1 000021cf: POP 000021d0: DUP1 000021d1: PUSH0 000021d2: SUB 000021d3: PUSH2 0x21de 000021d6: JUMPI 000021d7: POP 000021d8: PUSH0 000021d9: SWAP3 000021da: SWAP2 000021db: POP 000021dc: POP 000021dd: JUMP 000021de: JUMPDEST 000021df: PUSH0 000021e0: PUSH2 0x21e8 000021e3: DUP5 000021e4: PUSH2 0x18e6 000021e7: JUMP 000021e8: JUMPDEST 000021e9: SWAP1 000021ea: POP 000021eb: PUSH2 0x21f3 000021ee: DUP2 000021ef: PUSH2 0x1600 000021f2: JUMP 000021f3: JUMPDEST 000021f4: DUP3 000021f5: LT 000021f6: PUSH2 0x21ff 000021f9: JUMPI 000021fa: DUP1 000021fb: PUSH2 0x1ce0 000021fe: JUMP 000021ff: JUMPDEST 00002200: PUSH2 0x1ce0 00002203: DUP3 00002204: PUSH2 0x0fb7 00002207: JUMP 00002208: JUMPDEST 00002209: PUSH1 0x01 0000220b: PUSH1 0x01 0000220d: PUSH1 0xa0 0000220f: SHL 00002210: SUB 00002211: SWAP2 00002212: DUP3 00002213: AND 00002214: PUSH0 00002215: SWAP1 00002216: DUP2 00002217: MSTORE 00002218: PUSH32 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace01 00002239: PUSH1 0x20 0000223b: SWAP1 0000223c: DUP2 0000223d: MSTORE 0000223e: PUSH1 0x40 00002240: DUP1 00002241: DUP4 00002242: KECCAK256 00002243: SWAP4 00002244: SWAP1 00002245: SWAP5 00002246: AND 00002247: DUP3 00002248: MSTORE 00002249: SWAP2 0000224a: SWAP1 0000224b: SWAP2 0000224c: MSTORE 0000224d: KECCAK256 0000224e: SLOAD 0000224f: SWAP1 00002250: JUMP 00002251: JUMPDEST 00002252: PUSH2 0x2259 00002255: PUSH2 0x2861 00002258: JUMP 00002259: JUMPDEST 0000225a: PUSH2 0x2261 0000225d: PUSH2 0x2a09 00002260: JUMP 00002261: JUMPDEST 00002262: PUSH2 0x2277 00002265: PUSH1 0x01 00002267: PUSH0 00002268: DUP1 00002269: MLOAD 0000226a: PUSH1 0x20 0000226c: PUSH2 0x4b12 0000226f: DUP4 00002270: CODECOPY 00002271: DUP2 00002272: MLOAD 00002273: SWAP2 00002274: MSTORE 00002275: SSTORE 00002276: JUMP 00002277: JUMPDEST 00002278: JUMP 00002279: JUMPDEST 0000227a: PUSH32 0xe5d2521c7601dc3ebb9e087fbf87bdb7a14e74956103c86bf28d0f9d0e87c832 0000229b: PUSH2 0x22a3 0000229e: DUP2 0000229f: PUSH2 0x2492 000022a2: JUMP 000022a3: JUMPDEST 000022a4: PUSH1 0x40 000022a6: MLOAD 000022a7: PUSH4 0xe95c41c3 000022ac: PUSH1 0xe0 000022ae: SHL 000022af: DUP2 000022b0: MSTORE 000022b1: PUSH1 0x01 000022b3: PUSH1 0x01 000022b5: PUSH1 0xa0 000022b7: SHL 000022b8: SUB 000022b9: DUP4 000022ba: AND 000022bb: PUSH1 0x04 000022bd: DUP3 000022be: ADD 000022bf: MSTORE 000022c0: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 000022d5: SWAP1 000022d6: PUSH4 0xe95c41c3 000022db: SWAP1 000022dc: PUSH1 0x24 000022de: ADD 000022df: PUSH2 0x1fa6 000022e2: JUMP 000022e3: JUMPDEST 000022e4: PUSH0 000022e5: DUP1 000022e6: PUSH2 0x22ed 000022e9: PUSH2 0x29c1 000022ec: JUMP 000022ed: JUMPDEST 000022ee: DUP1 000022ef: SLOAD 000022f0: SWAP1 000022f1: SWAP2 000022f2: POP 000022f3: PUSH1 0x01 000022f5: PUSH1 0x01 000022f7: PUSH1 0x40 000022f9: SHL 000022fa: SUB 000022fb: AND 000022fc: PUSH0 000022fd: DUP2 000022fe: SWAP1 000022ff: SUB 00002300: PUSH2 0x230c 00002303: JUMPI 00002304: POP 00002305: PUSH0 00002306: SWAP4 00002307: SWAP3 00002308: POP 00002309: POP 0000230a: POP 0000230b: JUMP 0000230c: JUMPDEST 0000230d: PUSH2 0x1ce0 00002310: DUP5 00002311: DUP3 00002312: PUSH2 0x2e67 00002315: JUMP 00002316: JUMPDEST 00002317: PUSH0 00002318: PUSH2 0x231f 0000231b: PUSH2 0x2331 0000231e: JUMP 0000231f: JUMPDEST 00002320: PUSH1 0x02 00002322: ADD 00002323: SLOAD 00002324: PUSH1 0x01 00002326: PUSH1 0x01 00002328: PUSH1 0xa0 0000232a: SHL 0000232b: SUB 0000232c: AND 0000232d: SWAP2 0000232e: SWAP1 0000232f: POP 00002330: JUMP 00002331: JUMPDEST 00002332: PUSH0 00002333: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002348: PUSH4 0xb9008f01 0000234d: PUSH1 0x40 0000234f: MLOAD 00002350: DUP2 00002351: PUSH4 0xffffffff 00002356: AND 00002357: PUSH1 0xe0 00002359: SHL 0000235a: DUP2 0000235b: MSTORE 0000235c: PUSH1 0x04 0000235e: ADD 0000235f: PUSH1 0x20 00002361: PUSH1 0x40 00002363: MLOAD 00002364: DUP1 00002365: DUP4 00002366: SUB 00002367: DUP2 00002368: DUP7 00002369: GAS 0000236a: DELEGATECALL 0000236b: ISZERO 0000236c: DUP1 0000236d: ISZERO 0000236e: PUSH2 0x0e55 00002371: JUMPI 00002372: RETURNDATASIZE 00002373: PUSH0 00002374: DUP1 00002375: RETURNDATACOPY 00002376: RETURNDATASIZE 00002377: PUSH0 00002378: REVERT 00002379: JUMPDEST 0000237a: PUSH0 0000237b: DUP1 0000237c: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002391: PUSH4 0xf38ff3de 00002396: DUP7 00002397: DUP7 00002398: DUP7 00002399: PUSH1 0x40 0000239b: MLOAD 0000239c: DUP5 0000239d: PUSH4 0xffffffff 000023a2: AND 000023a3: PUSH1 0xe0 000023a5: SHL 000023a6: DUP2 000023a7: MSTORE 000023a8: PUSH1 0x04 000023aa: ADD 000023ab: PUSH2 0x23b6 000023ae: SWAP4 000023af: SWAP3 000023b0: SWAP2 000023b1: SWAP1 000023b2: PUSH2 0x4480 000023b5: JUMP 000023b6: JUMPDEST 000023b7: PUSH1 0x40 000023b9: DUP1 000023ba: MLOAD 000023bb: DUP1 000023bc: DUP4 000023bd: SUB 000023be: DUP2 000023bf: DUP7 000023c0: GAS 000023c1: DELEGATECALL 000023c2: ISZERO 000023c3: DUP1 000023c4: ISZERO 000023c5: PUSH2 0x23d0 000023c8: JUMPI 000023c9: RETURNDATASIZE 000023ca: PUSH0 000023cb: DUP1 000023cc: RETURNDATACOPY 000023cd: RETURNDATASIZE 000023ce: PUSH0 000023cf: REVERT 000023d0: JUMPDEST 000023d1: POP 000023d2: POP 000023d3: POP 000023d4: POP 000023d5: PUSH1 0x40 000023d7: MLOAD 000023d8: RETURNDATASIZE 000023d9: PUSH1 0x1f 000023db: NOT 000023dc: PUSH1 0x1f 000023de: DUP3 000023df: ADD 000023e0: AND 000023e1: DUP3 000023e2: ADD 000023e3: DUP1 000023e4: PUSH1 0x40 000023e6: MSTORE 000023e7: POP 000023e8: DUP2 000023e9: ADD 000023ea: SWAP1 000023eb: PUSH2 0x23f4 000023ee: SWAP2 000023ef: SWAP1 000023f0: PUSH2 0x44b5 000023f3: JUMP 000023f4: JUMPDEST 000023f5: SWAP2 000023f6: POP 000023f7: SWAP2 000023f8: POP 000023f9: SWAP4 000023fa: POP 000023fb: SWAP4 000023fc: SWAP2 000023fd: POP 000023fe: POP 000023ff: JUMP 00002400: JUMPDEST 00002401: PUSH2 0x130b 00002404: DUP4 00002405: DUP4 00002406: DUP4 00002407: PUSH1 0x01 00002409: PUSH2 0x2e79 0000240c: JUMP 0000240d: JUMPDEST 0000240e: PUSH0 0000240f: DUP1 00002410: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002425: PUSH4 0x8523c787 0000242a: DUP7 0000242b: DUP7 0000242c: DUP7 0000242d: PUSH1 0x40 0000242f: MLOAD 00002430: DUP5 00002431: PUSH4 0xffffffff 00002436: AND 00002437: PUSH1 0xe0 00002439: SHL 0000243a: DUP2 0000243b: MSTORE 0000243c: PUSH1 0x04 0000243e: ADD 0000243f: PUSH2 0x23b6 00002442: SWAP4 00002443: SWAP3 00002444: SWAP2 00002445: SWAP1 00002446: PUSH2 0x4480 00002449: JUMP 0000244a: JUMPDEST 0000244b: PUSH0 0000244c: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002461: PUSH4 0xa2719b81 00002466: PUSH1 0x40 00002468: MLOAD 00002469: DUP2 0000246a: PUSH4 0xffffffff 0000246f: AND 00002470: PUSH1 0xe0 00002472: SHL 00002473: DUP2 00002474: MSTORE 00002475: PUSH1 0x04 00002477: ADD 00002478: PUSH1 0x20 0000247a: PUSH1 0x40 0000247c: MLOAD 0000247d: DUP1 0000247e: DUP4 0000247f: SUB 00002480: DUP2 00002481: DUP7 00002482: GAS 00002483: DELEGATECALL 00002484: ISZERO 00002485: DUP1 00002486: ISZERO 00002487: PUSH2 0x0e55 0000248a: JUMPI 0000248b: RETURNDATASIZE 0000248c: PUSH0 0000248d: DUP1 0000248e: RETURNDATACOPY 0000248f: RETURNDATASIZE 00002490: PUSH0 00002491: REVERT 00002492: JUMPDEST 00002493: PUSH2 0x249c 00002496: DUP2 00002497: CALLER 00002498: PUSH2 0x2f5c 0000249b: JUMP 0000249c: JUMPDEST 0000249d: POP 0000249e: JUMP 0000249f: JUMPDEST 000024a0: PUSH0 000024a1: PUSH2 0x24aa 000024a4: DUP5 000024a5: DUP5 000024a6: PUSH2 0x2208 000024a9: JUMP 000024aa: JUMPDEST 000024ab: SWAP1 000024ac: POP 000024ad: PUSH0 000024ae: NOT 000024af: DUP2 000024b0: EQ 000024b1: PUSH2 0x132c 000024b4: JUMPI 000024b5: DUP2 000024b6: DUP2 000024b7: LT 000024b8: ISZERO 000024b9: PUSH2 0x24db 000024bc: JUMPI 000024bd: DUP3 000024be: DUP2 000024bf: DUP4 000024c0: PUSH1 0x40 000024c2: MLOAD 000024c3: PUSH4 0x7dc7a0d9 000024c8: PUSH1 0xe1 000024ca: SHL 000024cb: DUP2 000024cc: MSTORE 000024cd: PUSH1 0x04 000024cf: ADD 000024d0: PUSH2 0x1b8d 000024d3: SWAP4 000024d4: SWAP3 000024d5: SWAP2 000024d6: SWAP1 000024d7: PUSH2 0x445f 000024da: JUMP 000024db: JUMPDEST 000024dc: PUSH2 0x132c 000024df: DUP5 000024e0: DUP5 000024e1: DUP5 000024e2: DUP5 000024e3: SUB 000024e4: PUSH0 000024e5: PUSH2 0x2e79 000024e8: JUMP 000024e9: JUMPDEST 000024ea: PUSH1 0x01 000024ec: PUSH1 0x01 000024ee: PUSH1 0xa0 000024f0: SHL 000024f1: SUB 000024f2: DUP4 000024f3: AND 000024f4: PUSH2 0x2512 000024f7: JUMPI 000024f8: PUSH1 0x40 000024fa: MLOAD 000024fb: PUSH4 0x4b637e8f 00002500: PUSH1 0xe1 00002502: SHL 00002503: DUP2 00002504: MSTORE 00002505: PUSH0 00002506: PUSH1 0x04 00002508: DUP3 00002509: ADD 0000250a: MSTORE 0000250b: PUSH1 0x24 0000250d: ADD 0000250e: PUSH2 0x1b8d 00002511: JUMP 00002512: JUMPDEST 00002513: PUSH1 0x01 00002515: PUSH1 0x01 00002517: PUSH1 0xa0 00002519: SHL 0000251a: SUB 0000251b: DUP3 0000251c: AND 0000251d: PUSH2 0x253b 00002520: JUMPI 00002521: PUSH1 0x40 00002523: MLOAD 00002524: PUSH4 0xec442f05 00002529: PUSH1 0xe0 0000252b: SHL 0000252c: DUP2 0000252d: MSTORE 0000252e: PUSH0 0000252f: PUSH1 0x04 00002531: DUP3 00002532: ADD 00002533: MSTORE 00002534: PUSH1 0x24 00002536: ADD 00002537: PUSH2 0x1b8d 0000253a: JUMP 0000253b: JUMPDEST 0000253c: PUSH2 0x130b 0000253f: DUP4 00002540: DUP4 00002541: DUP4 00002542: PUSH2 0x2f95 00002545: JUMP 00002546: JUMPDEST 00002547: PUSH1 0x40 00002549: MLOAD 0000254a: PUSH4 0x88bd3bb3 0000254f: PUSH1 0xe0 00002551: SHL 00002552: DUP2 00002553: MSTORE 00002554: PUSH1 0x01 00002556: PUSH1 0x01 00002558: PUSH1 0xa0 0000255a: SHL 0000255b: SUB 0000255c: DUP5 0000255d: AND 0000255e: PUSH1 0x04 00002560: DUP3 00002561: ADD 00002562: MSTORE 00002563: PUSH1 0xff 00002565: DUP4 00002566: AND 00002567: PUSH1 0x24 00002569: DUP3 0000256a: ADD 0000256b: MSTORE 0000256c: DUP2 0000256d: ISZERO 0000256e: ISZERO 0000256f: PUSH1 0x44 00002571: DUP3 00002572: ADD 00002573: MSTORE 00002574: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002589: SWAP1 0000258a: PUSH4 0x88bd3bb3 0000258f: SWAP1 00002590: PUSH1 0x64 00002592: ADD 00002593: PUSH0 00002594: PUSH1 0x40 00002596: MLOAD 00002597: DUP1 00002598: DUP4 00002599: SUB 0000259a: DUP2 0000259b: DUP7 0000259c: DUP1 0000259d: EXTCODESIZE 0000259e: ISZERO 0000259f: DUP1 000025a0: ISZERO 000025a1: PUSH2 0x25a8 000025a4: JUMPI 000025a5: PUSH0 000025a6: DUP1 000025a7: REVERT 000025a8: JUMPDEST 000025a9: POP 000025aa: GAS 000025ab: DELEGATECALL 000025ac: ISZERO 000025ad: DUP1 000025ae: ISZERO 000025af: PUSH2 0x25ba 000025b2: JUMPI 000025b3: RETURNDATASIZE 000025b4: PUSH0 000025b5: DUP1 000025b6: RETURNDATACOPY 000025b7: RETURNDATASIZE 000025b8: PUSH0 000025b9: REVERT 000025ba: JUMPDEST 000025bb: POP 000025bc: POP 000025bd: POP 000025be: POP 000025bf: POP 000025c0: POP 000025c1: POP 000025c2: JUMP 000025c3: JUMPDEST 000025c4: PUSH0 000025c5: PUSH0 000025c6: DUP1 000025c7: MLOAD 000025c8: PUSH1 0x20 000025ca: PUSH2 0x4af2 000025cd: DUP4 000025ce: CODECOPY 000025cf: DUP2 000025d0: MLOAD 000025d1: SWAP2 000025d2: MSTORE 000025d3: PUSH2 0x25dc 000025d6: DUP5 000025d7: DUP5 000025d8: PUSH2 0x1bd0 000025db: JUMP 000025dc: JUMPDEST 000025dd: PUSH2 0x265b 000025e0: JUMPI 000025e1: PUSH0 000025e2: DUP5 000025e3: DUP2 000025e4: MSTORE 000025e5: PUSH1 0x20 000025e7: DUP3 000025e8: DUP2 000025e9: MSTORE 000025ea: PUSH1 0x40 000025ec: DUP1 000025ed: DUP4 000025ee: KECCAK256 000025ef: PUSH1 0x01 000025f1: PUSH1 0x01 000025f3: PUSH1 0xa0 000025f5: SHL 000025f6: SUB 000025f7: DUP8 000025f8: AND 000025f9: DUP5 000025fa: MSTORE 000025fb: SWAP1 000025fc: SWAP2 000025fd: MSTORE 000025fe: SWAP1 000025ff: KECCAK256 00002600: DUP1 00002601: SLOAD 00002602: PUSH1 0xff 00002604: NOT 00002605: AND 00002606: PUSH1 0x01 00002608: OR 00002609: SWAP1 0000260a: SSTORE 0000260b: PUSH2 0x2611 0000260e: CALLER 0000260f: SWAP1 00002610: JUMP 00002611: JUMPDEST 00002612: PUSH1 0x01 00002614: PUSH1 0x01 00002616: PUSH1 0xa0 00002618: SHL 00002619: SUB 0000261a: AND 0000261b: DUP4 0000261c: PUSH1 0x01 0000261e: PUSH1 0x01 00002620: PUSH1 0xa0 00002622: SHL 00002623: SUB 00002624: AND 00002625: DUP6 00002626: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 00002647: PUSH1 0x40 00002649: MLOAD 0000264a: PUSH1 0x40 0000264c: MLOAD 0000264d: DUP1 0000264e: SWAP2 0000264f: SUB 00002650: SWAP1 00002651: LOG4 00002652: PUSH1 0x01 00002654: SWAP2 00002655: POP 00002656: POP 00002657: PUSH2 0x0eae 0000265a: JUMP 0000265b: JUMPDEST 0000265c: PUSH0 0000265d: SWAP2 0000265e: POP 0000265f: POP 00002660: PUSH2 0x0eae 00002663: JUMP 00002664: JUMPDEST 00002665: PUSH0 00002666: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 0000267b: PUSH4 0x7c77e8df 00002680: PUSH1 0x40 00002682: MLOAD 00002683: DUP2 00002684: PUSH4 0xffffffff 00002689: AND 0000268a: PUSH1 0xe0 0000268c: SHL 0000268d: DUP2 0000268e: MSTORE 0000268f: PUSH1 0x04 00002691: ADD 00002692: PUSH1 0x20 00002694: PUSH1 0x40 00002696: MLOAD 00002697: DUP1 00002698: DUP4 00002699: SUB 0000269a: DUP2 0000269b: DUP7 0000269c: GAS 0000269d: DELEGATECALL 0000269e: ISZERO 0000269f: DUP1 000026a0: ISZERO 000026a1: PUSH2 0x0e55 000026a4: JUMPI 000026a5: RETURNDATASIZE 000026a6: PUSH0 000026a7: DUP1 000026a8: RETURNDATACOPY 000026a9: RETURNDATASIZE 000026aa: PUSH0 000026ab: REVERT 000026ac: JUMPDEST 000026ad: DUP1 000026ae: PUSH2 0x26b5 000026b1: PUSH2 0x244a 000026b4: JUMP 000026b5: JUMPDEST 000026b6: PUSH1 0x01 000026b8: PUSH1 0x01 000026ba: PUSH1 0xa0 000026bc: SHL 000026bd: SUB 000026be: DUP6 000026bf: AND 000026c0: PUSH0 000026c1: SWAP1 000026c2: DUP2 000026c3: MSTORE 000026c4: PUSH1 0x02 000026c6: SWAP2 000026c7: SWAP1 000026c8: SWAP2 000026c9: ADD 000026ca: PUSH1 0x20 000026cc: SWAP1 000026cd: DUP2 000026ce: MSTORE 000026cf: PUSH1 0x40 000026d1: DUP1 000026d2: DUP4 000026d3: KECCAK256 000026d4: PUSH1 0x01 000026d6: PUSH1 0x01 000026d8: PUSH1 0xe0 000026da: SHL 000026db: SUB 000026dc: NOT 000026dd: DUP8 000026de: AND 000026df: DUP5 000026e0: MSTORE 000026e1: SWAP1 000026e2: SWAP2 000026e3: MSTORE 000026e4: SWAP1 000026e5: KECCAK256 000026e6: PUSH2 0x26ef 000026e9: DUP3 000026ea: DUP3 000026eb: PUSH2 0x465a 000026ee: JUMP 000026ef: JUMPDEST 000026f0: SWAP1 000026f1: POP 000026f2: POP 000026f3: DUP3 000026f4: PUSH1 0x01 000026f6: PUSH1 0x01 000026f8: PUSH1 0xa0 000026fa: SHL 000026fb: SUB 000026fc: AND 000026fd: PUSH32 0x8bbaf1a6b378451fa824636b7db10623c63a9b03c980c9241a459efb4af8ae0c 0000271e: DUP4 0000271f: DUP4 00002720: PUSH1 0x40 00002722: MLOAD 00002723: PUSH2 0x272d 00002726: SWAP3 00002727: SWAP2 00002728: SWAP1 00002729: PUSH2 0x47d3 0000272c: JUMP 0000272d: JUMPDEST 0000272e: PUSH1 0x40 00002730: MLOAD 00002731: DUP1 00002732: SWAP2 00002733: SUB 00002734: SWAP1 00002735: LOG2 00002736: POP 00002737: POP 00002738: POP 00002739: JUMP 0000273a: JUMPDEST 0000273b: PUSH0 0000273c: PUSH2 0x0e79 0000273f: PUSH2 0x30bb 00002742: JUMP 00002743: JUMPDEST 00002744: PUSH0 00002745: PUSH0 00002746: DUP1 00002747: MLOAD 00002748: PUSH1 0x20 0000274a: PUSH2 0x4af2 0000274d: DUP4 0000274e: CODECOPY 0000274f: DUP2 00002750: MLOAD 00002751: SWAP2 00002752: MSTORE 00002753: PUSH2 0x275c 00002756: DUP5 00002757: DUP5 00002758: PUSH2 0x1bd0 0000275b: JUMP 0000275c: JUMPDEST 0000275d: ISZERO 0000275e: PUSH2 0x265b 00002761: JUMPI 00002762: PUSH0 00002763: DUP5 00002764: DUP2 00002765: MSTORE 00002766: PUSH1 0x20 00002768: DUP3 00002769: DUP2 0000276a: MSTORE 0000276b: PUSH1 0x40 0000276d: DUP1 0000276e: DUP4 0000276f: KECCAK256 00002770: PUSH1 0x01 00002772: PUSH1 0x01 00002774: PUSH1 0xa0 00002776: SHL 00002777: SUB 00002778: DUP8 00002779: AND 0000277a: DUP1 0000277b: DUP6 0000277c: MSTORE 0000277d: SWAP3 0000277e: MSTORE 0000277f: DUP1 00002780: DUP4 00002781: KECCAK256 00002782: DUP1 00002783: SLOAD 00002784: PUSH1 0xff 00002786: NOT 00002787: AND 00002788: SWAP1 00002789: SSTORE 0000278a: MLOAD 0000278b: CALLER 0000278c: SWAP3 0000278d: DUP8 0000278e: SWAP2 0000278f: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 000027b0: SWAP2 000027b1: SWAP1 000027b2: LOG4 000027b3: PUSH1 0x01 000027b5: SWAP2 000027b6: POP 000027b7: POP 000027b8: PUSH2 0x0eae 000027bb: JUMP 000027bc: JUMPDEST 000027bd: PUSH4 0x05f5e100 000027c2: DUP2 000027c3: PUSH1 0x01 000027c5: PUSH1 0x01 000027c7: PUSH1 0x40 000027c9: SHL 000027ca: SUB 000027cb: AND 000027cc: GT 000027cd: ISZERO 000027ce: PUSH2 0x27f5 000027d1: JUMPI 000027d2: PUSH1 0x40 000027d4: MLOAD 000027d5: PUSH4 0x3932103d 000027da: PUSH1 0xe0 000027dc: SHL 000027dd: DUP2 000027de: MSTORE 000027df: PUSH1 0x01 000027e1: PUSH1 0x01 000027e3: PUSH1 0x40 000027e5: SHL 000027e6: SUB 000027e7: DUP3 000027e8: AND 000027e9: PUSH1 0x04 000027eb: DUP3 000027ec: ADD 000027ed: MSTORE 000027ee: PUSH1 0x24 000027f0: ADD 000027f1: PUSH2 0x1b8d 000027f4: JUMP 000027f5: JUMPDEST 000027f6: PUSH0 000027f7: PUSH2 0x27fe 000027fa: PUSH2 0x29c1 000027fd: JUMP 000027fe: JUMPDEST 000027ff: DUP1 00002800: SLOAD 00002801: PUSH1 0x01 00002803: PUSH1 0x01 00002805: PUSH1 0x40 00002807: SHL 00002808: SUB 00002809: DUP5 0000280a: DUP2 0000280b: AND 0000280c: PUSH8 0xffffffffffffffff 00002815: NOT 00002816: DUP4 00002817: AND 00002818: DUP2 00002819: OR 0000281a: DUP5 0000281b: SSTORE 0000281c: PUSH1 0x40 0000281e: DUP1 0000281f: MLOAD 00002820: SWAP3 00002821: SWAP1 00002822: SWAP4 00002823: AND 00002824: DUP1 00002825: DUP4 00002826: MSTORE 00002827: PUSH1 0x20 00002829: DUP4 0000282a: ADD 0000282b: SWAP2 0000282c: SWAP1 0000282d: SWAP2 0000282e: MSTORE 0000282f: SWAP3 00002830: SWAP4 00002831: POP 00002832: PUSH32 0x16b868fbc781d6e3d8bd0c215f5d4242c64cd980d5cc49e6af28efa52ad0ca2d 00002853: SWAP2 00002854: ADD 00002855: PUSH1 0x40 00002857: MLOAD 00002858: DUP1 00002859: SWAP2 0000285a: SUB 0000285b: SWAP1 0000285c: LOG1 0000285d: POP 0000285e: POP 0000285f: POP 00002860: JUMP 00002861: JUMPDEST 00002862: PUSH0 00002863: DUP1 00002864: MLOAD 00002865: PUSH1 0x20 00002867: PUSH2 0x4b12 0000286a: DUP4 0000286b: CODECOPY 0000286c: DUP2 0000286d: MLOAD 0000286e: SWAP2 0000286f: MSTORE 00002870: DUP1 00002871: SLOAD 00002872: PUSH1 0x01 00002874: NOT 00002875: ADD 00002876: PUSH2 0x2892 00002879: JUMPI 0000287a: PUSH1 0x40 0000287c: MLOAD 0000287d: PUSH4 0x3ee5aeb5 00002882: PUSH1 0xe0 00002884: SHL 00002885: DUP2 00002886: MSTORE 00002887: PUSH1 0x04 00002889: ADD 0000288a: PUSH1 0x40 0000288c: MLOAD 0000288d: DUP1 0000288e: SWAP2 0000288f: SUB 00002890: SWAP1 00002891: REVERT 00002892: JUMPDEST 00002893: PUSH1 0x02 00002895: SWAP1 00002896: SSTORE 00002897: JUMP 00002898: JUMPDEST 00002899: PUSH2 0x28a0 0000289c: PUSH2 0x2664 0000289f: JUMP 000028a0: JUMPDEST 000028a1: PUSH1 0x01 000028a3: PUSH1 0x01 000028a5: PUSH1 0xa0 000028a7: SHL 000028a8: SUB 000028a9: DUP8 000028aa: AND 000028ab: PUSH0 000028ac: SWAP1 000028ad: DUP2 000028ae: MSTORE 000028af: PUSH1 0x20 000028b1: SWAP2 000028b2: SWAP1 000028b3: SWAP2 000028b4: MSTORE 000028b5: PUSH1 0x40 000028b7: SWAP1 000028b8: KECCAK256 000028b9: PUSH1 0x01 000028bb: ADD 000028bc: SLOAD 000028bd: PUSH1 0xff 000028bf: AND 000028c0: PUSH2 0x28dc 000028c3: JUMPI 000028c4: PUSH1 0x40 000028c6: MLOAD 000028c7: PUSH4 0xf611219f 000028cc: PUSH1 0xe0 000028ce: SHL 000028cf: DUP2 000028d0: MSTORE 000028d1: PUSH1 0x04 000028d3: ADD 000028d4: PUSH1 0x40 000028d6: MLOAD 000028d7: DUP1 000028d8: SWAP2 000028d9: SUB 000028da: SWAP1 000028db: REVERT 000028dc: JUMPDEST 000028dd: PUSH2 0x28e5 000028e0: DUP2 000028e1: PUSH2 0x312e 000028e4: JUMP 000028e5: JUMPDEST 000028e6: PUSH2 0x28f1 000028e9: DUP7 000028ea: DUP7 000028eb: ADDRESS 000028ec: DUP7 000028ed: PUSH2 0x3169 000028f0: JUMP 000028f1: JUMPDEST 000028f2: PUSH2 0x28fb 000028f5: DUP5 000028f6: DUP4 000028f7: PUSH2 0x31c3 000028fa: JUMP 000028fb: JUMPDEST 000028fc: DUP4 000028fd: PUSH1 0x01 000028ff: PUSH1 0x01 00002901: PUSH1 0xa0 00002903: SHL 00002904: SUB 00002905: AND 00002906: DUP6 00002907: PUSH1 0x01 00002909: PUSH1 0x01 0000290b: PUSH1 0xa0 0000290d: SHL 0000290e: SUB 0000290f: AND 00002910: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 00002931: DUP6 00002932: DUP6 00002933: PUSH1 0x40 00002935: MLOAD 00002936: PUSH2 0x2949 00002939: SWAP3 0000293a: SWAP2 0000293b: SWAP1 0000293c: SWAP2 0000293d: DUP3 0000293e: MSTORE 0000293f: PUSH1 0x20 00002941: DUP3 00002942: ADD 00002943: MSTORE 00002944: PUSH1 0x40 00002946: ADD 00002947: SWAP1 00002948: JUMP 00002949: JUMPDEST 0000294a: PUSH1 0x40 0000294c: MLOAD 0000294d: DUP1 0000294e: SWAP2 0000294f: SUB 00002950: SWAP1 00002951: LOG3 00002952: PUSH1 0x40 00002954: DUP1 00002955: MLOAD 00002956: DUP5 00002957: DUP2 00002958: MSTORE 00002959: PUSH1 0x20 0000295b: DUP2 0000295c: ADD 0000295d: DUP4 0000295e: SWAP1 0000295f: MSTORE 00002960: SWAP1 00002961: DUP2 00002962: ADD 00002963: DUP4 00002964: SWAP1 00002965: MSTORE 00002966: PUSH1 0x01 00002968: PUSH1 0x01 0000296a: PUSH1 0xa0 0000296c: SHL 0000296d: SUB 0000296e: DUP1 0000296f: DUP9 00002970: AND 00002971: SWAP2 00002972: DUP7 00002973: DUP3 00002974: AND 00002975: SWAP2 00002976: DUP9 00002977: AND 00002978: SWAP1 00002979: PUSH32 0x443cf97e1e2a6c5f9dc9b6c13c06ced619c4b379f078138f493da980d2f6096c 0000299a: SWAP1 0000299b: PUSH1 0x60 0000299d: ADD 0000299e: JUMPDEST 0000299f: PUSH1 0x40 000029a1: MLOAD 000029a2: DUP1 000029a3: SWAP2 000029a4: SUB 000029a5: SWAP1 000029a6: LOG4 000029a7: POP 000029a8: POP 000029a9: POP 000029aa: POP 000029ab: POP 000029ac: POP 000029ad: JUMP 000029ae: JUMPDEST 000029af: PUSH1 0x01 000029b1: PUSH0 000029b2: DUP1 000029b3: MLOAD 000029b4: PUSH1 0x20 000029b6: PUSH2 0x4b12 000029b9: DUP4 000029ba: CODECOPY 000029bb: DUP2 000029bc: MLOAD 000029bd: SWAP2 000029be: MSTORE 000029bf: SSTORE 000029c0: JUMP 000029c1: JUMPDEST 000029c2: PUSH0 000029c3: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 000029d8: PUSH4 0x343ddaa3 000029dd: PUSH1 0x40 000029df: MLOAD 000029e0: DUP2 000029e1: PUSH4 0xffffffff 000029e6: AND 000029e7: PUSH1 0xe0 000029e9: SHL 000029ea: DUP2 000029eb: MSTORE 000029ec: PUSH1 0x04 000029ee: ADD 000029ef: PUSH1 0x20 000029f1: PUSH1 0x40 000029f3: MLOAD 000029f4: DUP1 000029f5: DUP4 000029f6: SUB 000029f7: DUP2 000029f8: DUP7 000029f9: GAS 000029fa: DELEGATECALL 000029fb: ISZERO 000029fc: DUP1 000029fd: ISZERO 000029fe: PUSH2 0x0e55 00002a01: JUMPI 00002a02: RETURNDATASIZE 00002a03: PUSH0 00002a04: DUP1 00002a05: RETURNDATACOPY 00002a06: RETURNDATASIZE 00002a07: PUSH0 00002a08: REVERT 00002a09: JUMPDEST 00002a0a: PUSH0 00002a0b: PUSH2 0x2a12 00002a0e: PUSH2 0x173e 00002a11: JUMP 00002a12: JUMPDEST 00002a13: SWAP1 00002a14: POP 00002a15: DUP1 00002a16: PUSH2 0x2a1d 00002a19: PUSH2 0x2331 00002a1c: JUMP 00002a1d: JUMPDEST 00002a1e: SSTORE 00002a1f: PUSH1 0x40 00002a21: DUP1 00002a22: MLOAD 00002a23: TIMESTAMP 00002a24: DUP2 00002a25: MSTORE 00002a26: PUSH1 0x20 00002a28: DUP2 00002a29: ADD 00002a2a: DUP4 00002a2b: SWAP1 00002a2c: MSTORE 00002a2d: PUSH32 0x68bcc4a666aaecf2318c45a7b9d7cc98a6a117123def23383037779ce49bb690 00002a4e: SWAP2 00002a4f: ADD 00002a50: PUSH1 0x40 00002a52: MLOAD 00002a53: DUP1 00002a54: SWAP2 00002a55: SUB 00002a56: SWAP1 00002a57: LOG1 00002a58: POP 00002a59: JUMP 00002a5a: JUMPDEST 00002a5b: PUSH2 0x2a64 00002a5e: DUP8 00002a5f: DUP8 00002a60: PUSH2 0x31f7 00002a63: JUMP 00002a64: JUMPDEST 00002a65: PUSH2 0x2a6c 00002a68: PUSH2 0x3209 00002a6b: JUMP 00002a6c: JUMPDEST 00002a6d: PUSH2 0x2a74 00002a70: PUSH2 0x3211 00002a73: JUMP 00002a74: JUMPDEST 00002a75: PUSH2 0x2a7e 00002a78: PUSH0 00002a79: DUP10 00002a7a: PUSH2 0x25c3 00002a7d: JUMP 00002a7e: JUMPDEST 00002a7f: POP 00002a80: PUSH0 00002a81: PUSH2 0x2a88 00002a84: PUSH2 0x2331 00002a87: JUMP 00002a88: JUMPDEST 00002a89: PUSH1 0x02 00002a8b: DUP2 00002a8c: ADD 00002a8d: DUP1 00002a8e: SLOAD 00002a8f: PUSH1 0xff 00002a91: PUSH1 0xa0 00002a93: SHL 00002a94: NOT 00002a95: AND 00002a96: PUSH1 0x01 00002a98: PUSH1 0xa0 00002a9a: SHL 00002a9b: DUP9 00002a9c: ISZERO 00002a9d: ISZERO 00002a9e: MUL 00002a9f: OR 00002aa0: SWAP1 00002aa1: SSTORE 00002aa2: SWAP1 00002aa3: POP 00002aa4: PUSH1 0xff 00002aa6: DUP7 00002aa7: AND 00002aa8: PUSH0 00002aa9: SUB 00002aaa: PUSH2 0x2ac6 00002aad: JUMPI 00002aae: PUSH1 0x40 00002ab0: MLOAD 00002ab1: PUSH4 0x0692acc5 00002ab6: PUSH1 0xe5 00002ab8: SHL 00002ab9: DUP2 00002aba: MSTORE 00002abb: PUSH1 0x04 00002abd: ADD 00002abe: PUSH1 0x40 00002ac0: MLOAD 00002ac1: DUP1 00002ac2: SWAP2 00002ac3: SUB 00002ac4: SWAP1 00002ac5: REVERT 00002ac6: JUMPDEST 00002ac7: PUSH1 0x02 00002ac9: DUP2 00002aca: ADD 00002acb: DUP1 00002acc: SLOAD 00002acd: PUSH2 0xffff 00002ad0: PUSH1 0xa8 00002ad2: SHL 00002ad3: NOT 00002ad4: AND 00002ad5: PUSH1 0x01 00002ad7: PUSH1 0xa8 00002ad9: SHL 00002ada: PUSH1 0xff 00002adc: DUP10 00002add: AND 00002ade: MUL 00002adf: PUSH1 0xff 00002ae1: PUSH1 0xb0 00002ae3: SHL 00002ae4: NOT 00002ae5: AND 00002ae6: OR 00002ae7: PUSH1 0x01 00002ae9: PUSH1 0xb0 00002aeb: SHL 00002aec: DUP7 00002aed: ISZERO 00002aee: ISZERO 00002aef: MUL 00002af0: OR 00002af1: PUSH1 0xff 00002af3: PUSH1 0xb8 00002af5: SHL 00002af6: NOT 00002af7: AND 00002af8: PUSH1 0x01 00002afa: PUSH1 0xb8 00002afc: SHL 00002afd: DUP6 00002afe: ISZERO 00002aff: ISZERO 00002b00: MUL 00002b01: OR 00002b02: SWAP1 00002b03: SSTORE 00002b04: PUSH1 0x01 00002b06: DUP3 00002b07: GT 00002b08: ISZERO 00002b09: PUSH2 0x2b28 00002b0c: JUMPI 00002b0d: PUSH1 0x40 00002b0f: MLOAD 00002b10: PUSH4 0x1f92ef57 00002b15: PUSH1 0xe0 00002b17: SHL 00002b18: DUP2 00002b19: MSTORE 00002b1a: PUSH1 0x04 00002b1c: DUP2 00002b1d: ADD 00002b1e: DUP4 00002b1f: SWAP1 00002b20: MSTORE 00002b21: PUSH1 0x24 00002b23: ADD 00002b24: PUSH2 0x1b8d 00002b27: JUMP 00002b28: JUMPDEST 00002b29: PUSH1 0x03 00002b2b: ADD 00002b2c: SSTORE 00002b2d: POP 00002b2e: POP 00002b2f: POP 00002b30: POP 00002b31: POP 00002b32: POP 00002b33: POP 00002b34: JUMP 00002b35: JUMPDEST 00002b36: PUSH1 0x40 00002b38: MLOAD 00002b39: PUSH4 0x7eb79b53 00002b3e: PUSH1 0xe0 00002b40: SHL 00002b41: DUP2 00002b42: MSTORE 00002b43: PUSH1 0x04 00002b45: DUP2 00002b46: ADD 00002b47: DUP3 00002b48: SWAP1 00002b49: MSTORE 00002b4a: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002b5f: SWAP1 00002b60: PUSH4 0x7eb79b53 00002b65: SWAP1 00002b66: PUSH1 0x24 00002b68: ADD 00002b69: JUMPDEST 00002b6a: PUSH0 00002b6b: PUSH1 0x40 00002b6d: MLOAD 00002b6e: DUP1 00002b6f: DUP4 00002b70: SUB 00002b71: DUP2 00002b72: DUP7 00002b73: DUP1 00002b74: EXTCODESIZE 00002b75: ISZERO 00002b76: DUP1 00002b77: ISZERO 00002b78: PUSH2 0x2b7f 00002b7b: JUMPI 00002b7c: PUSH0 00002b7d: DUP1 00002b7e: REVERT 00002b7f: JUMPDEST 00002b80: POP 00002b81: GAS 00002b82: DELEGATECALL 00002b83: ISZERO 00002b84: DUP1 00002b85: ISZERO 00002b86: PUSH2 0x2b91 00002b89: JUMPI 00002b8a: RETURNDATASIZE 00002b8b: PUSH0 00002b8c: DUP1 00002b8d: RETURNDATACOPY 00002b8e: RETURNDATASIZE 00002b8f: PUSH0 00002b90: REVERT 00002b91: JUMPDEST 00002b92: POP 00002b93: POP 00002b94: POP 00002b95: POP 00002b96: POP 00002b97: JUMP 00002b98: JUMPDEST 00002b99: PUSH0 00002b9a: DUP1 00002b9b: PUSH32 0x5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00 00002bbc: PUSH2 0x18f7 00002bbf: JUMP 00002bc0: JUMPDEST 00002bc1: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102 00002be2: DUP1 00002be3: SLOAD 00002be4: PUSH1 0x60 00002be6: SWAP2 00002be7: PUSH0 00002be8: DUP1 00002be9: MLOAD 00002bea: PUSH1 0x20 00002bec: PUSH2 0x4ab2 00002bef: DUP4 00002bf0: CODECOPY 00002bf1: DUP2 00002bf2: MLOAD 00002bf3: SWAP2 00002bf4: MSTORE 00002bf5: SWAP2 00002bf6: PUSH2 0x0ee9 00002bf9: SWAP1 00002bfa: PUSH2 0x4164 00002bfd: JUMP 00002bfe: JUMPDEST 00002bff: PUSH1 0x60 00002c01: PUSH0 00002c02: PUSH0 00002c03: DUP1 00002c04: MLOAD 00002c05: PUSH1 0x20 00002c07: PUSH2 0x4ab2 00002c0a: DUP4 00002c0b: CODECOPY 00002c0c: DUP2 00002c0d: MLOAD 00002c0e: SWAP2 00002c0f: MSTORE 00002c10: PUSH2 0x0ed8 00002c13: JUMP 00002c14: JUMPDEST 00002c15: PUSH0 00002c16: PUSH2 0x1263 00002c19: DUP3 00002c1a: PUSH2 0x2c27 00002c1d: PUSH4 0x05f5e100 00002c22: DUP3 00002c23: PUSH2 0x41b0 00002c26: JUMP 00002c27: JUMPDEST 00002c28: DUP6 00002c29: SWAP2 00002c2a: SWAP1 00002c2b: PUSH1 0x01 00002c2d: PUSH2 0x3221 00002c30: JUMP 00002c31: JUMPDEST 00002c32: PUSH0 00002c33: PUSH2 0x2c3a 00002c36: PUSH2 0x2331 00002c39: JUMP 00002c3a: JUMPDEST 00002c3b: SWAP1 00002c3c: POP 00002c3d: PUSH2 0x2cd3 00002c40: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002c55: PUSH4 0x7fa38e51 00002c5a: PUSH2 0x2c61 00002c5d: PUSH2 0x142d 00002c60: JUMP 00002c61: JUMPDEST 00002c62: PUSH1 0x40 00002c64: MLOAD 00002c65: PUSH1 0x01 00002c67: PUSH1 0x01 00002c69: PUSH1 0xe0 00002c6b: SHL 00002c6c: SUB 00002c6d: NOT 00002c6e: PUSH1 0xe0 00002c70: DUP5 00002c71: SWAP1 00002c72: SHL 00002c73: AND 00002c74: DUP2 00002c75: MSTORE 00002c76: PUSH1 0x01 00002c78: PUSH1 0x01 00002c7a: PUSH1 0xa0 00002c7c: SHL 00002c7d: SUB 00002c7e: SWAP1 00002c7f: SWAP2 00002c80: AND 00002c81: PUSH1 0x04 00002c83: DUP3 00002c84: ADD 00002c85: MSTORE 00002c86: PUSH1 0x24 00002c88: DUP2 00002c89: ADD 00002c8a: DUP8 00002c8b: SWAP1 00002c8c: MSTORE 00002c8d: PUSH1 0x44 00002c8f: ADD 00002c90: PUSH1 0x20 00002c92: PUSH1 0x40 00002c94: MLOAD 00002c95: DUP1 00002c96: DUP4 00002c97: SUB 00002c98: DUP2 00002c99: DUP7 00002c9a: GAS 00002c9b: DELEGATECALL 00002c9c: ISZERO 00002c9d: DUP1 00002c9e: ISZERO 00002c9f: PUSH2 0x2caa 00002ca2: JUMPI 00002ca3: RETURNDATASIZE 00002ca4: PUSH0 00002ca5: DUP1 00002ca6: RETURNDATACOPY 00002ca7: RETURNDATASIZE 00002ca8: PUSH0 00002ca9: REVERT 00002caa: JUMPDEST 00002cab: POP 00002cac: POP 00002cad: POP 00002cae: POP 00002caf: PUSH1 0x40 00002cb1: MLOAD 00002cb2: RETURNDATASIZE 00002cb3: PUSH1 0x1f 00002cb5: NOT 00002cb6: PUSH1 0x1f 00002cb8: DUP3 00002cb9: ADD 00002cba: AND 00002cbb: DUP3 00002cbc: ADD 00002cbd: DUP1 00002cbe: PUSH1 0x40 00002cc0: MSTORE 00002cc1: POP 00002cc2: DUP2 00002cc3: ADD 00002cc4: SWAP1 00002cc5: PUSH2 0x2cce 00002cc8: SWAP2 00002cc9: SWAP1 00002cca: PUSH2 0x414d 00002ccd: JUMP 00002cce: JUMPDEST 00002ccf: PUSH2 0x326e 00002cd2: JUMP 00002cd3: JUMPDEST 00002cd4: DUP4 00002cd5: PUSH1 0x01 00002cd7: PUSH1 0x01 00002cd9: PUSH1 0xa0 00002cdb: SHL 00002cdc: SUB 00002cdd: AND 00002cde: DUP7 00002cdf: PUSH1 0x01 00002ce1: PUSH1 0x01 00002ce3: PUSH1 0xa0 00002ce5: SHL 00002ce6: SUB 00002ce7: AND 00002ce8: EQ 00002ce9: PUSH2 0x2cf7 00002cec: JUMPI 00002ced: PUSH2 0x2cf7 00002cf0: DUP5 00002cf1: DUP8 00002cf2: DUP5 00002cf3: PUSH2 0x249f 00002cf6: JUMP 00002cf7: JUMPDEST 00002cf8: PUSH2 0x2d01 00002cfb: DUP5 00002cfc: DUP4 00002cfd: PUSH2 0x32a6 00002d00: JUMP 00002d01: JUMPDEST 00002d02: PUSH1 0x02 00002d04: DUP2 00002d05: ADD 00002d06: SLOAD 00002d07: PUSH1 0x40 00002d09: MLOAD 00002d0a: PUSH4 0x2d182be5 00002d0f: PUSH1 0xe2 00002d11: SHL 00002d12: DUP2 00002d13: MSTORE 00002d14: PUSH1 0x04 00002d16: DUP2 00002d17: ADD 00002d18: DUP6 00002d19: SWAP1 00002d1a: MSTORE 00002d1b: PUSH1 0x01 00002d1d: PUSH1 0x01 00002d1f: PUSH1 0xa0 00002d21: SHL 00002d22: SUB 00002d23: DUP8 00002d24: DUP2 00002d25: AND 00002d26: PUSH1 0x24 00002d28: DUP4 00002d29: ADD 00002d2a: MSTORE 00002d2b: ADDRESS 00002d2c: PUSH1 0x44 00002d2e: DUP4 00002d2f: ADD 00002d30: MSTORE 00002d31: SWAP1 00002d32: SWAP2 00002d33: AND 00002d34: SWAP1 00002d35: PUSH4 0xb460af94 00002d3a: SWAP1 00002d3b: PUSH1 0x64 00002d3d: ADD 00002d3e: PUSH1 0x20 00002d40: PUSH1 0x40 00002d42: MLOAD 00002d43: DUP1 00002d44: DUP4 00002d45: SUB 00002d46: DUP2 00002d47: PUSH0 00002d48: DUP8 00002d49: GAS 00002d4a: CALL 00002d4b: ISZERO 00002d4c: DUP1 00002d4d: ISZERO 00002d4e: PUSH2 0x2d59 00002d51: JUMPI 00002d52: RETURNDATASIZE 00002d53: PUSH0 00002d54: DUP1 00002d55: RETURNDATACOPY 00002d56: RETURNDATASIZE 00002d57: PUSH0 00002d58: REVERT 00002d59: JUMPDEST 00002d5a: POP 00002d5b: POP 00002d5c: POP 00002d5d: POP 00002d5e: PUSH1 0x40 00002d60: MLOAD 00002d61: RETURNDATASIZE 00002d62: PUSH1 0x1f 00002d64: NOT 00002d65: PUSH1 0x1f 00002d67: DUP3 00002d68: ADD 00002d69: AND 00002d6a: DUP3 00002d6b: ADD 00002d6c: DUP1 00002d6d: PUSH1 0x40 00002d6f: MSTORE 00002d70: POP 00002d71: DUP2 00002d72: ADD 00002d73: SWAP1 00002d74: PUSH2 0x2d7d 00002d77: SWAP2 00002d78: SWAP1 00002d79: PUSH2 0x414d 00002d7c: JUMP 00002d7d: JUMPDEST 00002d7e: POP 00002d7f: DUP4 00002d80: PUSH1 0x01 00002d82: PUSH1 0x01 00002d84: PUSH1 0xa0 00002d86: SHL 00002d87: SUB 00002d88: AND 00002d89: DUP6 00002d8a: PUSH1 0x01 00002d8c: PUSH1 0x01 00002d8e: PUSH1 0xa0 00002d90: SHL 00002d91: SUB 00002d92: AND 00002d93: DUP8 00002d94: PUSH1 0x01 00002d96: PUSH1 0x01 00002d98: PUSH1 0xa0 00002d9a: SHL 00002d9b: SUB 00002d9c: AND 00002d9d: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db 00002dbe: DUP7 00002dbf: DUP7 00002dc0: PUSH1 0x40 00002dc2: MLOAD 00002dc3: PUSH2 0x299e 00002dc6: SWAP3 00002dc7: SWAP2 00002dc8: SWAP1 00002dc9: SWAP2 00002dca: DUP3 00002dcb: MSTORE 00002dcc: PUSH1 0x20 00002dce: DUP3 00002dcf: ADD 00002dd0: MSTORE 00002dd1: PUSH1 0x40 00002dd3: ADD 00002dd4: SWAP1 00002dd5: JUMP 00002dd6: JUMPDEST 00002dd7: PUSH1 0x40 00002dd9: MLOAD 00002dda: PUSH4 0x0de23aad 00002ddf: PUSH1 0xe4 00002de1: SHL 00002de2: DUP2 00002de3: MSTORE 00002de4: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00002df9: SWAP1 00002dfa: PUSH4 0xde23aad0 00002dff: SWAP1 00002e00: PUSH2 0x1fa6 00002e03: SWAP1 00002e04: DUP6 00002e05: SWAP1 00002e06: DUP6 00002e07: SWAP1 00002e08: PUSH1 0x04 00002e0a: ADD 00002e0b: PUSH2 0x4910 00002e0e: JUMP 00002e0f: JUMPDEST 00002e10: PUSH0 00002e11: PUSH2 0x0eae 00002e14: PUSH2 0x2e1b 00002e17: PUSH2 0x273a 00002e1a: JUMP 00002e1b: JUMPDEST 00002e1c: DUP4 00002e1d: PUSH1 0x40 00002e1f: MLOAD 00002e20: PUSH2 0x1901 00002e23: PUSH1 0xf0 00002e25: SHL 00002e26: DUP2 00002e27: MSTORE 00002e28: PUSH1 0x02 00002e2a: DUP2 00002e2b: ADD 00002e2c: SWAP3 00002e2d: SWAP1 00002e2e: SWAP3 00002e2f: MSTORE 00002e30: PUSH1 0x22 00002e32: DUP3 00002e33: ADD 00002e34: MSTORE 00002e35: PUSH1 0x42 00002e37: SWAP1 00002e38: KECCAK256 00002e39: SWAP1 00002e3a: JUMP 00002e3b: JUMPDEST 00002e3c: PUSH0 00002e3d: DUP1 00002e3e: PUSH0 00002e3f: DUP1 00002e40: PUSH2 0x2e4b 00002e43: DUP9 00002e44: DUP9 00002e45: DUP9 00002e46: DUP9 00002e47: PUSH2 0x32da 00002e4a: JUMP 00002e4b: JUMPDEST 00002e4c: SWAP3 00002e4d: POP 00002e4e: SWAP3 00002e4f: POP 00002e50: SWAP3 00002e51: POP 00002e52: PUSH2 0x2e5b 00002e55: DUP3 00002e56: DUP3 00002e57: PUSH2 0x33a2 00002e5a: JUMP 00002e5b: JUMPDEST 00002e5c: POP 00002e5d: SWAP1 00002e5e: SWAP7 00002e5f: SWAP6 00002e60: POP 00002e61: POP 00002e62: POP 00002e63: POP 00002e64: POP 00002e65: POP 00002e66: JUMP 00002e67: JUMPDEST 00002e68: PUSH0 00002e69: PUSH2 0x1263 00002e6c: DUP4 00002e6d: DUP4 00002e6e: PUSH4 0x05f5e100 00002e73: PUSH1 0x01 00002e75: PUSH2 0x3221 00002e78: JUMP 00002e79: JUMPDEST 00002e7a: PUSH0 00002e7b: DUP1 00002e7c: MLOAD 00002e7d: PUSH1 0x20 00002e7f: PUSH2 0x4a92 00002e82: DUP4 00002e83: CODECOPY 00002e84: DUP2 00002e85: MLOAD 00002e86: SWAP2 00002e87: MSTORE 00002e88: PUSH1 0x01 00002e8a: PUSH1 0x01 00002e8c: PUSH1 0xa0 00002e8e: SHL 00002e8f: SUB 00002e90: DUP6 00002e91: AND 00002e92: PUSH2 0x2eb0 00002e95: JUMPI 00002e96: PUSH1 0x40 00002e98: MLOAD 00002e99: PUSH4 0xe602df05 00002e9e: PUSH1 0xe0 00002ea0: SHL 00002ea1: DUP2 00002ea2: MSTORE 00002ea3: PUSH0 00002ea4: PUSH1 0x04 00002ea6: DUP3 00002ea7: ADD 00002ea8: MSTORE 00002ea9: PUSH1 0x24 00002eab: ADD 00002eac: PUSH2 0x1b8d 00002eaf: JUMP 00002eb0: JUMPDEST 00002eb1: PUSH1 0x01 00002eb3: PUSH1 0x01 00002eb5: PUSH1 0xa0 00002eb7: SHL 00002eb8: SUB 00002eb9: DUP5 00002eba: AND 00002ebb: PUSH2 0x2ed9 00002ebe: JUMPI 00002ebf: PUSH1 0x40 00002ec1: MLOAD 00002ec2: PUSH4 0x4a1406b1 00002ec7: PUSH1 0xe1 00002ec9: SHL 00002eca: DUP2 00002ecb: MSTORE 00002ecc: PUSH0 00002ecd: PUSH1 0x04 00002ecf: DUP3 00002ed0: ADD 00002ed1: MSTORE 00002ed2: PUSH1 0x24 00002ed4: ADD 00002ed5: PUSH2 0x1b8d 00002ed8: JUMP 00002ed9: JUMPDEST 00002eda: PUSH1 0x01 00002edc: PUSH1 0x01 00002ede: PUSH1 0xa0 00002ee0: SHL 00002ee1: SUB 00002ee2: DUP1 00002ee3: DUP7 00002ee4: AND 00002ee5: PUSH0 00002ee6: SWAP1 00002ee7: DUP2 00002ee8: MSTORE 00002ee9: PUSH1 0x01 00002eeb: DUP4 00002eec: ADD 00002eed: PUSH1 0x20 00002eef: SWAP1 00002ef0: DUP2 00002ef1: MSTORE 00002ef2: PUSH1 0x40 00002ef4: DUP1 00002ef5: DUP4 00002ef6: KECCAK256 00002ef7: SWAP4 00002ef8: DUP9 00002ef9: AND 00002efa: DUP4 00002efb: MSTORE 00002efc: SWAP3 00002efd: SWAP1 00002efe: MSTORE 00002eff: KECCAK256 00002f00: DUP4 00002f01: SWAP1 00002f02: SSTORE 00002f03: DUP2 00002f04: ISZERO 00002f05: PUSH2 0x2b91 00002f08: JUMPI 00002f09: DUP4 00002f0a: PUSH1 0x01 00002f0c: PUSH1 0x01 00002f0e: PUSH1 0xa0 00002f10: SHL 00002f11: SUB 00002f12: AND 00002f13: DUP6 00002f14: PUSH1 0x01 00002f16: PUSH1 0x01 00002f18: PUSH1 0xa0 00002f1a: SHL 00002f1b: SUB 00002f1c: AND 00002f1d: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00002f3e: DUP6 00002f3f: PUSH1 0x40 00002f41: MLOAD 00002f42: PUSH2 0x2f4d 00002f45: SWAP2 00002f46: DUP2 00002f47: MSTORE 00002f48: PUSH1 0x20 00002f4a: ADD 00002f4b: SWAP1 00002f4c: JUMP 00002f4d: JUMPDEST 00002f4e: PUSH1 0x40 00002f50: MLOAD 00002f51: DUP1 00002f52: SWAP2 00002f53: SUB 00002f54: SWAP1 00002f55: LOG3 00002f56: POP 00002f57: POP 00002f58: POP 00002f59: POP 00002f5a: POP 00002f5b: JUMP 00002f5c: JUMPDEST 00002f5d: PUSH2 0x2f66 00002f60: DUP3 00002f61: DUP3 00002f62: PUSH2 0x1bd0 00002f65: JUMP 00002f66: JUMPDEST 00002f67: PUSH2 0x14a1 00002f6a: JUMPI 00002f6b: PUSH1 0x40 00002f6d: MLOAD 00002f6e: PUSH4 0xe2517d3f 00002f73: PUSH1 0xe0 00002f75: SHL 00002f76: DUP2 00002f77: MSTORE 00002f78: PUSH1 0x01 00002f7a: PUSH1 0x01 00002f7c: PUSH1 0xa0 00002f7e: SHL 00002f7f: SUB 00002f80: DUP3 00002f81: AND 00002f82: PUSH1 0x04 00002f84: DUP3 00002f85: ADD 00002f86: MSTORE 00002f87: PUSH1 0x24 00002f89: DUP2 00002f8a: ADD 00002f8b: DUP4 00002f8c: SWAP1 00002f8d: MSTORE 00002f8e: PUSH1 0x44 00002f90: ADD 00002f91: PUSH2 0x1b8d 00002f94: JUMP 00002f95: JUMPDEST 00002f96: PUSH0 00002f97: DUP1 00002f98: MLOAD 00002f99: PUSH1 0x20 00002f9b: PUSH2 0x4a92 00002f9e: DUP4 00002f9f: CODECOPY 00002fa0: DUP2 00002fa1: MLOAD 00002fa2: SWAP2 00002fa3: MSTORE 00002fa4: PUSH1 0x01 00002fa6: PUSH1 0x01 00002fa8: PUSH1 0xa0 00002faa: SHL 00002fab: SUB 00002fac: DUP5 00002fad: AND 00002fae: PUSH2 0x2fcf 00002fb1: JUMPI 00002fb2: DUP2 00002fb3: DUP2 00002fb4: PUSH1 0x02 00002fb6: ADD 00002fb7: PUSH0 00002fb8: DUP3 00002fb9: DUP3 00002fba: SLOAD 00002fbb: PUSH2 0x2fc4 00002fbe: SWAP2 00002fbf: SWAP1 00002fc0: PUSH2 0x41b0 00002fc3: JUMP 00002fc4: JUMPDEST 00002fc5: SWAP1 00002fc6: SWAP2 00002fc7: SSTORE 00002fc8: POP 00002fc9: PUSH2 0x302c 00002fcc: SWAP1 00002fcd: POP 00002fce: JUMP 00002fcf: JUMPDEST 00002fd0: PUSH1 0x01 00002fd2: PUSH1 0x01 00002fd4: PUSH1 0xa0 00002fd6: SHL 00002fd7: SUB 00002fd8: DUP5 00002fd9: AND 00002fda: PUSH0 00002fdb: SWAP1 00002fdc: DUP2 00002fdd: MSTORE 00002fde: PUSH1 0x20 00002fe0: DUP3 00002fe1: SWAP1 00002fe2: MSTORE 00002fe3: PUSH1 0x40 00002fe5: SWAP1 00002fe6: KECCAK256 00002fe7: SLOAD 00002fe8: DUP3 00002fe9: DUP2 00002fea: LT 00002feb: ISZERO 00002fec: PUSH2 0x300e 00002fef: JUMPI 00002ff0: DUP5 00002ff1: DUP2 00002ff2: DUP5 00002ff3: PUSH1 0x40 00002ff5: MLOAD 00002ff6: PUSH4 0x391434e3 00002ffb: PUSH1 0xe2 00002ffd: SHL 00002ffe: DUP2 00002fff: MSTORE 00003000: PUSH1 0x04 00003002: ADD 00003003: PUSH2 0x1b8d 00003006: SWAP4 00003007: SWAP3 00003008: SWAP2 00003009: SWAP1 0000300a: PUSH2 0x445f 0000300d: JUMP 0000300e: JUMPDEST 0000300f: PUSH1 0x01 00003011: PUSH1 0x01 00003013: PUSH1 0xa0 00003015: SHL 00003016: SUB 00003017: DUP6 00003018: AND 00003019: PUSH0 0000301a: SWAP1 0000301b: DUP2 0000301c: MSTORE 0000301d: PUSH1 0x20 0000301f: DUP4 00003020: SWAP1 00003021: MSTORE 00003022: PUSH1 0x40 00003024: SWAP1 00003025: KECCAK256 00003026: SWAP1 00003027: DUP4 00003028: SWAP1 00003029: SUB 0000302a: SWAP1 0000302b: SSTORE 0000302c: JUMPDEST 0000302d: PUSH1 0x01 0000302f: PUSH1 0x01 00003031: PUSH1 0xa0 00003033: SHL 00003034: SUB 00003035: DUP4 00003036: AND 00003037: PUSH2 0x304a 0000303a: JUMPI 0000303b: PUSH1 0x02 0000303d: DUP2 0000303e: ADD 0000303f: DUP1 00003040: SLOAD 00003041: DUP4 00003042: SWAP1 00003043: SUB 00003044: SWAP1 00003045: SSTORE 00003046: PUSH2 0x3068 00003049: JUMP 0000304a: JUMPDEST 0000304b: PUSH1 0x01 0000304d: PUSH1 0x01 0000304f: PUSH1 0xa0 00003051: SHL 00003052: SUB 00003053: DUP4 00003054: AND 00003055: PUSH0 00003056: SWAP1 00003057: DUP2 00003058: MSTORE 00003059: PUSH1 0x20 0000305b: DUP3 0000305c: SWAP1 0000305d: MSTORE 0000305e: PUSH1 0x40 00003060: SWAP1 00003061: KECCAK256 00003062: DUP1 00003063: SLOAD 00003064: DUP4 00003065: ADD 00003066: SWAP1 00003067: SSTORE 00003068: JUMPDEST 00003069: DUP3 0000306a: PUSH1 0x01 0000306c: PUSH1 0x01 0000306e: PUSH1 0xa0 00003070: SHL 00003071: SUB 00003072: AND 00003073: DUP5 00003074: PUSH1 0x01 00003076: PUSH1 0x01 00003078: PUSH1 0xa0 0000307a: SHL 0000307b: SUB 0000307c: AND 0000307d: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000309e: DUP5 0000309f: PUSH1 0x40 000030a1: MLOAD 000030a2: PUSH2 0x30ad 000030a5: SWAP2 000030a6: DUP2 000030a7: MSTORE 000030a8: PUSH1 0x20 000030aa: ADD 000030ab: SWAP1 000030ac: JUMP 000030ad: JUMPDEST 000030ae: PUSH1 0x40 000030b0: MLOAD 000030b1: DUP1 000030b2: SWAP2 000030b3: SUB 000030b4: SWAP1 000030b5: LOG3 000030b6: POP 000030b7: POP 000030b8: POP 000030b9: POP 000030ba: JUMP 000030bb: JUMPDEST 000030bc: PUSH0 000030bd: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 000030de: PUSH2 0x30e5 000030e1: PUSH2 0x345a 000030e4: JUMP 000030e5: JUMPDEST 000030e6: PUSH2 0x30ed 000030e9: PUSH2 0x34c2 000030ec: JUMP 000030ed: JUMPDEST 000030ee: PUSH1 0x40 000030f0: DUP1 000030f1: MLOAD 000030f2: PUSH1 0x20 000030f4: DUP2 000030f5: ADD 000030f6: SWAP5 000030f7: SWAP1 000030f8: SWAP5 000030f9: MSTORE 000030fa: DUP4 000030fb: ADD 000030fc: SWAP2 000030fd: SWAP1 000030fe: SWAP2 000030ff: MSTORE 00003100: PUSH1 0x60 00003102: DUP3 00003103: ADD 00003104: MSTORE 00003105: CHAINID 00003106: PUSH1 0x80 00003108: DUP3 00003109: ADD 0000310a: MSTORE 0000310b: ADDRESS 0000310c: PUSH1 0xa0 0000310e: DUP3 0000310f: ADD 00003110: MSTORE 00003111: PUSH1 0xc0 00003113: ADD 00003114: PUSH1 0x40 00003116: MLOAD 00003117: PUSH1 0x20 00003119: DUP2 0000311a: DUP4 0000311b: SUB 0000311c: SUB 0000311d: DUP2 0000311e: MSTORE 0000311f: SWAP1 00003120: PUSH1 0x40 00003122: MSTORE 00003123: DUP1 00003124: MLOAD 00003125: SWAP1 00003126: PUSH1 0x20 00003128: ADD 00003129: KECCAK256 0000312a: SWAP1 0000312b: POP 0000312c: SWAP1 0000312d: JUMP 0000312e: JUMPDEST 0000312f: PUSH1 0x40 00003131: MLOAD 00003132: PUSH1 0x01 00003134: PUSH3 0x641047 00003138: PUSH1 0xe1 0000313a: SHL 0000313b: SUB 0000313c: NOT 0000313d: DUP2 0000313e: MSTORE 0000313f: PUSH1 0x04 00003141: DUP2 00003142: ADD 00003143: DUP3 00003144: SWAP1 00003145: MSTORE 00003146: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 0000315b: SWAP1 0000315c: PUSH4 0xff37df72 00003161: SWAP1 00003162: PUSH1 0x24 00003164: ADD 00003165: PUSH2 0x2b69 00003168: JUMP 00003169: JUMPDEST 0000316a: PUSH1 0x40 0000316c: DUP1 0000316d: MLOAD 0000316e: PUSH1 0x01 00003170: PUSH1 0x01 00003172: PUSH1 0xa0 00003174: SHL 00003175: SUB 00003176: DUP6 00003177: DUP2 00003178: AND 00003179: PUSH1 0x24 0000317b: DUP4 0000317c: ADD 0000317d: MSTORE 0000317e: DUP5 0000317f: AND 00003180: PUSH1 0x44 00003182: DUP3 00003183: ADD 00003184: MSTORE 00003185: PUSH1 0x64 00003187: DUP1 00003188: DUP3 00003189: ADD 0000318a: DUP5 0000318b: SWAP1 0000318c: MSTORE 0000318d: DUP3 0000318e: MLOAD 0000318f: DUP1 00003190: DUP4 00003191: SUB 00003192: SWAP1 00003193: SWAP2 00003194: ADD 00003195: DUP2 00003196: MSTORE 00003197: PUSH1 0x84 00003199: SWAP1 0000319a: SWAP2 0000319b: ADD 0000319c: SWAP1 0000319d: SWAP2 0000319e: MSTORE 0000319f: PUSH1 0x20 000031a1: DUP2 000031a2: ADD 000031a3: DUP1 000031a4: MLOAD 000031a5: PUSH1 0x01 000031a7: PUSH1 0x01 000031a9: PUSH1 0xe0 000031ab: SHL 000031ac: SUB 000031ad: AND 000031ae: PUSH4 0x23b872dd 000031b3: PUSH1 0xe0 000031b5: SHL 000031b6: OR 000031b7: SWAP1 000031b8: MSTORE 000031b9: PUSH2 0x132c 000031bc: SWAP1 000031bd: DUP6 000031be: SWAP1 000031bf: PUSH2 0x3504 000031c2: JUMP 000031c3: JUMPDEST 000031c4: PUSH1 0x01 000031c6: PUSH1 0x01 000031c8: PUSH1 0xa0 000031ca: SHL 000031cb: SUB 000031cc: DUP3 000031cd: AND 000031ce: PUSH2 0x31ec 000031d1: JUMPI 000031d2: PUSH1 0x40 000031d4: MLOAD 000031d5: PUSH4 0xec442f05 000031da: PUSH1 0xe0 000031dc: SHL 000031dd: DUP2 000031de: MSTORE 000031df: PUSH0 000031e0: PUSH1 0x04 000031e2: DUP3 000031e3: ADD 000031e4: MSTORE 000031e5: PUSH1 0x24 000031e7: ADD 000031e8: PUSH2 0x1b8d 000031eb: JUMP 000031ec: JUMPDEST 000031ed: PUSH2 0x14a1 000031f0: PUSH0 000031f1: DUP4 000031f2: DUP4 000031f3: PUSH2 0x2f95 000031f6: JUMP 000031f7: JUMPDEST 000031f8: PUSH2 0x31ff 000031fb: PUSH2 0x3565 000031fe: JUMP 000031ff: JUMPDEST 00003200: PUSH2 0x14a1 00003203: DUP3 00003204: DUP3 00003205: PUSH2 0x35ae 00003208: JUMP 00003209: JUMPDEST 0000320a: PUSH2 0x2277 0000320d: PUSH2 0x3565 00003210: JUMP 00003211: JUMPDEST 00003212: PUSH2 0x3219 00003215: PUSH2 0x3565 00003218: JUMP 00003219: JUMPDEST 0000321a: PUSH2 0x2277 0000321d: PUSH2 0x35fe 00003220: JUMP 00003221: JUMPDEST 00003222: PUSH0 00003223: DUP1 00003224: PUSH2 0x322e 00003227: DUP7 00003228: DUP7 00003229: DUP7 0000322a: PUSH2 0x3606 0000322d: JUMP 0000322e: JUMPDEST 0000322f: SWAP1 00003230: POP 00003231: PUSH2 0x3239 00003234: DUP4 00003235: PUSH2 0x36c5 00003238: JUMP 00003239: JUMPDEST 0000323a: DUP1 0000323b: ISZERO 0000323c: PUSH2 0x3254 0000323f: JUMPI 00003240: POP 00003241: PUSH0 00003242: DUP5 00003243: DUP1 00003244: PUSH2 0x324f 00003247: JUMPI 00003248: PUSH2 0x324f 0000324b: PUSH2 0x4932 0000324e: JUMP 0000324f: JUMPDEST 00003250: DUP7 00003251: DUP9 00003252: MULMOD 00003253: GT 00003254: JUMPDEST 00003255: ISZERO 00003256: PUSH2 0x1f37 00003259: JUMPI 0000325a: PUSH2 0x3264 0000325d: PUSH1 0x01 0000325f: DUP3 00003260: PUSH2 0x41b0 00003263: JUMP 00003264: JUMPDEST 00003265: SWAP7 00003266: SWAP6 00003267: POP 00003268: POP 00003269: POP 0000326a: POP 0000326b: POP 0000326c: POP 0000326d: JUMP 0000326e: JUMPDEST 0000326f: PUSH1 0x40 00003271: MLOAD 00003272: PUSH4 0x59397469 00003277: PUSH1 0xe1 00003279: SHL 0000327a: DUP2 0000327b: MSTORE 0000327c: PUSH1 0x04 0000327e: DUP2 0000327f: ADD 00003280: DUP3 00003281: SWAP1 00003282: MSTORE 00003283: PUSH20 0xe46adc117d08a5bcf70cb178b239138e1526a6b6 00003298: SWAP1 00003299: PUSH4 0xb272e8d2 0000329e: SWAP1 0000329f: PUSH1 0x24 000032a1: ADD 000032a2: PUSH2 0x2b69 000032a5: JUMP 000032a6: JUMPDEST 000032a7: PUSH1 0x01 000032a9: PUSH1 0x01 000032ab: PUSH1 0xa0 000032ad: SHL 000032ae: SUB 000032af: DUP3 000032b0: AND 000032b1: PUSH2 0x32cf 000032b4: JUMPI 000032b5: PUSH1 0x40 000032b7: MLOAD 000032b8: PUSH4 0x4b637e8f 000032bd: PUSH1 0xe1 000032bf: SHL 000032c0: DUP2 000032c1: MSTORE 000032c2: PUSH0 000032c3: PUSH1 0x04 000032c5: DUP3 000032c6: ADD 000032c7: MSTORE 000032c8: PUSH1 0x24 000032ca: ADD 000032cb: PUSH2 0x1b8d 000032ce: JUMP 000032cf: JUMPDEST 000032d0: PUSH2 0x14a1 000032d3: DUP3 000032d4: PUSH0 000032d5: DUP4 000032d6: PUSH2 0x2f95 000032d9: JUMP 000032da: JUMPDEST 000032db: PUSH0 000032dc: DUP1 000032dd: DUP1 000032de: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 000032ff: DUP5 00003300: GT 00003301: ISZERO 00003302: PUSH2 0x3313 00003305: JUMPI 00003306: POP 00003307: PUSH0 00003308: SWAP2 00003309: POP 0000330a: PUSH1 0x03 0000330c: SWAP1 0000330d: POP 0000330e: DUP3 0000330f: PUSH2 0x3398 00003312: JUMP 00003313: JUMPDEST 00003314: PUSH1 0x40 00003316: DUP1 00003317: MLOAD 00003318: PUSH0 00003319: DUP1 0000331a: DUP3 0000331b: MSTORE 0000331c: PUSH1 0x20 0000331e: DUP3 0000331f: ADD 00003320: DUP1 00003321: DUP5 00003322: MSTORE 00003323: DUP11 00003324: SWAP1 00003325: MSTORE 00003326: PUSH1 0xff 00003328: DUP10 00003329: AND 0000332a: SWAP3 0000332b: DUP3 0000332c: ADD 0000332d: SWAP3 0000332e: SWAP1 0000332f: SWAP3 00003330: MSTORE 00003331: PUSH1 0x60 00003333: DUP2 00003334: ADD 00003335: DUP8 00003336: SWAP1 00003337: MSTORE 00003338: PUSH1 0x80 0000333a: DUP2 0000333b: ADD 0000333c: DUP7 0000333d: SWAP1 0000333e: MSTORE 0000333f: PUSH1 0x01 00003341: SWAP1 00003342: PUSH1 0xa0 00003344: ADD 00003345: PUSH1 0x20 00003347: PUSH1 0x40 00003349: MLOAD 0000334a: PUSH1 0x20 0000334c: DUP2 0000334d: SUB 0000334e: SWAP1 0000334f: DUP1 00003350: DUP5 00003351: SUB 00003352: SWAP1 00003353: DUP6 00003354: GAS 00003355: STATICCALL 00003356: ISZERO 00003357: DUP1 00003358: ISZERO 00003359: PUSH2 0x3364 0000335c: JUMPI 0000335d: RETURNDATASIZE 0000335e: PUSH0 0000335f: DUP1 00003360: RETURNDATACOPY 00003361: RETURNDATASIZE 00003362: PUSH0 00003363: REVERT 00003364: JUMPDEST 00003365: POP 00003366: POP 00003367: PUSH1 0x40 00003369: MLOAD 0000336a: PUSH1 0x1f 0000336c: NOT 0000336d: ADD 0000336e: MLOAD 0000336f: SWAP2 00003370: POP 00003371: POP 00003372: PUSH1 0x01 00003374: PUSH1 0x01 00003376: PUSH1 0xa0 00003378: SHL 00003379: SUB 0000337a: DUP2 0000337b: AND 0000337c: PUSH2 0x338f 0000337f: JUMPI 00003380: POP 00003381: PUSH0 00003382: SWAP3 00003383: POP 00003384: PUSH1 0x01 00003386: SWAP2 00003387: POP 00003388: DUP3 00003389: SWAP1 0000338a: POP 0000338b: PUSH2 0x3398 0000338e: JUMP 0000338f: JUMPDEST 00003390: SWAP3 00003391: POP 00003392: PUSH0 00003393: SWAP2 00003394: POP 00003395: DUP2 00003396: SWAP1 00003397: POP 00003398: JUMPDEST 00003399: SWAP5 0000339a: POP 0000339b: SWAP5 0000339c: POP 0000339d: SWAP5 0000339e: SWAP2 0000339f: POP 000033a0: POP 000033a1: JUMP 000033a2: JUMPDEST 000033a3: PUSH0 000033a4: DUP3 000033a5: PUSH1 0x03 000033a7: DUP2 000033a8: GT 000033a9: ISZERO 000033aa: PUSH2 0x33b5 000033ad: JUMPI 000033ae: PUSH2 0x33b5 000033b1: PUSH2 0x3900 000033b4: JUMP 000033b5: JUMPDEST 000033b6: SUB 000033b7: PUSH2 0x33be 000033ba: JUMPI 000033bb: POP 000033bc: POP 000033bd: JUMP 000033be: JUMPDEST 000033bf: PUSH1 0x01 000033c1: DUP3 000033c2: PUSH1 0x03 000033c4: DUP2 000033c5: GT 000033c6: ISZERO 000033c7: PUSH2 0x33d2 000033ca: JUMPI 000033cb: PUSH2 0x33d2 000033ce: PUSH2 0x3900 000033d1: JUMP 000033d2: JUMPDEST 000033d3: SUB 000033d4: PUSH2 0x33f0 000033d7: JUMPI 000033d8: PUSH1 0x40 000033da: MLOAD 000033db: PUSH4 0xf645eedf 000033e0: PUSH1 0xe0 000033e2: SHL 000033e3: DUP2 000033e4: MSTORE 000033e5: PUSH1 0x04 000033e7: ADD 000033e8: PUSH1 0x40 000033ea: MLOAD 000033eb: DUP1 000033ec: SWAP2 000033ed: SUB 000033ee: SWAP1 000033ef: REVERT 000033f0: JUMPDEST 000033f1: PUSH1 0x02 000033f3: DUP3 000033f4: PUSH1 0x03 000033f6: DUP2 000033f7: GT 000033f8: ISZERO 000033f9: PUSH2 0x3404 000033fc: JUMPI 000033fd: PUSH2 0x3404 00003400: PUSH2 0x3900 00003403: JUMP 00003404: JUMPDEST 00003405: SUB 00003406: PUSH2 0x3425 00003409: JUMPI 0000340a: PUSH1 0x40 0000340c: MLOAD 0000340d: PUSH4 0xfce698f7 00003412: PUSH1 0xe0 00003414: SHL 00003415: DUP2 00003416: MSTORE 00003417: PUSH1 0x04 00003419: DUP2 0000341a: ADD 0000341b: DUP3 0000341c: SWAP1 0000341d: MSTORE 0000341e: PUSH1 0x24 00003420: ADD 00003421: PUSH2 0x1b8d 00003424: JUMP 00003425: JUMPDEST 00003426: PUSH1 0x03 00003428: DUP3 00003429: PUSH1 0x03 0000342b: DUP2 0000342c: GT 0000342d: ISZERO 0000342e: PUSH2 0x3439 00003431: JUMPI 00003432: PUSH2 0x3439 00003435: PUSH2 0x3900 00003438: JUMP 00003439: JUMPDEST 0000343a: SUB 0000343b: PUSH2 0x14a1 0000343e: JUMPI 0000343f: PUSH1 0x40 00003441: MLOAD 00003442: PUSH4 0x35e2f383 00003447: PUSH1 0xe2 00003449: SHL 0000344a: DUP2 0000344b: MSTORE 0000344c: PUSH1 0x04 0000344e: DUP2 0000344f: ADD 00003450: DUP3 00003451: SWAP1 00003452: MSTORE 00003453: PUSH1 0x24 00003455: ADD 00003456: PUSH2 0x1b8d 00003459: JUMP 0000345a: JUMPDEST 0000345b: PUSH0 0000345c: PUSH0 0000345d: DUP1 0000345e: MLOAD 0000345f: PUSH1 0x20 00003461: PUSH2 0x4ab2 00003464: DUP4 00003465: CODECOPY 00003466: DUP2 00003467: MLOAD 00003468: SWAP2 00003469: MSTORE 0000346a: DUP2 0000346b: PUSH2 0x3472 0000346e: PUSH2 0x2bc0 00003471: JUMP 00003472: JUMPDEST 00003473: DUP1 00003474: MLOAD 00003475: SWAP1 00003476: SWAP2 00003477: POP 00003478: ISZERO 00003479: PUSH2 0x348a 0000347c: JUMPI 0000347d: DUP1 0000347e: MLOAD 0000347f: PUSH1 0x20 00003481: SWAP1 00003482: SWAP2 00003483: ADD 00003484: KECCAK256 00003485: SWAP3 00003486: SWAP2 00003487: POP 00003488: POP 00003489: JUMP 0000348a: JUMPDEST 0000348b: DUP2 0000348c: SLOAD 0000348d: DUP1 0000348e: ISZERO 0000348f: PUSH2 0x3499 00003492: JUMPI 00003493: SWAP4 00003494: SWAP3 00003495: POP 00003496: POP 00003497: POP 00003498: JUMP 00003499: JUMPDEST 0000349a: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 000034bb: SWAP4 000034bc: POP 000034bd: POP 000034be: POP 000034bf: POP 000034c0: SWAP1 000034c1: JUMP 000034c2: JUMPDEST 000034c3: PUSH0 000034c4: PUSH0 000034c5: DUP1 000034c6: MLOAD 000034c7: PUSH1 0x20 000034c9: PUSH2 0x4ab2 000034cc: DUP4 000034cd: CODECOPY 000034ce: DUP2 000034cf: MLOAD 000034d0: SWAP2 000034d1: MSTORE 000034d2: DUP2 000034d3: PUSH2 0x34da 000034d6: PUSH2 0x2bfe 000034d9: JUMP 000034da: JUMPDEST 000034db: DUP1 000034dc: MLOAD 000034dd: SWAP1 000034de: SWAP2 000034df: POP 000034e0: ISZERO 000034e1: PUSH2 0x34f2 000034e4: JUMPI 000034e5: DUP1 000034e6: MLOAD 000034e7: PUSH1 0x20 000034e9: SWAP1 000034ea: SWAP2 000034eb: ADD 000034ec: KECCAK256 000034ed: SWAP3 000034ee: SWAP2 000034ef: POP 000034f0: POP 000034f1: JUMP 000034f2: JUMPDEST 000034f3: PUSH1 0x01 000034f5: DUP3 000034f6: ADD 000034f7: SLOAD 000034f8: DUP1 000034f9: ISZERO 000034fa: PUSH2 0x3499 000034fd: JUMPI 000034fe: SWAP4 000034ff: SWAP3 00003500: POP 00003501: POP 00003502: POP 00003503: JUMP 00003504: JUMPDEST 00003505: PUSH0 00003506: PUSH2 0x3518 00003509: PUSH1 0x01 0000350b: PUSH1 0x01 0000350d: PUSH1 0xa0 0000350f: SHL 00003510: SUB 00003511: DUP5 00003512: AND 00003513: DUP4 00003514: PUSH2 0x36f1 00003517: JUMP 00003518: JUMPDEST 00003519: SWAP1 0000351a: POP 0000351b: DUP1 0000351c: MLOAD 0000351d: PUSH0 0000351e: EQ 0000351f: ISZERO 00003520: DUP1 00003521: ISZERO 00003522: PUSH2 0x353c 00003525: JUMPI 00003526: POP 00003527: DUP1 00003528: DUP1 00003529: PUSH1 0x20 0000352b: ADD 0000352c: SWAP1 0000352d: MLOAD 0000352e: DUP2 0000352f: ADD 00003530: SWAP1 00003531: PUSH2 0x353a 00003534: SWAP2 00003535: SWAP1 00003536: PUSH2 0x4946 00003539: JUMP 0000353a: JUMPDEST 0000353b: ISZERO 0000353c: JUMPDEST 0000353d: ISZERO 0000353e: PUSH2 0x130b 00003541: JUMPI 00003542: PUSH1 0x40 00003544: MLOAD 00003545: PUSH4 0x5274afe7 0000354a: PUSH1 0xe0 0000354c: SHL 0000354d: DUP2 0000354e: MSTORE 0000354f: PUSH1 0x01 00003551: PUSH1 0x01 00003553: PUSH1 0xa0 00003555: SHL 00003556: SUB 00003557: DUP5 00003558: AND 00003559: PUSH1 0x04 0000355b: DUP3 0000355c: ADD 0000355d: MSTORE 0000355e: PUSH1 0x24 00003560: ADD 00003561: PUSH2 0x1b8d 00003564: JUMP 00003565: JUMPDEST 00003566: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00 00003587: SLOAD 00003588: PUSH1 0x01 0000358a: PUSH1 0x40 0000358c: SHL 0000358d: SWAP1 0000358e: DIV 0000358f: PUSH1 0xff 00003591: AND 00003592: PUSH2 0x2277 00003595: JUMPI 00003596: PUSH1 0x40 00003598: MLOAD 00003599: PUSH4 0x1afcd79f 0000359e: PUSH1 0xe3 000035a0: SHL 000035a1: DUP2 000035a2: MSTORE 000035a3: PUSH1 0x04 000035a5: ADD 000035a6: PUSH1 0x40 000035a8: MLOAD 000035a9: DUP1 000035aa: SWAP2 000035ab: SUB 000035ac: SWAP1 000035ad: REVERT 000035ae: JUMPDEST 000035af: PUSH2 0x35b6 000035b2: PUSH2 0x3565 000035b5: JUMP 000035b6: JUMPDEST 000035b7: PUSH0 000035b8: DUP1 000035b9: MLOAD 000035ba: PUSH1 0x20 000035bc: PUSH2 0x4a92 000035bf: DUP4 000035c0: CODECOPY 000035c1: DUP2 000035c2: MLOAD 000035c3: SWAP2 000035c4: MSTORE 000035c5: PUSH32 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03 000035e6: PUSH2 0x35ef 000035e9: DUP5 000035ea: DUP3 000035eb: PUSH2 0x4998 000035ee: JUMP 000035ef: JUMPDEST 000035f0: POP 000035f1: PUSH1 0x04 000035f3: DUP2 000035f4: ADD 000035f5: PUSH2 0x132c 000035f8: DUP4 000035f9: DUP3 000035fa: PUSH2 0x4998 000035fd: JUMP 000035fe: JUMPDEST 000035ff: PUSH2 0x29ae 00003602: PUSH2 0x3565 00003605: JUMP 00003606: JUMPDEST 00003607: PUSH0 00003608: DUP4 00003609: DUP4 0000360a: MUL 0000360b: DUP2 0000360c: PUSH0 0000360d: NOT 0000360e: DUP6 0000360f: DUP8 00003610: MULMOD 00003611: DUP3 00003612: DUP2 00003613: LT 00003614: DUP4 00003615: DUP3 00003616: SUB 00003617: SUB 00003618: SWAP2 00003619: POP 0000361a: POP 0000361b: DUP1 0000361c: PUSH0 0000361d: SUB 0000361e: PUSH2 0x363a 00003621: JUMPI 00003622: DUP4 00003623: DUP3 00003624: DUP2 00003625: PUSH2 0x3630 00003628: JUMPI 00003629: PUSH2 0x3630 0000362c: PUSH2 0x4932 0000362f: JUMP 00003630: JUMPDEST 00003631: DIV 00003632: SWAP3 00003633: POP 00003634: POP 00003635: POP 00003636: PUSH2 0x1263 00003639: JUMP 0000363a: JUMPDEST 0000363b: DUP1 0000363c: DUP5 0000363d: GT 0000363e: PUSH2 0x365a 00003641: JUMPI 00003642: PUSH1 0x40 00003644: MLOAD 00003645: PUSH4 0x227bc153 0000364a: PUSH1 0xe0 0000364c: SHL 0000364d: DUP2 0000364e: MSTORE 0000364f: PUSH1 0x04 00003651: ADD 00003652: PUSH1 0x40 00003654: MLOAD 00003655: DUP1 00003656: SWAP2 00003657: SUB 00003658: SWAP1 00003659: REVERT 0000365a: JUMPDEST 0000365b: PUSH0 0000365c: DUP5 0000365d: DUP7 0000365e: DUP9 0000365f: MULMOD 00003660: PUSH0 00003661: DUP7 00003662: DUP2 00003663: SUB 00003664: DUP8 00003665: AND 00003666: SWAP7 00003667: DUP8 00003668: SWAP1 00003669: DIV 0000366a: SWAP7 0000366b: PUSH1 0x02 0000366d: PUSH1 0x03 0000366f: DUP10 00003670: MUL 00003671: DUP2 00003672: XOR 00003673: DUP1 00003674: DUP11 00003675: MUL 00003676: DUP3 00003677: SUB 00003678: MUL 00003679: DUP1 0000367a: DUP11 0000367b: MUL 0000367c: DUP3 0000367d: SUB 0000367e: MUL 0000367f: DUP1 00003680: DUP11 00003681: MUL 00003682: DUP3 00003683: SUB 00003684: MUL 00003685: DUP1 00003686: DUP11 00003687: MUL 00003688: DUP3 00003689: SUB 0000368a: MUL 0000368b: DUP1 0000368c: DUP11 0000368d: MUL 0000368e: DUP3 0000368f: SUB 00003690: MUL 00003691: DUP1 00003692: DUP11 00003693: MUL 00003694: SWAP1 00003695: SWAP2 00003696: SUB 00003697: MUL 00003698: SWAP2 00003699: DUP2 0000369a: SWAP1 0000369b: SUB 0000369c: DUP2 0000369d: SWAP1 0000369e: DIV 0000369f: PUSH1 0x01 000036a1: ADD 000036a2: DUP7 000036a3: DUP5 000036a4: GT 000036a5: SWAP1 000036a6: SWAP6 000036a7: SUB 000036a8: SWAP5 000036a9: SWAP1 000036aa: SWAP5 000036ab: MUL 000036ac: SWAP2 000036ad: SWAP1 000036ae: SWAP5 000036af: SUB 000036b0: SWAP3 000036b1: SWAP1 000036b2: SWAP3 000036b3: DIV 000036b4: SWAP2 000036b5: SWAP1 000036b6: SWAP2 000036b7: OR 000036b8: SWAP2 000036b9: SWAP1 000036ba: SWAP2 000036bb: MUL 000036bc: SWAP2 000036bd: POP 000036be: POP 000036bf: SWAP4 000036c0: SWAP3 000036c1: POP 000036c2: POP 000036c3: POP 000036c4: JUMP 000036c5: JUMPDEST 000036c6: PUSH0 000036c7: PUSH1 0x02 000036c9: DUP3 000036ca: PUSH1 0x03 000036cc: DUP2 000036cd: GT 000036ce: ISZERO 000036cf: PUSH2 0x36da 000036d2: JUMPI 000036d3: PUSH2 0x36da 000036d6: PUSH2 0x3900 000036d9: JUMP 000036da: JUMPDEST 000036db: PUSH2 0x36e4 000036de: SWAP2 000036df: SWAP1 000036e0: PUSH2 0x4a53 000036e3: JUMP 000036e4: JUMPDEST 000036e5: PUSH1 0xff 000036e7: AND 000036e8: PUSH1 0x01 000036ea: EQ 000036eb: SWAP1 000036ec: POP 000036ed: SWAP2 000036ee: SWAP1 000036ef: POP 000036f0: JUMP 000036f1: JUMPDEST 000036f2: PUSH1 0x60 000036f4: PUSH2 0x1263 000036f7: DUP4 000036f8: DUP4 000036f9: PUSH0 000036fa: DUP5 000036fb: PUSH0 000036fc: DUP1 000036fd: DUP6 000036fe: PUSH1 0x01 00003700: PUSH1 0x01 00003702: PUSH1 0xa0 00003704: SHL 00003705: SUB 00003706: AND 00003707: DUP5 00003708: DUP7 00003709: PUSH1 0x40 0000370b: MLOAD 0000370c: PUSH2 0x3715 0000370f: SWAP2 00003710: SWAP1 00003711: PUSH2 0x4a80 00003714: JUMP 00003715: JUMPDEST 00003716: PUSH0 00003717: PUSH1 0x40 00003719: MLOAD 0000371a: DUP1 0000371b: DUP4 0000371c: SUB 0000371d: DUP2 0000371e: DUP6 0000371f: DUP8 00003720: GAS 00003721: CALL 00003722: SWAP3 00003723: POP 00003724: POP 00003725: POP 00003726: RETURNDATASIZE 00003727: DUP1 00003728: PUSH0 00003729: DUP2 0000372a: EQ 0000372b: PUSH2 0x374f 0000372e: JUMPI 0000372f: PUSH1 0x40 00003731: MLOAD 00003732: SWAP2 00003733: POP 00003734: PUSH1 0x1f 00003736: NOT 00003737: PUSH1 0x3f 00003739: RETURNDATASIZE 0000373a: ADD 0000373b: AND 0000373c: DUP3 0000373d: ADD 0000373e: PUSH1 0x40 00003740: MSTORE 00003741: RETURNDATASIZE 00003742: DUP3 00003743: MSTORE 00003744: RETURNDATASIZE 00003745: PUSH0 00003746: PUSH1 0x20 00003748: DUP5 00003749: ADD 0000374a: RETURNDATACOPY 0000374b: PUSH2 0x3754 0000374e: JUMP 0000374f: JUMPDEST 00003750: PUSH1 0x60 00003752: SWAP2 00003753: POP 00003754: JUMPDEST 00003755: POP 00003756: SWAP2 00003757: POP 00003758: SWAP2 00003759: POP 0000375a: PUSH2 0x3264 0000375d: DUP7 0000375e: DUP4 0000375f: DUP4 00003760: PUSH1 0x60 00003762: DUP3 00003763: PUSH2 0x3774 00003766: JUMPI 00003767: PUSH2 0x376f 0000376a: DUP3 0000376b: PUSH2 0x37bb 0000376e: JUMP 0000376f: JUMPDEST 00003770: PUSH2 0x1263 00003773: JUMP 00003774: JUMPDEST 00003775: DUP2 00003776: MLOAD 00003777: ISZERO 00003778: DUP1 00003779: ISZERO 0000377a: PUSH2 0x378b 0000377d: JUMPI 0000377e: POP 0000377f: PUSH1 0x01 00003781: PUSH1 0x01 00003783: PUSH1 0xa0 00003785: SHL 00003786: SUB 00003787: DUP5 00003788: AND 00003789: EXTCODESIZE 0000378a: ISZERO 0000378b: JUMPDEST 0000378c: ISZERO 0000378d: PUSH2 0x37b4 00003790: JUMPI 00003791: PUSH1 0x40 00003793: MLOAD 00003794: PUSH4 0x9996b315 00003799: PUSH1 0xe0 0000379b: SHL 0000379c: DUP2 0000379d: MSTORE 0000379e: PUSH1 0x01 000037a0: PUSH1 0x01 000037a2: PUSH1 0xa0 000037a4: SHL 000037a5: SUB 000037a6: DUP6 000037a7: AND 000037a8: PUSH1 0x04 000037aa: DUP3 000037ab: ADD 000037ac: MSTORE 000037ad: PUSH1 0x24 000037af: ADD 000037b0: PUSH2 0x1b8d 000037b3: JUMP 000037b4: JUMPDEST 000037b5: POP 000037b6: DUP1 000037b7: PUSH2 0x1263 000037ba: JUMP 000037bb: JUMPDEST 000037bc: DUP1 000037bd: MLOAD 000037be: ISZERO 000037bf: PUSH2 0x37cb 000037c2: JUMPI 000037c3: DUP1 000037c4: MLOAD 000037c5: DUP1 000037c6: DUP3 000037c7: PUSH1 0x20 000037c9: ADD 000037ca: REVERT 000037cb: JUMPDEST 000037cc: PUSH1 0x40 000037ce: MLOAD 000037cf: PUSH4 0x0a12f521 000037d4: PUSH1 0xe1 000037d6: SHL 000037d7: DUP2 000037d8: MSTORE 000037d9: PUSH1 0x04 000037db: ADD 000037dc: PUSH1 0x40 000037de: MLOAD 000037df: DUP1 000037e0: SWAP2 000037e1: SUB 000037e2: SWAP1 000037e3: REVERT 000037e4: JUMPDEST 000037e5: DUP1 000037e6: CALLDATALOAD 000037e7: PUSH1 0x01 000037e9: PUSH1 0x01 000037eb: PUSH1 0xe0 000037ed: SHL 000037ee: SUB 000037ef: NOT 000037f0: DUP2 000037f1: AND 000037f2: DUP2 000037f3: EQ 000037f4: PUSH2 0x37fb 000037f7: JUMPI 000037f8: PUSH0 000037f9: DUP1 000037fa: REVERT 000037fb: JUMPDEST 000037fc: SWAP2 000037fd: SWAP1 000037fe: POP 000037ff: JUMP 00003800: JUMPDEST 00003801: PUSH0 00003802: PUSH1 0x20 00003804: DUP3 00003805: DUP5 00003806: SUB 00003807: SLT 00003808: ISZERO 00003809: PUSH2 0x3810 0000380c: JUMPI 0000380d: PUSH0 0000380e: DUP1 0000380f: REVERT 00003810: JUMPDEST 00003811: PUSH2 0x1263 00003814: DUP3 00003815: PUSH2 0x37e4 00003818: JUMP 00003819: JUMPDEST 0000381a: PUSH0 0000381b: JUMPDEST 0000381c: DUP4 0000381d: DUP2 0000381e: LT 0000381f: ISZERO 00003820: PUSH2 0x3833 00003823: JUMPI 00003824: DUP2 00003825: DUP2 00003826: ADD 00003827: MLOAD 00003828: DUP4 00003829: DUP3 0000382a: ADD 0000382b: MSTORE 0000382c: PUSH1 0x20 0000382e: ADD 0000382f: PUSH2 0x381b 00003832: JUMP 00003833: JUMPDEST 00003834: POP 00003835: POP 00003836: PUSH0 00003837: SWAP2 00003838: ADD 00003839: MSTORE 0000383a: JUMP 0000383b: JUMPDEST 0000383c: PUSH0 0000383d: DUP2 0000383e: MLOAD 0000383f: DUP1 00003840: DUP5 00003841: MSTORE 00003842: PUSH2 0x3852 00003845: DUP2 00003846: PUSH1 0x20 00003848: DUP7 00003849: ADD 0000384a: PUSH1 0x20 0000384c: DUP7 0000384d: ADD 0000384e: PUSH2 0x3819 00003851: JUMP 00003852: JUMPDEST 00003853: PUSH1 0x1f 00003855: ADD 00003856: PUSH1 0x1f 00003858: NOT 00003859: AND 0000385a: SWAP3 0000385b: SWAP1 0000385c: SWAP3 0000385d: ADD 0000385e: PUSH1 0x20 00003860: ADD 00003861: SWAP3 00003862: SWAP2 00003863: POP 00003864: POP 00003865: JUMP 00003866: JUMPDEST 00003867: PUSH1 0x20 00003869: DUP2 0000386a: MSTORE 0000386b: PUSH0 0000386c: PUSH2 0x1263 0000386f: PUSH1 0x20 00003871: DUP4 00003872: ADD 00003873: DUP5 00003874: PUSH2 0x383b 00003877: JUMP 00003878: JUMPDEST 00003879: PUSH0 0000387a: PUSH1 0x20 0000387c: DUP3 0000387d: DUP5 0000387e: SUB 0000387f: SLT 00003880: ISZERO 00003881: PUSH2 0x3888 00003884: JUMPI 00003885: PUSH0 00003886: DUP1 00003887: REVERT 00003888: JUMPDEST 00003889: POP 0000388a: CALLDATALOAD 0000388b: SWAP2 0000388c: SWAP1 0000388d: POP 0000388e: JUMP 0000388f: JUMPDEST 00003890: PUSH1 0x01 00003892: PUSH1 0x01 00003894: PUSH1 0xa0 00003896: SHL 00003897: SUB 00003898: DUP2 00003899: AND 0000389a: DUP2 0000389b: EQ 0000389c: PUSH2 0x249c 0000389f: JUMPI 000038a0: PUSH0 000038a1: DUP1 000038a2: REVERT 000038a3: JUMPDEST 000038a4: PUSH0 000038a5: DUP1 000038a6: PUSH1 0x40 000038a8: DUP4 000038a9: DUP6 000038aa: SUB 000038ab: SLT 000038ac: ISZERO 000038ad: PUSH2 0x38b4 000038b0: JUMPI 000038b1: PUSH0 000038b2: DUP1 000038b3: REVERT 000038b4: JUMPDEST 000038b5: DUP3 000038b6: CALLDATALOAD 000038b7: PUSH2 0x38bf 000038ba: DUP2 000038bb: PUSH2 0x388f 000038be: JUMP 000038bf: JUMPDEST 000038c0: SWAP5 000038c1: PUSH1 0x20 000038c3: SWAP4 000038c4: SWAP1 000038c5: SWAP4 000038c6: ADD 000038c7: CALLDATALOAD 000038c8: SWAP4 000038c9: POP 000038ca: POP 000038cb: POP 000038cc: JUMP 000038cd: JUMPDEST 000038ce: PUSH0 000038cf: DUP1 000038d0: PUSH1 0x40 000038d2: DUP4 000038d3: DUP6 000038d4: SUB 000038d5: SLT 000038d6: ISZERO 000038d7: PUSH2 0x38de 000038da: JUMPI 000038db: PUSH0 000038dc: DUP1 000038dd: REVERT 000038de: JUMPDEST 000038df: DUP3 000038e0: CALLDATALOAD 000038e1: PUSH2 0x38e9 000038e4: DUP2 000038e5: PUSH2 0x388f 000038e8: JUMP 000038e9: JUMPDEST 000038ea: SWAP2 000038eb: POP 000038ec: PUSH2 0x38f7 000038ef: PUSH1 0x20 000038f1: DUP5 000038f2: ADD 000038f3: PUSH2 0x37e4 000038f6: JUMP 000038f7: JUMPDEST 000038f8: SWAP1 000038f9: POP 000038fa: SWAP3 000038fb: POP 000038fc: SWAP3 000038fd: SWAP1 000038fe: POP 000038ff: JUMP 00003900: JUMPDEST 00003901: PUSH4 0x4e487b71 00003906: PUSH1 0xe0 00003908: SHL 00003909: PUSH0 0000390a: MSTORE 0000390b: PUSH1 0x21 0000390d: PUSH1 0x04 0000390f: MSTORE 00003910: PUSH1 0x24 00003912: PUSH0 00003913: REVERT 00003914: JUMPDEST 00003915: PUSH1 0x02 00003917: DUP2 00003918: LT 00003919: PUSH2 0x3924 0000391c: JUMPI 0000391d: PUSH2 0x3924 00003920: PUSH2 0x3900 00003923: JUMP 00003924: JUMPDEST 00003925: SWAP1 00003926: MSTORE 00003927: JUMP 00003928: JUMPDEST 00003929: PUSH0 0000392a: PUSH1 0x20 0000392c: DUP1 0000392d: DUP4 0000392e: MSTORE 0000392f: PUSH1 0x80 00003931: DUP1 00003932: DUP5 00003933: ADD 00003934: DUP6 00003935: MLOAD 00003936: ISZERO 00003937: ISZERO 00003938: DUP4 00003939: DUP7 0000393a: ADD 0000393b: MSTORE 0000393c: DUP3 0000393d: DUP7 0000393e: ADD 0000393f: MLOAD 00003940: PUSH1 0x60 00003942: PUSH1 0x40 00003944: PUSH1 0x60 00003946: PUSH1 0x40 00003948: DUP10 00003949: ADD 0000394a: MSTORE 0000394b: DUP4 0000394c: DUP4 0000394d: MLOAD 0000394e: DUP1 0000394f: DUP7 00003950: MSTORE 00003951: PUSH1 0xa0 00003953: DUP11 00003954: ADD 00003955: SWAP2 00003956: POP 00003957: PUSH1 0xa0 00003959: DUP2 0000395a: PUSH1 0x05 0000395c: SHL 0000395d: DUP12 0000395e: ADD 0000395f: ADD 00003960: SWAP6 00003961: POP 00003962: DUP8 00003963: DUP6 00003964: ADD 00003965: SWAP5 00003966: POP 00003967: PUSH0 00003968: JUMPDEST 00003969: DUP2 0000396a: DUP2 0000396b: LT 0000396c: ISZERO 0000396d: PUSH2 0x39eb 00003970: JUMPI 00003971: PUSH1 0x9f 00003973: NOT 00003974: DUP12 00003975: DUP9 00003976: SUB 00003977: ADD 00003978: DUP4 00003979: MSTORE 0000397a: DUP6 0000397b: MLOAD 0000397c: DUP6 0000397d: DUP9 0000397e: ADD 0000397f: PUSH2 0x3989 00003982: DUP10 00003983: DUP4 00003984: MLOAD 00003985: PUSH2 0x3914 00003988: JUMP 00003989: JUMPDEST 0000398a: DUP2 0000398b: DUP12 0000398c: ADD 0000398d: MLOAD 0000398e: ISZERO 0000398f: ISZERO 00003990: DUP10 00003991: DUP13 00003992: ADD 00003993: MSTORE 00003994: SWAP1 00003995: DUP6 00003996: ADD 00003997: MLOAD 00003998: DUP6 00003999: DUP10 0000399a: ADD 0000399b: DUP8 0000399c: SWAP1 0000399d: MSTORE 0000399e: DUP1 0000399f: MLOAD 000039a0: SWAP2 000039a1: DUP3 000039a2: SWAP1 000039a3: MSTORE 000039a4: DUP11 000039a5: ADD 000039a6: SWAP1 000039a7: PUSH0 000039a8: SWAP1 000039a9: DUP11 000039aa: DUP11 000039ab: ADD 000039ac: SWAP1 000039ad: JUMPDEST 000039ae: DUP1 000039af: DUP4 000039b0: LT 000039b1: ISZERO 000039b2: PUSH2 0x39d6 000039b5: JUMPI 000039b6: DUP4 000039b7: MLOAD 000039b8: PUSH1 0x01 000039ba: PUSH1 0x01 000039bc: PUSH1 0xa0 000039be: SHL 000039bf: SUB 000039c0: AND 000039c1: DUP3 000039c2: MSTORE 000039c3: SWAP3 000039c4: DUP13 000039c5: ADD 000039c6: SWAP3 000039c7: PUSH1 0x01 000039c9: SWAP3 000039ca: SWAP1 000039cb: SWAP3 000039cc: ADD 000039cd: SWAP2 000039ce: SWAP1 000039cf: DUP13 000039d0: ADD 000039d1: SWAP1 000039d2: PUSH2 0x39ad 000039d5: JUMP 000039d6: JUMPDEST 000039d7: POP 000039d8: SWAP9 000039d9: POP 000039da: POP 000039db: POP 000039dc: SWAP5 000039dd: DUP9 000039de: ADD 000039df: SWAP5 000039e0: SWAP2 000039e1: DUP9 000039e2: ADD 000039e3: SWAP2 000039e4: PUSH1 0x01 000039e6: ADD 000039e7: PUSH2 0x3968 000039ea: JUMP 000039eb: JUMPDEST 000039ec: POP 000039ed: POP 000039ee: POP 000039ef: POP 000039f0: POP 000039f1: POP 000039f2: PUSH1 0x40 000039f4: DUP7 000039f5: ADD 000039f6: MLOAD 000039f7: SWAP3 000039f8: POP 000039f9: PUSH2 0x1f37 000039fc: PUSH1 0x60 000039fe: DUP7 000039ff: ADD 00003a00: DUP5 00003a01: PUSH1 0x01 00003a03: PUSH1 0x01 00003a05: PUSH1 0xa0 00003a07: SHL 00003a08: SUB 00003a09: AND 00003a0a: SWAP1 00003a0b: MSTORE 00003a0c: JUMP 00003a0d: JUMPDEST 00003a0e: PUSH0 00003a0f: DUP1 00003a10: DUP4 00003a11: PUSH1 0x1f 00003a13: DUP5 00003a14: ADD 00003a15: SLT 00003a16: PUSH2 0x3a1d 00003a19: JUMPI 00003a1a: PUSH0 00003a1b: DUP1 00003a1c: REVERT 00003a1d: JUMPDEST 00003a1e: POP 00003a1f: DUP2 00003a20: CALLDATALOAD 00003a21: PUSH1 0x01 00003a23: PUSH1 0x01 00003a25: PUSH1 0x40 00003a27: SHL 00003a28: SUB 00003a29: DUP2 00003a2a: GT 00003a2b: ISZERO 00003a2c: PUSH2 0x3a33 00003a2f: JUMPI 00003a30: PUSH0 00003a31: DUP1 00003a32: REVERT 00003a33: JUMPDEST 00003a34: PUSH1 0x20 00003a36: DUP4 00003a37: ADD 00003a38: SWAP2 00003a39: POP 00003a3a: DUP4 00003a3b: PUSH1 0x20 00003a3d: DUP3 00003a3e: PUSH1 0x05 00003a40: SHL 00003a41: DUP6 00003a42: ADD 00003a43: ADD 00003a44: GT 00003a45: ISZERO 00003a46: PUSH2 0x3a4d 00003a49: JUMPI 00003a4a: PUSH0 00003a4b: DUP1 00003a4c: REVERT 00003a4d: JUMPDEST 00003a4e: SWAP3 00003a4f: POP 00003a50: SWAP3 00003a51: SWAP1 00003a52: POP 00003a53: JUMP 00003a54: JUMPDEST 00003a55: PUSH4 0x4e487b71 00003a5a: PUSH1 0xe0 00003a5c: SHL 00003a5d: PUSH0 00003a5e: MSTORE 00003a5f: PUSH1 0x41 00003a61: PUSH1 0x04 00003a63: MSTORE 00003a64: PUSH1 0x24 00003a66: PUSH0 00003a67: REVERT 00003a68: JUMPDEST 00003a69: PUSH1 0x40 00003a6b: MLOAD 00003a6c: PUSH1 0x1f 00003a6e: DUP3 00003a6f: ADD 00003a70: PUSH1 0x1f 00003a72: NOT 00003a73: AND 00003a74: DUP2 00003a75: ADD 00003a76: PUSH1 0x01 00003a78: PUSH1 0x01 00003a7a: PUSH1 0x40 00003a7c: SHL 00003a7d: SUB 00003a7e: DUP2 00003a7f: GT 00003a80: DUP3 00003a81: DUP3 00003a82: LT 00003a83: OR 00003a84: ISZERO 00003a85: PUSH2 0x3a90 00003a88: JUMPI 00003a89: PUSH2 0x3a90 00003a8c: PUSH2 0x3a54 00003a8f: JUMP 00003a90: JUMPDEST 00003a91: PUSH1 0x40 00003a93: MSTORE 00003a94: SWAP2 00003a95: SWAP1 00003a96: POP 00003a97: JUMP 00003a98: JUMPDEST 00003a99: PUSH0 00003a9a: PUSH1 0x01 00003a9c: PUSH1 0x01 00003a9e: PUSH1 0x40 00003aa0: SHL 00003aa1: SUB 00003aa2: DUP3 00003aa3: GT 00003aa4: ISZERO 00003aa5: PUSH2 0x3ab0 00003aa8: JUMPI 00003aa9: PUSH2 0x3ab0 00003aac: PUSH2 0x3a54 00003aaf: JUMP 00003ab0: JUMPDEST 00003ab1: POP 00003ab2: PUSH1 0x05 00003ab4: SHL 00003ab5: PUSH1 0x20 00003ab7: ADD 00003ab8: SWAP1 00003ab9: JUMP 00003aba: JUMPDEST 00003abb: PUSH0 00003abc: DUP1 00003abd: PUSH0 00003abe: DUP1 00003abf: PUSH0 00003ac0: PUSH1 0x60 00003ac2: DUP7 00003ac3: DUP9 00003ac4: SUB 00003ac5: SLT 00003ac6: ISZERO 00003ac7: PUSH2 0x3ace 00003aca: JUMPI 00003acb: PUSH0 00003acc: DUP1 00003acd: REVERT 00003ace: JUMPDEST 00003acf: DUP6 00003ad0: CALLDATALOAD 00003ad1: PUSH1 0x01 00003ad3: PUSH1 0x01 00003ad5: PUSH1 0x40 00003ad7: SHL 00003ad8: SUB 00003ad9: DUP1 00003ada: DUP3 00003adb: GT 00003adc: ISZERO 00003add: PUSH2 0x3ae4 00003ae0: JUMPI 00003ae1: PUSH0 00003ae2: DUP1 00003ae3: REVERT 00003ae4: JUMPDEST 00003ae5: PUSH2 0x3af0 00003ae8: DUP10 00003ae9: DUP4 00003aea: DUP11 00003aeb: ADD 00003aec: PUSH2 0x3a0d 00003aef: JUMP 00003af0: JUMPDEST 00003af1: SWAP1 00003af2: SWAP8 00003af3: POP 00003af4: SWAP6 00003af5: POP 00003af6: PUSH1 0x20 00003af8: SWAP2 00003af9: POP 00003afa: DUP8 00003afb: DUP3 00003afc: ADD 00003afd: CALLDATALOAD 00003afe: DUP2 00003aff: DUP2 00003b00: GT 00003b01: ISZERO 00003b02: PUSH2 0x3b09 00003b05: JUMPI 00003b06: PUSH0 00003b07: DUP1 00003b08: REVERT 00003b09: JUMPDEST 00003b0a: DUP9 00003b0b: ADD 00003b0c: PUSH1 0x1f 00003b0e: DUP2 00003b0f: ADD 00003b10: DUP11 00003b11: SGT 00003b12: PUSH2 0x3b19 00003b15: JUMPI 00003b16: PUSH0 00003b17: DUP1 00003b18: REVERT 00003b19: JUMPDEST 00003b1a: DUP1 00003b1b: CALLDATALOAD 00003b1c: PUSH2 0x3b2c 00003b1f: PUSH2 0x3b27 00003b22: DUP3 00003b23: PUSH2 0x3a98 00003b26: JUMP 00003b27: JUMPDEST 00003b28: PUSH2 0x3a68 00003b2b: JUMP 00003b2c: JUMPDEST 00003b2d: DUP2 00003b2e: DUP2 00003b2f: MSTORE 00003b30: PUSH1 0x05 00003b32: SWAP2 00003b33: SWAP1 00003b34: SWAP2 00003b35: SHL 00003b36: DUP3 00003b37: ADD 00003b38: DUP5 00003b39: ADD 00003b3a: SWAP1 00003b3b: DUP5 00003b3c: DUP2 00003b3d: ADD 00003b3e: SWAP1 00003b3f: DUP13 00003b40: DUP4 00003b41: GT 00003b42: ISZERO 00003b43: PUSH2 0x3b4a 00003b46: JUMPI 00003b47: PUSH0 00003b48: DUP1 00003b49: REVERT 00003b4a: JUMPDEST 00003b4b: SWAP3 00003b4c: DUP6 00003b4d: ADD 00003b4e: SWAP3 00003b4f: JUMPDEST 00003b50: DUP3 00003b51: DUP5 00003b52: LT 00003b53: ISZERO 00003b54: PUSH2 0x3b68 00003b57: JUMPI 00003b58: DUP4 00003b59: CALLDATALOAD 00003b5a: DUP3 00003b5b: MSTORE 00003b5c: SWAP3 00003b5d: DUP6 00003b5e: ADD 00003b5f: SWAP3 00003b60: SWAP1 00003b61: DUP6 00003b62: ADD 00003b63: SWAP1 00003b64: PUSH2 0x3b4f 00003b67: JUMP 00003b68: JUMPDEST 00003b69: SWAP8 00003b6a: POP 00003b6b: POP 00003b6c: POP 00003b6d: POP 00003b6e: PUSH1 0x40 00003b70: DUP9 00003b71: ADD 00003b72: CALLDATALOAD 00003b73: SWAP2 00003b74: POP 00003b75: DUP1 00003b76: DUP3 00003b77: GT 00003b78: ISZERO 00003b79: PUSH2 0x3b80 00003b7c: JUMPI 00003b7d: PUSH0 00003b7e: DUP1 00003b7f: REVERT 00003b80: JUMPDEST 00003b81: POP 00003b82: PUSH2 0x3b8d 00003b85: DUP9 00003b86: DUP3 00003b87: DUP10 00003b88: ADD 00003b89: PUSH2 0x3a0d 00003b8c: JUMP 00003b8d: JUMPDEST 00003b8e: SWAP7 00003b8f: SWAP10 00003b90: SWAP6 00003b91: SWAP9 00003b92: POP 00003b93: SWAP4 00003b94: SWAP7 00003b95: POP 00003b96: SWAP3 00003b97: SWAP5 00003b98: SWAP4 00003b99: SWAP3 00003b9a: POP 00003b9b: POP 00003b9c: POP 00003b9d: JUMP 00003b9e: JUMPDEST 00003b9f: PUSH0 00003ba0: PUSH1 0x20 00003ba2: DUP1 00003ba3: DUP4 00003ba4: ADD 00003ba5: PUSH1 0x20 00003ba7: DUP5 00003ba8: MSTORE 00003ba9: DUP1 00003baa: DUP6 00003bab: MLOAD 00003bac: DUP1 00003bad: DUP4 00003bae: MSTORE 00003baf: PUSH1 0x40 00003bb1: DUP7 00003bb2: ADD 00003bb3: SWAP2 00003bb4: POP 00003bb5: PUSH1 0x40 00003bb7: DUP2 00003bb8: PUSH1 0x05 00003bba: SHL 00003bbb: DUP8 00003bbc: ADD 00003bbd: ADD 00003bbe: SWAP3 00003bbf: POP 00003bc0: PUSH1 0x20 00003bc2: DUP8 00003bc3: ADD 00003bc4: PUSH0 00003bc5: JUMPDEST 00003bc6: DUP3 00003bc7: DUP2 00003bc8: LT 00003bc9: ISZERO 00003bca: PUSH2 0x3bf3 00003bcd: JUMPI 00003bce: PUSH1 0x3f 00003bd0: NOT 00003bd1: DUP9 00003bd2: DUP7 00003bd3: SUB 00003bd4: ADD 00003bd5: DUP5 00003bd6: MSTORE 00003bd7: PUSH2 0x3be1 00003bda: DUP6 00003bdb: DUP4 00003bdc: MLOAD 00003bdd: PUSH2 0x383b 00003be0: JUMP 00003be1: JUMPDEST 00003be2: SWAP5 00003be3: POP 00003be4: SWAP3 00003be5: DUP6 00003be6: ADD 00003be7: SWAP3 00003be8: SWAP1 00003be9: DUP6 00003bea: ADD 00003beb: SWAP1 00003bec: PUSH1 0x01 00003bee: ADD 00003bef: PUSH2 0x3bc5 00003bf2: JUMP 00003bf3: JUMPDEST 00003bf4: POP 00003bf5: SWAP3 00003bf6: SWAP8 00003bf7: SWAP7 00003bf8: POP 00003bf9: POP 00003bfa: POP 00003bfb: POP 00003bfc: POP 00003bfd: POP 00003bfe: POP 00003bff: JUMP 00003c00: JUMPDEST 00003c01: PUSH0 00003c02: DUP1 00003c03: PUSH0 00003c04: PUSH1 0x60 00003c06: DUP5 00003c07: DUP7 00003c08: SUB 00003c09: SLT 00003c0a: ISZERO 00003c0b: PUSH2 0x3c12 00003c0e: JUMPI 00003c0f: PUSH0 00003c10: DUP1 00003c11: REVERT 00003c12: JUMPDEST 00003c13: DUP4 00003c14: CALLDATALOAD 00003c15: PUSH2 0x3c1d 00003c18: DUP2 00003c19: PUSH2 0x388f 00003c1c: JUMP 00003c1d: JUMPDEST 00003c1e: SWAP3 00003c1f: POP 00003c20: PUSH1 0x20 00003c22: DUP5 00003c23: ADD 00003c24: CALLDATALOAD 00003c25: PUSH2 0x3c2d 00003c28: DUP2 00003c29: PUSH2 0x388f 00003c2c: JUMP 00003c2d: JUMPDEST 00003c2e: SWAP3 00003c2f: SWAP6 00003c30: SWAP3 00003c31: SWAP5 00003c32: POP 00003c33: POP 00003c34: POP 00003c35: PUSH1 0x40 00003c37: SWAP2 00003c38: SWAP1 00003c39: SWAP2 00003c3a: ADD 00003c3b: CALLDATALOAD 00003c3c: SWAP1 00003c3d: JUMP 00003c3e: JUMPDEST 00003c3f: DUP1 00003c40: ISZERO 00003c41: ISZERO 00003c42: DUP2 00003c43: EQ 00003c44: PUSH2 0x249c 00003c47: JUMPI 00003c48: PUSH0 00003c49: DUP1 00003c4a: REVERT 00003c4b: JUMPDEST 00003c4c: PUSH0 00003c4d: DUP1 00003c4e: PUSH1 0x40 00003c50: DUP4 00003c51: DUP6 00003c52: SUB 00003c53: SLT 00003c54: ISZERO 00003c55: PUSH2 0x3c5c 00003c58: JUMPI 00003c59: PUSH0 00003c5a: DUP1 00003c5b: REVERT 00003c5c: JUMPDEST 00003c5d: DUP3 00003c5e: CALLDATALOAD 00003c5f: PUSH2 0x3c67 00003c62: DUP2 00003c63: PUSH2 0x388f 00003c66: JUMP 00003c67: JUMPDEST 00003c68: SWAP2 00003c69: POP 00003c6a: PUSH1 0x20 00003c6c: DUP4 00003c6d: ADD 00003c6e: CALLDATALOAD 00003c6f: PUSH2 0x3c77 00003c72: DUP2 00003c73: PUSH2 0x3c3e 00003c76: JUMP 00003c77: JUMPDEST 00003c78: DUP1 00003c79: SWAP2 00003c7a: POP 00003c7b: POP 00003c7c: SWAP3 00003c7d: POP 00003c7e: SWAP3 00003c7f: SWAP1 00003c80: POP 00003c81: JUMP 00003c82: JUMPDEST 00003c83: PUSH0 00003c84: DUP1 00003c85: PUSH1 0x40 00003c87: DUP4 00003c88: DUP6 00003c89: SUB 00003c8a: SLT 00003c8b: ISZERO 00003c8c: PUSH2 0x3c93 00003c8f: JUMPI 00003c90: PUSH0 00003c91: DUP1 00003c92: REVERT 00003c93: JUMPDEST 00003c94: DUP3 00003c95: CALLDATALOAD 00003c96: SWAP2 00003c97: POP 00003c98: PUSH1 0x20 00003c9a: DUP4 00003c9b: ADD 00003c9c: CALLDATALOAD 00003c9d: PUSH2 0x3c77 00003ca0: DUP2 00003ca1: PUSH2 0x388f 00003ca4: JUMP 00003ca5: JUMPDEST 00003ca6: PUSH0 00003ca7: PUSH1 0x20 00003ca9: DUP3 00003caa: DUP5 00003cab: SUB 00003cac: SLT 00003cad: ISZERO 00003cae: PUSH2 0x3cb5 00003cb1: JUMPI 00003cb2: PUSH0 00003cb3: DUP1 00003cb4: REVERT 00003cb5: JUMPDEST 00003cb6: DUP2 00003cb7: CALLDATALOAD 00003cb8: PUSH2 0x1263 00003cbb: DUP2 00003cbc: PUSH2 0x388f 00003cbf: JUMP 00003cc0: JUMPDEST 00003cc1: PUSH0 00003cc2: DUP1 00003cc3: PUSH0 00003cc4: PUSH1 0x60 00003cc6: DUP5 00003cc7: DUP7 00003cc8: SUB 00003cc9: SLT 00003cca: ISZERO 00003ccb: PUSH2 0x3cd2 00003cce: JUMPI 00003ccf: PUSH0 00003cd0: DUP1 00003cd1: REVERT 00003cd2: JUMPDEST 00003cd3: DUP4 00003cd4: CALLDATALOAD 00003cd5: PUSH2 0x3cdd 00003cd8: DUP2 00003cd9: PUSH2 0x388f 00003cdc: JUMP 00003cdd: JUMPDEST 00003cde: SWAP3 00003cdf: POP 00003ce0: PUSH2 0x3ceb 00003ce3: PUSH1 0x20 00003ce5: DUP6 00003ce6: ADD 00003ce7: PUSH2 0x37e4 00003cea: JUMP 00003ceb: JUMPDEST 00003cec: SWAP2 00003ced: POP 00003cee: PUSH1 0x40 00003cf0: DUP5 00003cf1: ADD 00003cf2: CALLDATALOAD 00003cf3: PUSH1 0x01 00003cf5: PUSH1 0x01 00003cf7: PUSH1 0x40 00003cf9: SHL 00003cfa: SUB 00003cfb: DUP2 00003cfc: GT 00003cfd: ISZERO 00003cfe: PUSH2 0x3d05 00003d01: JUMPI 00003d02: PUSH0 00003d03: DUP1 00003d04: REVERT 00003d05: JUMPDEST 00003d06: DUP5 00003d07: ADD 00003d08: PUSH1 0x60 00003d0a: DUP2 00003d0b: DUP8 00003d0c: SUB 00003d0d: SLT 00003d0e: ISZERO 00003d0f: PUSH2 0x3d16 00003d12: JUMPI 00003d13: PUSH0 00003d14: DUP1 00003d15: REVERT 00003d16: JUMPDEST 00003d17: DUP1 00003d18: SWAP2 00003d19: POP 00003d1a: POP 00003d1b: SWAP3 00003d1c: POP 00003d1d: SWAP3 00003d1e: POP 00003d1f: SWAP3 00003d20: JUMP 00003d21: JUMPDEST 00003d22: DUP1 00003d23: CALLDATALOAD 00003d24: PUSH1 0x01 00003d26: PUSH1 0x01 00003d28: PUSH1 0x40 00003d2a: SHL 00003d2b: SUB 00003d2c: DUP2 00003d2d: AND 00003d2e: DUP2 00003d2f: EQ 00003d30: PUSH2 0x37fb 00003d33: JUMPI 00003d34: PUSH0 00003d35: DUP1 00003d36: REVERT 00003d37: JUMPDEST 00003d38: PUSH0 00003d39: PUSH1 0x20 00003d3b: DUP3 00003d3c: DUP5 00003d3d: SUB 00003d3e: SLT 00003d3f: ISZERO 00003d40: PUSH2 0x3d47 00003d43: JUMPI 00003d44: PUSH0 00003d45: DUP1 00003d46: REVERT 00003d47: JUMPDEST 00003d48: PUSH2 0x1263 00003d4b: DUP3 00003d4c: PUSH2 0x3d21 00003d4f: JUMP 00003d50: JUMPDEST 00003d51: PUSH0 00003d52: DUP1 00003d53: PUSH0 00003d54: PUSH1 0x60 00003d56: DUP5 00003d57: DUP7 00003d58: SUB 00003d59: SLT 00003d5a: ISZERO 00003d5b: PUSH2 0x3d62 00003d5e: JUMPI 00003d5f: PUSH0 00003d60: DUP1 00003d61: REVERT 00003d62: JUMPDEST 00003d63: DUP4 00003d64: CALLDATALOAD 00003d65: PUSH2 0x3d6d 00003d68: DUP2 00003d69: PUSH2 0x388f 00003d6c: JUMP 00003d6d: JUMPDEST 00003d6e: SWAP3 00003d6f: POP 00003d70: PUSH1 0x20 00003d72: DUP5 00003d73: ADD 00003d74: CALLDATALOAD 00003d75: SWAP2 00003d76: POP 00003d77: PUSH1 0x40 00003d79: DUP5 00003d7a: ADD 00003d7b: CALLDATALOAD 00003d7c: PUSH2 0x3d16 00003d7f: DUP2 00003d80: PUSH2 0x388f 00003d83: JUMP 00003d84: JUMPDEST 00003d85: PUSH0 00003d86: PUSH1 0x20 00003d88: DUP3 00003d89: DUP5 00003d8a: SUB 00003d8b: SLT 00003d8c: ISZERO 00003d8d: PUSH2 0x3d94 00003d90: JUMPI 00003d91: PUSH0 00003d92: DUP1 00003d93: REVERT 00003d94: JUMPDEST 00003d95: DUP2 00003d96: CALLDATALOAD 00003d97: PUSH2 0x1263 00003d9a: DUP2 00003d9b: PUSH2 0x3c3e 00003d9e: JUMP 00003d9f: JUMPDEST 00003da0: PUSH1 0x20 00003da2: DUP1 00003da3: DUP3 00003da4: MSTORE 00003da5: DUP3 00003da6: MLOAD 00003da7: DUP3 00003da8: DUP3 00003da9: ADD 00003daa: DUP2 00003dab: SWAP1 00003dac: MSTORE 00003dad: PUSH0 00003dae: SWAP2 00003daf: SWAP1 00003db0: DUP5 00003db1: DUP3 00003db2: ADD 00003db3: SWAP1 00003db4: PUSH1 0x40 00003db6: DUP6 00003db7: ADD 00003db8: SWAP1 00003db9: DUP5 00003dba: JUMPDEST 00003dbb: DUP2 00003dbc: DUP2 00003dbd: LT 00003dbe: ISZERO 00003dbf: PUSH2 0x2e5b 00003dc2: JUMPI 00003dc3: DUP4 00003dc4: MLOAD 00003dc5: PUSH1 0x01 00003dc7: PUSH1 0x01 00003dc9: PUSH1 0xa0 00003dcb: SHL 00003dcc: SUB 00003dcd: AND 00003dce: DUP4 00003dcf: MSTORE 00003dd0: SWAP3 00003dd1: DUP5 00003dd2: ADD 00003dd3: SWAP3 00003dd4: SWAP2 00003dd5: DUP5 00003dd6: ADD 00003dd7: SWAP2 00003dd8: PUSH1 0x01 00003dda: ADD 00003ddb: PUSH2 0x3dba 00003dde: JUMP 00003ddf: JUMPDEST 00003de0: PUSH0 00003de1: DUP1 00003de2: PUSH0 00003de3: DUP1 00003de4: PUSH0 00003de5: DUP1 00003de6: PUSH1 0x60 00003de8: DUP8 00003de9: DUP10 00003dea: SUB 00003deb: SLT 00003dec: ISZERO 00003ded: PUSH2 0x3df4 00003df0: JUMPI 00003df1: PUSH0 00003df2: DUP1 00003df3: REVERT 00003df4: JUMPDEST 00003df5: DUP7 00003df6: CALLDATALOAD 00003df7: PUSH1 0x01 00003df9: PUSH1 0x01 00003dfb: PUSH1 0x40 00003dfd: SHL 00003dfe: SUB 00003dff: DUP1 00003e00: DUP3 00003e01: GT 00003e02: ISZERO 00003e03: PUSH2 0x3e0a 00003e06: JUMPI 00003e07: PUSH0 00003e08: DUP1 00003e09: REVERT 00003e0a: JUMPDEST 00003e0b: PUSH2 0x3e16 00003e0e: DUP11 00003e0f: DUP4 00003e10: DUP12 00003e11: ADD 00003e12: PUSH2 0x3a0d 00003e15: JUMP 00003e16: JUMPDEST 00003e17: SWAP1 00003e18: SWAP9 00003e19: POP 00003e1a: SWAP7 00003e1b: POP 00003e1c: PUSH1 0x20 00003e1e: DUP10 00003e1f: ADD 00003e20: CALLDATALOAD 00003e21: SWAP2 00003e22: POP 00003e23: DUP1 00003e24: DUP3 00003e25: GT 00003e26: ISZERO 00003e27: PUSH2 0x3e2e 00003e2a: JUMPI 00003e2b: PUSH0 00003e2c: DUP1 00003e2d: REVERT 00003e2e: JUMPDEST 00003e2f: PUSH2 0x3e3a 00003e32: DUP11 00003e33: DUP4 00003e34: DUP12 00003e35: ADD 00003e36: PUSH2 0x3a0d 00003e39: JUMP 00003e3a: JUMPDEST 00003e3b: SWAP1 00003e3c: SWAP7 00003e3d: POP 00003e3e: SWAP5 00003e3f: POP 00003e40: PUSH1 0x40 00003e42: DUP10 00003e43: ADD 00003e44: CALLDATALOAD 00003e45: SWAP2 00003e46: POP 00003e47: DUP1 00003e48: DUP3 00003e49: GT 00003e4a: ISZERO 00003e4b: PUSH2 0x3e52 00003e4e: JUMPI 00003e4f: PUSH0 00003e50: DUP1 00003e51: REVERT 00003e52: JUMPDEST 00003e53: POP 00003e54: PUSH2 0x3e5f 00003e57: DUP10 00003e58: DUP3 00003e59: DUP11 00003e5a: ADD 00003e5b: PUSH2 0x3a0d 00003e5e: JUMP 00003e5f: JUMPDEST 00003e60: SWAP8 00003e61: SWAP11 00003e62: SWAP7 00003e63: SWAP10 00003e64: POP 00003e65: SWAP5 00003e66: SWAP8 00003e67: POP 00003e68: SWAP3 00003e69: SWAP6 00003e6a: SWAP4 00003e6b: SWAP5 00003e6c: SWAP3 00003e6d: POP 00003e6e: POP 00003e6f: POP 00003e70: JUMP 00003e71: JUMPDEST 00003e72: PUSH0 00003e73: PUSH1 0x01 00003e75: PUSH1 0x01 00003e77: PUSH1 0x40 00003e79: SHL 00003e7a: SUB 00003e7b: DUP3 00003e7c: GT 00003e7d: ISZERO 00003e7e: PUSH2 0x3e89 00003e81: JUMPI 00003e82: PUSH2 0x3e89 00003e85: PUSH2 0x3a54 00003e88: JUMP 00003e89: JUMPDEST 00003e8a: POP 00003e8b: PUSH1 0x1f 00003e8d: ADD 00003e8e: PUSH1 0x1f 00003e90: NOT 00003e91: AND 00003e92: PUSH1 0x20 00003e94: ADD 00003e95: SWAP1 00003e96: JUMP 00003e97: JUMPDEST 00003e98: PUSH0 00003e99: DUP3 00003e9a: PUSH1 0x1f 00003e9c: DUP4 00003e9d: ADD 00003e9e: SLT 00003e9f: PUSH2 0x3ea6 00003ea2: JUMPI 00003ea3: PUSH0 00003ea4: DUP1 00003ea5: REVERT 00003ea6: JUMPDEST 00003ea7: DUP2 00003ea8: CALLDATALOAD 00003ea9: PUSH2 0x3eb4 00003eac: PUSH2 0x3b27 00003eaf: DUP3 00003eb0: PUSH2 0x3e71 00003eb3: JUMP 00003eb4: JUMPDEST 00003eb5: DUP2 00003eb6: DUP2 00003eb7: MSTORE 00003eb8: DUP5 00003eb9: PUSH1 0x20 00003ebb: DUP4 00003ebc: DUP7 00003ebd: ADD 00003ebe: ADD 00003ebf: GT 00003ec0: ISZERO 00003ec1: PUSH2 0x3ec8 00003ec4: JUMPI 00003ec5: PUSH0 00003ec6: DUP1 00003ec7: REVERT 00003ec8: JUMPDEST 00003ec9: DUP2 00003eca: PUSH1 0x20 00003ecc: DUP6 00003ecd: ADD 00003ece: PUSH1 0x20 00003ed0: DUP4 00003ed1: ADD 00003ed2: CALLDATACOPY 00003ed3: PUSH0 00003ed4: SWAP2 00003ed5: DUP2 00003ed6: ADD 00003ed7: PUSH1 0x20 00003ed9: ADD 00003eda: SWAP2 00003edb: SWAP1 00003edc: SWAP2 00003edd: MSTORE 00003ede: SWAP4 00003edf: SWAP3 00003ee0: POP 00003ee1: POP 00003ee2: POP 00003ee3: JUMP 00003ee4: JUMPDEST 00003ee5: PUSH1 0xff 00003ee7: DUP2 00003ee8: AND 00003ee9: DUP2 00003eea: EQ 00003eeb: PUSH2 0x249c 00003eee: JUMPI 00003eef: PUSH0 00003ef0: DUP1 00003ef1: REVERT 00003ef2: JUMPDEST 00003ef3: PUSH0 00003ef4: DUP1 00003ef5: PUSH0 00003ef6: DUP1 00003ef7: PUSH0 00003ef8: DUP1 00003ef9: PUSH0 00003efa: DUP1 00003efb: PUSH2 0x0100 00003efe: DUP10 00003eff: DUP12 00003f00: SUB 00003f01: SLT 00003f02: ISZERO 00003f03: PUSH2 0x3f0a 00003f06: JUMPI 00003f07: PUSH0 00003f08: DUP1 00003f09: REVERT 00003f0a: JUMPDEST 00003f0b: DUP9 00003f0c: CALLDATALOAD 00003f0d: PUSH2 0x3f15 00003f10: DUP2 00003f11: PUSH2 0x388f 00003f14: JUMP 00003f15: JUMPDEST 00003f16: SWAP8 00003f17: POP 00003f18: PUSH1 0x20 00003f1a: DUP10 00003f1b: ADD 00003f1c: CALLDATALOAD 00003f1d: PUSH1 0x01 00003f1f: PUSH1 0x01 00003f21: PUSH1 0x40 00003f23: SHL 00003f24: SUB 00003f25: DUP1 00003f26: DUP3 00003f27: GT 00003f28: ISZERO 00003f29: PUSH2 0x3f30 00003f2c: JUMPI 00003f2d: PUSH0 00003f2e: DUP1 00003f2f: REVERT 00003f30: JUMPDEST 00003f31: PUSH2 0x3f3c 00003f34: DUP13 00003f35: DUP4 00003f36: DUP14 00003f37: ADD 00003f38: PUSH2 0x3e97 00003f3b: JUMP 00003f3c: JUMPDEST 00003f3d: SWAP9 00003f3e: POP 00003f3f: PUSH1 0x40 00003f41: DUP12 00003f42: ADD 00003f43: CALLDATALOAD 00003f44: SWAP2 00003f45: POP 00003f46: DUP1 00003f47: DUP3 00003f48: GT 00003f49: ISZERO 00003f4a: PUSH2 0x3f51 00003f4d: JUMPI 00003f4e: PUSH0 00003f4f: DUP1 00003f50: REVERT 00003f51: JUMPDEST 00003f52: POP 00003f53: PUSH2 0x3f5e 00003f56: DUP12 00003f57: DUP3 00003f58: DUP13 00003f59: ADD 00003f5a: PUSH2 0x3e97 00003f5d: JUMP 00003f5e: JUMPDEST 00003f5f: SWAP7 00003f60: POP 00003f61: POP 00003f62: PUSH1 0x60 00003f64: DUP10 00003f65: ADD 00003f66: CALLDATALOAD 00003f67: PUSH2 0x3f6f 00003f6a: DUP2 00003f6b: PUSH2 0x3ee4 00003f6e: JUMP 00003f6f: JUMPDEST 00003f70: SWAP5 00003f71: POP 00003f72: PUSH2 0x3f7d 00003f75: PUSH1 0x80 00003f77: DUP11 00003f78: ADD 00003f79: PUSH2 0x3d21 00003f7c: JUMP 00003f7d: JUMPDEST 00003f7e: SWAP4 00003f7f: POP 00003f80: PUSH1 0xa0 00003f82: DUP10 00003f83: ADD 00003f84: CALLDATALOAD 00003f85: PUSH2 0x3f8d 00003f88: DUP2 00003f89: PUSH2 0x3c3e 00003f8c: JUMP 00003f8d: JUMPDEST 00003f8e: SWAP3 00003f8f: POP 00003f90: PUSH1 0xc0 00003f92: DUP10 00003f93: ADD 00003f94: CALLDATALOAD 00003f95: PUSH2 0x3f9d 00003f98: DUP2 00003f99: PUSH2 0x3c3e 00003f9c: JUMP 00003f9d: JUMPDEST 00003f9e: DUP1 00003f9f: SWAP3 00003fa0: POP 00003fa1: POP 00003fa2: PUSH1 0xe0 00003fa4: DUP10 00003fa5: ADD 00003fa6: CALLDATALOAD 00003fa7: SWAP1 00003fa8: POP 00003fa9: SWAP3 00003faa: SWAP6 00003fab: SWAP9 00003fac: POP 00003fad: SWAP3 00003fae: SWAP6 00003faf: SWAP9 00003fb0: SWAP1 00003fb1: SWAP4 00003fb2: SWAP7 00003fb3: POP 00003fb4: JUMP 00003fb5: JUMPDEST 00003fb6: PUSH1 0xff 00003fb8: PUSH1 0xf8 00003fba: SHL 00003fbb: DUP9 00003fbc: AND 00003fbd: DUP2 00003fbe: MSTORE 00003fbf: PUSH0 00003fc0: PUSH1 0x20 00003fc2: PUSH1 0xe0 00003fc4: PUSH1 0x20 00003fc6: DUP5 00003fc7: ADD 00003fc8: MSTORE 00003fc9: PUSH2 0x3fd5 00003fcc: PUSH1 0xe0 00003fce: DUP5 00003fcf: ADD 00003fd0: DUP11 00003fd1: PUSH2 0x383b 00003fd4: JUMP 00003fd5: JUMPDEST 00003fd6: DUP4 00003fd7: DUP2 00003fd8: SUB 00003fd9: PUSH1 0x40 00003fdb: DUP6 00003fdc: ADD 00003fdd: MSTORE 00003fde: PUSH2 0x3fe7 00003fe1: DUP2 00003fe2: DUP11 00003fe3: PUSH2 0x383b 00003fe6: JUMP 00003fe7: JUMPDEST 00003fe8: PUSH1 0x60 00003fea: DUP6 00003feb: ADD 00003fec: DUP10 00003fed: SWAP1 00003fee: MSTORE 00003fef: PUSH1 0x01 00003ff1: PUSH1 0x01 00003ff3: PUSH1 0xa0 00003ff5: SHL 00003ff6: SUB 00003ff7: DUP9 00003ff8: AND 00003ff9: PUSH1 0x80 00003ffb: DUP7 00003ffc: ADD 00003ffd: MSTORE 00003ffe: PUSH1 0xa0 00004000: DUP6 00004001: ADD 00004002: DUP8 00004003: SWAP1 00004004: MSTORE 00004005: DUP5 00004006: DUP2 00004007: SUB 00004008: PUSH1 0xc0 0000400a: DUP7 0000400b: ADD 0000400c: MSTORE 0000400d: DUP6 0000400e: MLOAD 0000400f: DUP1 00004010: DUP3 00004011: MSTORE 00004012: PUSH1 0x20 00004014: DUP1 00004015: DUP9 00004016: ADD 00004017: SWAP4 00004018: POP 00004019: SWAP1 0000401a: SWAP2 0000401b: ADD 0000401c: SWAP1 0000401d: PUSH0 0000401e: JUMPDEST 0000401f: DUP2 00004020: DUP2 00004021: LT 00004022: ISZERO 00004023: PUSH2 0x403a 00004026: JUMPI 00004027: DUP4 00004028: MLOAD 00004029: DUP4 0000402a: MSTORE 0000402b: SWAP3 0000402c: DUP5 0000402d: ADD 0000402e: SWAP3 0000402f: SWAP2 00004030: DUP5 00004031: ADD 00004032: SWAP2 00004033: PUSH1 0x01 00004035: ADD 00004036: PUSH2 0x401e 00004039: JUMP 0000403a: JUMPDEST 0000403b: POP 0000403c: SWAP1 0000403d: SWAP13 0000403e: SWAP12 0000403f: POP 00004040: POP 00004041: POP 00004042: POP 00004043: POP 00004044: POP 00004045: POP 00004046: POP 00004047: POP 00004048: POP 00004049: POP 0000404a: POP 0000404b: JUMP 0000404c: JUMPDEST 0000404d: PUSH0 0000404e: DUP1 0000404f: PUSH0 00004050: PUSH1 0x60 00004052: DUP5 00004053: DUP7 00004054: SUB 00004055: SLT 00004056: ISZERO 00004057: PUSH2 0x405e 0000405a: JUMPI 0000405b: PUSH0 0000405c: DUP1 0000405d: REVERT 0000405e: JUMPDEST 0000405f: DUP4 00004060: CALLDATALOAD 00004061: SWAP3 00004062: POP 00004063: PUSH1 0x20 00004065: DUP5 00004066: ADD 00004067: CALLDATALOAD 00004068: PUSH2 0x4070 0000406b: DUP2 0000406c: PUSH2 0x388f 0000406f: JUMP 00004070: JUMPDEST 00004071: SWAP2 00004072: POP 00004073: PUSH1 0x40 00004075: DUP5 00004076: ADD 00004077: CALLDATALOAD 00004078: PUSH2 0x3d16 0000407b: DUP2 0000407c: PUSH2 0x388f 0000407f: JUMP 00004080: JUMPDEST 00004081: PUSH0 00004082: DUP1 00004083: DUP3 00004084: DUP5 00004085: SUB 00004086: PUSH1 0x40 00004088: DUP2 00004089: SLT 0000408a: ISZERO 0000408b: PUSH2 0x4092 0000408e: JUMPI 0000408f: PUSH0 00004090: DUP1 00004091: REVERT 00004092: JUMPDEST 00004093: DUP4 00004094: CALLDATALOAD 00004095: SWAP3 00004096: POP 00004097: PUSH1 0x20 00004099: PUSH1 0x1f 0000409b: NOT 0000409c: DUP3 0000409d: ADD 0000409e: SLT 0000409f: ISZERO 000040a0: PUSH2 0x40a7 000040a3: JUMPI 000040a4: PUSH0 000040a5: DUP1 000040a6: REVERT 000040a7: JUMPDEST 000040a8: POP 000040a9: PUSH1 0x20 000040ab: DUP4 000040ac: ADD 000040ad: SWAP1 000040ae: POP 000040af: SWAP3 000040b0: POP 000040b1: SWAP3 000040b2: SWAP1 000040b3: POP 000040b4: JUMP 000040b5: JUMPDEST 000040b6: PUSH0 000040b7: DUP1 000040b8: PUSH0 000040b9: DUP1 000040ba: PUSH0 000040bb: DUP1 000040bc: PUSH0 000040bd: PUSH1 0xe0 000040bf: DUP9 000040c0: DUP11 000040c1: SUB 000040c2: SLT 000040c3: ISZERO 000040c4: PUSH2 0x40cb 000040c7: JUMPI 000040c8: PUSH0 000040c9: DUP1 000040ca: REVERT 000040cb: JUMPDEST 000040cc: DUP8 000040cd: CALLDATALOAD 000040ce: PUSH2 0x40d6 000040d1: DUP2 000040d2: PUSH2 0x388f 000040d5: JUMP 000040d6: JUMPDEST 000040d7: SWAP7 000040d8: POP 000040d9: PUSH1 0x20 000040db: DUP9 000040dc: ADD 000040dd: CALLDATALOAD 000040de: PUSH2 0x40e6 000040e1: DUP2 000040e2: PUSH2 0x388f 000040e5: JUMP 000040e6: JUMPDEST 000040e7: SWAP6 000040e8: POP 000040e9: PUSH1 0x40 000040eb: DUP9 000040ec: ADD 000040ed: CALLDATALOAD 000040ee: SWAP5 000040ef: POP 000040f0: PUSH1 0x60 000040f2: DUP9 000040f3: ADD 000040f4: CALLDATALOAD 000040f5: SWAP4 000040f6: POP 000040f7: PUSH1 0x80 000040f9: DUP9 000040fa: ADD 000040fb: CALLDATALOAD 000040fc: PUSH2 0x4104 000040ff: DUP2 00004100: PUSH2 0x3ee4 00004103: JUMP 00004104: JUMPDEST 00004105: SWAP7 00004106: SWAP10 00004107: SWAP6 00004108: SWAP9 00004109: POP 0000410a: SWAP4 0000410b: SWAP7 0000410c: SWAP3 0000410d: SWAP6 0000410e: SWAP5 0000410f: PUSH1 0xa0 00004111: DUP5 00004112: ADD 00004113: CALLDATALOAD 00004114: SWAP5 00004115: POP 00004116: PUSH1 0xc0 00004118: SWAP1 00004119: SWAP4 0000411a: ADD 0000411b: CALLDATALOAD 0000411c: SWAP3 0000411d: SWAP2 0000411e: POP 0000411f: POP 00004120: JUMP 00004121: JUMPDEST 00004122: PUSH0 00004123: DUP1 00004124: PUSH1 0x40 00004126: DUP4 00004127: DUP6 00004128: SUB 00004129: SLT 0000412a: ISZERO 0000412b: PUSH2 0x4132 0000412e: JUMPI 0000412f: PUSH0 00004130: DUP1 00004131: REVERT 00004132: JUMPDEST 00004133: DUP3 00004134: CALLDATALOAD 00004135: PUSH2 0x413d 00004138: DUP2 00004139: PUSH2 0x388f 0000413c: JUMP 0000413d: JUMPDEST 0000413e: SWAP2 0000413f: POP 00004140: PUSH1 0x20 00004142: DUP4 00004143: ADD 00004144: CALLDATALOAD 00004145: PUSH2 0x3c77 00004148: DUP2 00004149: PUSH2 0x388f 0000414c: JUMP 0000414d: JUMPDEST 0000414e: PUSH0 0000414f: PUSH1 0x20 00004151: DUP3 00004152: DUP5 00004153: SUB 00004154: SLT 00004155: ISZERO 00004156: PUSH2 0x415d 00004159: JUMPI 0000415a: PUSH0 0000415b: DUP1 0000415c: REVERT 0000415d: JUMPDEST 0000415e: POP 0000415f: MLOAD 00004160: SWAP2 00004161: SWAP1 00004162: POP 00004163: JUMP 00004164: JUMPDEST 00004165: PUSH1 0x01 00004167: DUP2 00004168: DUP2 00004169: SHR 0000416a: SWAP1 0000416b: DUP3 0000416c: AND 0000416d: DUP1 0000416e: PUSH2 0x4178 00004171: JUMPI 00004172: PUSH1 0x7f 00004174: DUP3 00004175: AND 00004176: SWAP2 00004177: POP 00004178: JUMPDEST 00004179: PUSH1 0x20 0000417b: DUP3 0000417c: LT 0000417d: DUP2 0000417e: SUB 0000417f: PUSH2 0x4196 00004182: JUMPI 00004183: PUSH4 0x4e487b71 00004188: PUSH1 0xe0 0000418a: SHL 0000418b: PUSH0 0000418c: MSTORE 0000418d: PUSH1 0x22 0000418f: PUSH1 0x04 00004191: MSTORE 00004192: PUSH1 0x24 00004194: PUSH0 00004195: REVERT 00004196: JUMPDEST 00004197: POP 00004198: SWAP2 00004199: SWAP1 0000419a: POP 0000419b: JUMP 0000419c: JUMPDEST 0000419d: PUSH4 0x4e487b71 000041a2: PUSH1 0xe0 000041a4: SHL 000041a5: PUSH0 000041a6: MSTORE 000041a7: PUSH1 0x11 000041a9: PUSH1 0x04 000041ab: MSTORE 000041ac: PUSH1 0x24 000041ae: PUSH0 000041af: REVERT 000041b0: JUMPDEST 000041b1: DUP1 000041b2: DUP3 000041b3: ADD 000041b4: DUP1 000041b5: DUP3 000041b6: GT 000041b7: ISZERO 000041b8: PUSH2 0x0eae 000041bb: JUMPI 000041bc: PUSH2 0x0eae 000041bf: PUSH2 0x419c 000041c2: JUMP 000041c3: JUMPDEST 000041c4: DUP2 000041c5: DUP4 000041c6: MSTORE 000041c7: DUP2 000041c8: DUP2 000041c9: PUSH1 0x20 000041cb: DUP6 000041cc: ADD 000041cd: CALLDATACOPY 000041ce: POP 000041cf: PUSH0 000041d0: DUP3 000041d1: DUP3 000041d2: ADD 000041d3: PUSH1 0x20 000041d5: SWAP1 000041d6: DUP2 000041d7: ADD 000041d8: SWAP2 000041d9: SWAP1 000041da: SWAP2 000041db: MSTORE 000041dc: PUSH1 0x1f 000041de: SWAP1 000041df: SWAP2 000041e0: ADD 000041e1: PUSH1 0x1f 000041e3: NOT 000041e4: AND 000041e5: SWAP1 000041e6: SWAP2 000041e7: ADD 000041e8: ADD 000041e9: SWAP1 000041ea: JUMP 000041eb: JUMPDEST 000041ec: PUSH0 000041ed: DUP4 000041ee: DUP4 000041ef: DUP6 000041f0: MSTORE 000041f1: PUSH1 0x20 000041f3: DUP1 000041f4: DUP7 000041f5: ADD 000041f6: SWAP6 000041f7: POP 000041f8: PUSH1 0x20 000041fa: DUP6 000041fb: PUSH1 0x05 000041fd: SHL 000041fe: DUP4 000041ff: ADD 00004200: ADD 00004201: DUP5 00004202: PUSH0 00004203: JUMPDEST 00004204: DUP8 00004205: DUP2 00004206: LT 00004207: ISZERO 00004208: PUSH2 0x426f 0000420b: JUMPI 0000420c: DUP5 0000420d: DUP4 0000420e: SUB 0000420f: PUSH1 0x1f 00004211: NOT 00004212: ADD 00004213: DUP10 00004214: MSTORE 00004215: DUP2 00004216: CALLDATALOAD 00004217: CALLDATASIZE 00004218: DUP9 00004219: SWAP1 0000421a: SUB 0000421b: PUSH1 0x1e 0000421d: NOT 0000421e: ADD 0000421f: DUP2 00004220: SLT 00004221: PUSH2 0x4228 00004224: JUMPI 00004225: PUSH0 00004226: DUP1 00004227: REVERT 00004228: JUMPDEST 00004229: DUP8 0000422a: ADD 0000422b: DUP5 0000422c: DUP2 0000422d: ADD 0000422e: SWAP1 0000422f: CALLDATALOAD 00004230: PUSH1 0x01 00004232: PUSH1 0x01 00004234: PUSH1 0x40 00004236: SHL 00004237: SUB 00004238: DUP2 00004239: GT 0000423a: ISZERO 0000423b: PUSH2 0x4242 0000423e: JUMPI 0000423f: PUSH0 00004240: DUP1 00004241: REVERT 00004242: JUMPDEST 00004243: DUP1 00004244: CALLDATASIZE 00004245: SUB 00004246: DUP3 00004247: SGT 00004248: ISZERO 00004249: PUSH2 0x4250 0000424c: JUMPI 0000424d: PUSH0 0000424e: DUP1 0000424f: REVERT 00004250: JUMPDEST 00004251: PUSH2 0x425b 00004254: DUP6 00004255: DUP3 00004256: DUP5 00004257: PUSH2 0x41c3 0000425a: JUMP 0000425b: JUMPDEST 0000425c: SWAP11 0000425d: DUP7 0000425e: ADD 0000425f: SWAP11 00004260: SWAP5 00004261: POP 00004262: POP 00004263: POP 00004264: SWAP1 00004265: DUP4 00004266: ADD 00004267: SWAP1 00004268: PUSH1 0x01 0000426a: ADD 0000426b: PUSH2 0x4203 0000426e: JUMP 0000426f: JUMPDEST 00004270: POP 00004271: SWAP1 00004272: SWAP8 00004273: SWAP7 00004274: POP 00004275: POP 00004276: POP 00004277: POP 00004278: POP 00004279: POP 0000427a: POP 0000427b: JUMP 0000427c: JUMPDEST 0000427d: PUSH1 0x60 0000427f: DUP1 00004280: DUP3 00004281: MSTORE 00004282: DUP2 00004283: ADD 00004284: DUP6 00004285: SWAP1 00004286: MSTORE 00004287: PUSH0 00004288: DUP7 00004289: PUSH1 0x80 0000428b: DUP4 0000428c: ADD 0000428d: DUP3 0000428e: JUMPDEST 0000428f: DUP9 00004290: DUP2 00004291: LT 00004292: ISZERO 00004293: PUSH2 0x42be 00004296: JUMPI 00004297: DUP3 00004298: CALLDATALOAD 00004299: PUSH2 0x42a1 0000429c: DUP2 0000429d: PUSH2 0x388f 000042a0: JUMP 000042a1: JUMPDEST 000042a2: PUSH1 0x01 000042a4: PUSH1 0x01 000042a6: PUSH1 0xa0 000042a8: SHL 000042a9: SUB 000042aa: AND 000042ab: DUP3 000042ac: MSTORE 000042ad: PUSH1 0x20 000042af: SWAP3 000042b0: DUP4 000042b1: ADD 000042b2: SWAP3 000042b3: SWAP1 000042b4: SWAP2 000042b5: ADD 000042b6: SWAP1 000042b7: PUSH1 0x01 000042b9: ADD 000042ba: PUSH2 0x428e 000042bd: JUMP 000042be: JUMPDEST 000042bf: POP 000042c0: PUSH1 0x20 000042c2: SWAP2 000042c3: POP 000042c4: DUP4 000042c5: DUP2 000042c6: SUB 000042c7: PUSH1 0x20 000042c9: DUP6 000042ca: ADD 000042cb: MSTORE 000042cc: DUP1 000042cd: DUP8 000042ce: MLOAD 000042cf: DUP1 000042d0: DUP4 000042d1: MSTORE 000042d2: PUSH1 0x20 000042d4: DUP4 000042d5: ADD 000042d6: SWAP2 000042d7: POP 000042d8: PUSH1 0x20 000042da: DUP10 000042db: ADD 000042dc: SWAP3 000042dd: POP 000042de: PUSH0 000042df: JUMPDEST 000042e0: DUP2 000042e1: DUP2 000042e2: LT 000042e3: ISZERO 000042e4: PUSH2 0x42fb 000042e7: JUMPI 000042e8: DUP4 000042e9: MLOAD 000042ea: DUP4 000042eb: MSTORE 000042ec: SWAP3 000042ed: DUP5 000042ee: ADD 000042ef: SWAP3 000042f0: SWAP2 000042f1: DUP5 000042f2: ADD 000042f3: SWAP2 000042f4: PUSH1 0x01 000042f6: ADD 000042f7: PUSH2 0x42df 000042fa: JUMP 000042fb: JUMPDEST 000042fc: POP 000042fd: POP 000042fe: DUP5 000042ff: DUP2 00004300: SUB 00004301: PUSH1 0x40 00004303: DUP7 00004304: ADD 00004305: MSTORE 00004306: PUSH2 0x4310 00004309: DUP2 0000430a: DUP8 0000430b: DUP10 0000430c: PUSH2 0x41eb 0000430f: JUMP 00004310: JUMPDEST 00004311: SWAP11 00004312: SWAP10 00004313: POP 00004314: POP 00004315: POP 00004316: POP 00004317: POP 00004318: POP 00004319: POP 0000431a: POP 0000431b: POP 0000431c: POP 0000431d: JUMP 0000431e: JUMPDEST 0000431f: PUSH0 00004320: PUSH1 0x20 00004322: DUP1 00004323: DUP4 00004324: DUP6 00004325: SUB 00004326: SLT 00004327: ISZERO 00004328: PUSH2 0x432f 0000432b: JUMPI 0000432c: PUSH0 0000432d: DUP1 0000432e: REVERT 0000432f: JUMPDEST 00004330: DUP3 00004331: MLOAD 00004332: PUSH1 0x01 00004334: PUSH1 0x01 00004336: PUSH1 0x40 00004338: SHL 00004339: SUB 0000433a: DUP1 0000433b: DUP3 0000433c: GT 0000433d: ISZERO 0000433e: PUSH2 0x4345 00004341: JUMPI 00004342: PUSH0 00004343: DUP1 00004344: REVERT 00004345: JUMPDEST 00004346: DUP2 00004347: DUP6 00004348: ADD 00004349: SWAP2 0000434a: POP 0000434b: DUP6 0000434c: PUSH1 0x1f 0000434e: DUP4 0000434f: ADD 00004350: SLT 00004351: PUSH2 0x4358 00004354: JUMPI 00004355: PUSH0 00004356: DUP1 00004357: REVERT 00004358: JUMPDEST 00004359: DUP2 0000435a: MLOAD 0000435b: PUSH2 0x4366 0000435e: PUSH2 0x3b27 00004361: DUP3 00004362: PUSH2 0x3a98 00004365: JUMP 00004366: JUMPDEST 00004367: DUP2 00004368: DUP2 00004369: MSTORE 0000436a: PUSH1 0x05 0000436c: SWAP2 0000436d: SWAP1 0000436e: SWAP2 0000436f: SHL 00004370: DUP4 00004371: ADD 00004372: DUP5 00004373: ADD 00004374: SWAP1 00004375: DUP5 00004376: DUP2 00004377: ADD 00004378: SWAP1 00004379: DUP9 0000437a: DUP4 0000437b: GT 0000437c: ISZERO 0000437d: PUSH2 0x4384 00004380: JUMPI 00004381: PUSH0 00004382: DUP1 00004383: REVERT 00004384: JUMPDEST 00004385: DUP6 00004386: DUP6 00004387: ADD 00004388: JUMPDEST 00004389: DUP4 0000438a: DUP2 0000438b: LT 0000438c: ISZERO 0000438d: PUSH2 0x43f2 00004390: JUMPI 00004391: DUP1 00004392: MLOAD 00004393: DUP6 00004394: DUP2 00004395: GT 00004396: ISZERO 00004397: PUSH2 0x439e 0000439a: JUMPI 0000439b: PUSH0 0000439c: DUP1 0000439d: REVERT 0000439e: JUMPDEST 0000439f: DUP7 000043a0: ADD 000043a1: PUSH1 0x3f 000043a3: DUP2 000043a4: ADD 000043a5: DUP12 000043a6: SGT 000043a7: PUSH2 0x43ae 000043aa: JUMPI 000043ab: PUSH0 000043ac: DUP1 000043ad: REVERT 000043ae: JUMPDEST 000043af: DUP8 000043b0: DUP2 000043b1: ADD 000043b2: MLOAD 000043b3: PUSH1 0x40 000043b5: PUSH2 0x43c0 000043b8: PUSH2 0x3b27 000043bb: DUP4 000043bc: PUSH2 0x3e71 000043bf: JUMP 000043c0: JUMPDEST 000043c1: DUP3 000043c2: DUP2 000043c3: MSTORE 000043c4: DUP14 000043c5: DUP3 000043c6: DUP5 000043c7: DUP7 000043c8: ADD 000043c9: ADD 000043ca: GT 000043cb: ISZERO 000043cc: PUSH2 0x43d3 000043cf: JUMPI 000043d0: PUSH0 000043d1: DUP1 000043d2: REVERT 000043d3: JUMPDEST 000043d4: PUSH2 0x43e2 000043d7: DUP4 000043d8: DUP13 000043d9: DUP4 000043da: ADD 000043db: DUP5 000043dc: DUP8 000043dd: ADD 000043de: PUSH2 0x3819 000043e1: JUMP 000043e2: JUMPDEST 000043e3: DUP7 000043e4: MSTORE 000043e5: POP 000043e6: POP 000043e7: POP 000043e8: SWAP2 000043e9: DUP7 000043ea: ADD 000043eb: SWAP2 000043ec: DUP7 000043ed: ADD 000043ee: PUSH2 0x4388 000043f1: JUMP 000043f2: JUMPDEST 000043f3: POP 000043f4: SWAP9 000043f5: SWAP8 000043f6: POP 000043f7: POP 000043f8: POP 000043f9: POP 000043fa: POP 000043fb: POP 000043fc: POP 000043fd: POP 000043fe: JUMP 000043ff: JUMPDEST 00004400: PUSH0 00004401: PUSH1 0x20 00004403: DUP3 00004404: DUP5 00004405: SUB 00004406: SLT 00004407: ISZERO 00004408: PUSH2 0x440f 0000440b: JUMPI 0000440c: PUSH0 0000440d: DUP1 0000440e: REVERT 0000440f: JUMPDEST 00004410: DUP2 00004411: MLOAD 00004412: PUSH2 0x1263 00004415: DUP2 00004416: PUSH2 0x3ee4 00004419: JUMP 0000441a: JUMPDEST 0000441b: PUSH4 0x4e487b71 00004420: PUSH1 0xe0 00004422: SHL 00004423: PUSH0 00004424: MSTORE 00004425: PUSH1 0x32 00004427: PUSH1 0x04 00004429: MSTORE 0000442a: PUSH1 0x24 0000442c: PUSH0 0000442d: REVERT 0000442e: JUMPDEST 0000442f: DUP2 00004430: DUP2 00004431: SUB 00004432: DUP2 00004433: DUP2 00004434: GT 00004435: ISZERO 00004436: PUSH2 0x0eae 00004439: JUMPI 0000443a: PUSH2 0x0eae 0000443d: PUSH2 0x419c 00004440: JUMP 00004441: JUMPDEST 00004442: PUSH0 00004443: DUP3 00004444: CALLDATALOAD 00004445: PUSH1 0x5e 00004447: NOT 00004448: DUP4 00004449: CALLDATASIZE 0000444a: SUB 0000444b: ADD 0000444c: DUP2 0000444d: SLT 0000444e: PUSH2 0x4455 00004451: JUMPI 00004452: PUSH0 00004453: DUP1 00004454: REVERT 00004455: JUMPDEST 00004456: SWAP2 00004457: SWAP1 00004458: SWAP2 00004459: ADD 0000445a: SWAP3 0000445b: SWAP2 0000445c: POP 0000445d: POP 0000445e: JUMP 0000445f: JUMPDEST 00004460: PUSH1 0x01 00004462: PUSH1 0x01 00004464: PUSH1 0xa0 00004466: SHL 00004467: SUB 00004468: SWAP4 00004469: SWAP1 0000446a: SWAP4 0000446b: AND 0000446c: DUP4 0000446d: MSTORE 0000446e: PUSH1 0x20 00004470: DUP4 00004471: ADD 00004472: SWAP2 00004473: SWAP1 00004474: SWAP2 00004475: MSTORE 00004476: PUSH1 0x40 00004478: DUP3 00004479: ADD 0000447a: MSTORE 0000447b: PUSH1 0x60 0000447d: ADD 0000447e: SWAP1 0000447f: JUMP 00004480: JUMPDEST 00004481: PUSH1 0x01 00004483: PUSH1 0x01 00004485: PUSH1 0xa0 00004487: SHL 00004488: SUB 00004489: DUP5 0000448a: AND 0000448b: DUP2 0000448c: MSTORE 0000448d: PUSH1 0x20 0000448f: DUP2 00004490: ADD 00004491: DUP4 00004492: SWAP1 00004493: MSTORE 00004494: PUSH1 0x60 00004496: DUP2 00004497: ADD 00004498: PUSH1 0x04 0000449a: DUP4 0000449b: LT 0000449c: PUSH2 0x44a7 0000449f: JUMPI 000044a0: PUSH2 0x44a7 000044a3: PUSH2 0x3900 000044a6: JUMP 000044a7: JUMPDEST 000044a8: DUP3 000044a9: PUSH1 0x40 000044ab: DUP4 000044ac: ADD 000044ad: MSTORE 000044ae: SWAP5 000044af: SWAP4 000044b0: POP 000044b1: POP 000044b2: POP 000044b3: POP 000044b4: JUMP 000044b5: JUMPDEST 000044b6: PUSH0 000044b7: DUP1 000044b8: PUSH1 0x40 000044ba: DUP4 000044bb: DUP6 000044bc: SUB 000044bd: SLT 000044be: ISZERO 000044bf: PUSH2 0x44c6 000044c2: JUMPI 000044c3: PUSH0 000044c4: DUP1 000044c5: REVERT 000044c6: JUMPDEST 000044c7: POP 000044c8: POP 000044c9: DUP1 000044ca: MLOAD 000044cb: PUSH1 0x20 000044cd: SWAP1 000044ce: SWAP2 000044cf: ADD 000044d0: MLOAD 000044d1: SWAP1 000044d2: SWAP3 000044d3: SWAP1 000044d4: SWAP2 000044d5: POP 000044d6: JUMP 000044d7: JUMPDEST 000044d8: PUSH0 000044d9: DUP1 000044da: DUP4 000044db: CALLDATALOAD 000044dc: PUSH1 0x1e 000044de: NOT 000044df: DUP5 000044e0: CALLDATASIZE 000044e1: SUB 000044e2: ADD 000044e3: DUP2 000044e4: SLT 000044e5: PUSH2 0x44ec 000044e8: JUMPI 000044e9: PUSH0 000044ea: DUP1 000044eb: REVERT 000044ec: JUMPDEST 000044ed: DUP4 000044ee: ADD 000044ef: DUP1 000044f0: CALLDATALOAD 000044f1: SWAP2 000044f2: POP 000044f3: PUSH1 0x01 000044f5: PUSH1 0x01 000044f7: PUSH1 0x40 000044f9: SHL 000044fa: SUB 000044fb: DUP3 000044fc: GT 000044fd: ISZERO 000044fe: PUSH2 0x4505 00004501: JUMPI 00004502: PUSH0 00004503: DUP1 00004504: REVERT 00004505: JUMPDEST 00004506: PUSH1 0x20 00004508: ADD 00004509: SWAP2 0000450a: POP 0000450b: PUSH1 0x05 0000450d: DUP2 0000450e: SWAP1 0000450f: SHL 00004510: CALLDATASIZE 00004511: SUB 00004512: DUP3 00004513: SGT 00004514: ISZERO 00004515: PUSH2 0x3a4d 00004518: JUMPI 00004519: PUSH0 0000451a: DUP1 0000451b: REVERT 0000451c: JUMPDEST 0000451d: JUMPDEST 0000451e: DUP2 0000451f: DUP2 00004520: LT 00004521: ISZERO 00004522: PUSH2 0x14a1 00004525: JUMPI 00004526: PUSH0 00004527: DUP2 00004528: SSTORE 00004529: PUSH1 0x01 0000452b: ADD 0000452c: PUSH2 0x451d 0000452f: JUMP 00004530: JUMPDEST 00004531: DUP1 00004532: SLOAD 00004533: PUSH0 00004534: DUP3 00004535: SSTORE 00004536: DUP1 00004537: ISZERO 00004538: PUSH2 0x14a1 0000453b: JUMPI 0000453c: DUP2 0000453d: PUSH0 0000453e: MSTORE 0000453f: PUSH1 0x20 00004541: PUSH0 00004542: KECCAK256 00004543: PUSH2 0x130b 00004546: DUP3 00004547: DUP3 00004548: ADD 00004549: DUP3 0000454a: PUSH2 0x451c 0000454d: JUMP 0000454e: JUMPDEST 0000454f: PUSH1 0x01 00004551: PUSH1 0x40 00004553: SHL 00004554: DUP3 00004555: GT 00004556: ISZERO 00004557: PUSH2 0x4562 0000455a: JUMPI 0000455b: PUSH2 0x4562 0000455e: PUSH2 0x3a54 00004561: JUMP 00004562: JUMPDEST 00004563: DUP1 00004564: SLOAD 00004565: DUP3 00004566: DUP3 00004567: SSTORE 00004568: DUP1 00004569: DUP4 0000456a: LT 0000456b: ISZERO 0000456c: PUSH2 0x130b 0000456f: JUMPI 00004570: DUP2 00004571: PUSH0 00004572: MSTORE 00004573: PUSH1 0x20 00004575: PUSH0 00004576: KECCAK256 00004577: PUSH2 0x132c 0000457a: DUP3 0000457b: DUP3 0000457c: ADD 0000457d: DUP6 0000457e: DUP4 0000457f: ADD 00004580: PUSH2 0x451c 00004583: JUMP 00004584: JUMPDEST 00004585: PUSH1 0x02 00004587: DUP2 00004588: LT 00004589: PUSH2 0x249c 0000458c: JUMPI 0000458d: PUSH0 0000458e: DUP1 0000458f: REVERT 00004590: JUMPDEST 00004591: DUP2 00004592: CALLDATALOAD 00004593: PUSH2 0x459b 00004596: DUP2 00004597: PUSH2 0x4584 0000459a: JUMP 0000459b: JUMPDEST 0000459c: PUSH1 0x02 0000459e: DUP2 0000459f: LT 000045a0: PUSH2 0x45ab 000045a3: JUMPI 000045a4: PUSH2 0x45ab 000045a7: PUSH2 0x3900 000045aa: JUMP 000045ab: JUMPDEST 000045ac: DUP2 000045ad: SLOAD 000045ae: PUSH1 0xff 000045b0: DUP3 000045b1: AND 000045b2: SWAP2 000045b3: POP 000045b4: DUP2 000045b5: PUSH1 0xff 000045b7: NOT 000045b8: DUP3 000045b9: AND 000045ba: OR 000045bb: DUP4 000045bc: SSTORE 000045bd: PUSH1 0x20 000045bf: DUP1 000045c0: DUP6 000045c1: ADD 000045c2: CALLDATALOAD 000045c3: PUSH2 0x45cb 000045c6: DUP2 000045c7: PUSH2 0x3c3e 000045ca: JUMP 000045cb: JUMPDEST 000045cc: PUSH2 0xffff 000045cf: NOT 000045d0: SWAP3 000045d1: SWAP1 000045d2: SWAP3 000045d3: AND 000045d4: SWAP1 000045d5: SWAP3 000045d6: OR 000045d7: SWAP1 000045d8: ISZERO 000045d9: ISZERO 000045da: PUSH1 0x08 000045dc: SHL 000045dd: PUSH2 0xff00 000045e0: AND 000045e1: OR 000045e2: DUP3 000045e3: SSTORE 000045e4: PUSH1 0x01 000045e6: SWAP1 000045e7: DUP2 000045e8: DUP4 000045e9: ADD 000045ea: SWAP1 000045eb: PUSH2 0x45f7 000045ee: PUSH1 0x40 000045f0: DUP7 000045f1: ADD 000045f2: DUP7 000045f3: PUSH2 0x44d7 000045f6: JUMP 000045f7: JUMPDEST 000045f8: PUSH1 0x01 000045fa: PUSH1 0x01 000045fc: PUSH1 0x40 000045fe: SHL 000045ff: SUB 00004600: DUP2 00004601: GT 00004602: ISZERO 00004603: PUSH2 0x460e 00004606: JUMPI 00004607: PUSH2 0x460e 0000460a: PUSH2 0x3a54 0000460d: JUMP 0000460e: JUMPDEST 0000460f: PUSH2 0x4618 00004612: DUP2 00004613: DUP6 00004614: PUSH2 0x454e 00004617: JUMP 00004618: JUMPDEST 00004619: PUSH0 0000461a: SWAP4 0000461b: DUP5 0000461c: MSTORE 0000461d: PUSH1 0x20 0000461f: DUP5 00004620: KECCAK256 00004621: SWAP4 00004622: JUMPDEST 00004623: DUP2 00004624: DUP2 00004625: LT 00004626: ISZERO 00004627: PUSH2 0x4644 0000462a: JUMPI 0000462b: DUP3 0000462c: CALLDATALOAD 0000462d: PUSH2 0x4635 00004630: DUP2 00004631: PUSH2 0x388f 00004634: JUMP 00004635: JUMPDEST 00004636: DUP6 00004637: DUP3 00004638: ADD 00004639: SSTORE 0000463a: SWAP2 0000463b: DUP4 0000463c: ADD 0000463d: SWAP2 0000463e: DUP6 0000463f: ADD 00004640: PUSH2 0x4622 00004643: JUMP 00004644: JUMPDEST 00004645: POP 00004646: POP 00004647: POP 00004648: POP 00004649: POP 0000464a: POP 0000464b: POP 0000464c: POP 0000464d: JUMP 0000464e: JUMPDEST 0000464f: PUSH0 00004650: DUP2 00004651: CALLDATALOAD 00004652: PUSH2 0x0eae 00004655: DUP2 00004656: PUSH2 0x388f 00004659: JUMP 0000465a: JUMPDEST 0000465b: DUP2 0000465c: CALLDATALOAD 0000465d: PUSH2 0x4665 00004660: DUP2 00004661: PUSH2 0x3c3e 00004664: JUMP 00004665: JUMPDEST 00004666: DUP2 00004667: SLOAD 00004668: SWAP1 00004669: ISZERO 0000466a: ISZERO 0000466b: PUSH1 0xff 0000466d: AND 0000466e: PUSH1 0xff 00004670: NOT 00004671: SWAP2 00004672: SWAP1 00004673: SWAP2 00004674: AND 00004675: OR 00004676: DUP2 00004677: SSTORE 00004678: PUSH1 0x01 0000467a: DUP1 0000467b: DUP3 0000467c: ADD 0000467d: PUSH1 0x20 0000467f: PUSH2 0x468a 00004682: DUP6 00004683: DUP3 00004684: ADD 00004685: DUP7 00004686: PUSH2 0x44d7 00004689: JUMP 0000468a: JUMPDEST 0000468b: PUSH1 0x01 0000468d: PUSH1 0x40 0000468f: SHL 00004690: DUP2 00004691: GT 00004692: ISZERO 00004693: PUSH2 0x469e 00004696: JUMPI 00004697: PUSH2 0x469e 0000469a: PUSH2 0x3a54 0000469d: JUMP 0000469e: JUMPDEST 0000469f: DUP4 000046a0: SLOAD 000046a1: DUP2 000046a2: DUP6 000046a3: SSTORE 000046a4: DUP1 000046a5: DUP3 000046a6: LT 000046a7: ISZERO 000046a8: PUSH2 0x4710 000046ab: JUMPI 000046ac: PUSH1 0x01 000046ae: PUSH1 0x01 000046b0: PUSH1 0xff 000046b2: SHL 000046b3: SUB 000046b4: DUP2 000046b5: DUP2 000046b6: AND 000046b7: DUP3 000046b8: EQ 000046b9: PUSH2 0x46c4 000046bc: JUMPI 000046bd: PUSH2 0x46c4 000046c0: PUSH2 0x419c 000046c3: JUMP 000046c4: JUMPDEST 000046c5: DUP1 000046c6: DUP4 000046c7: AND 000046c8: DUP4 000046c9: EQ 000046ca: PUSH2 0x46d5 000046cd: JUMPI 000046ce: PUSH2 0x46d5 000046d1: PUSH2 0x419c 000046d4: JUMP 000046d5: JUMPDEST 000046d6: POP 000046d7: DUP5 000046d8: PUSH0 000046d9: MSTORE 000046da: PUSH1 0x20 000046dc: PUSH0 000046dd: KECCAK256 000046de: DUP2 000046df: PUSH1 0x01 000046e1: SHL 000046e2: DUP2 000046e3: ADD 000046e4: DUP4 000046e5: PUSH1 0x01 000046e7: SHL 000046e8: DUP3 000046e9: ADD 000046ea: SWAP2 000046eb: POP 000046ec: JUMPDEST 000046ed: DUP1 000046ee: DUP3 000046ef: LT 000046f0: ISZERO 000046f1: PUSH2 0x470d 000046f4: JUMPI 000046f5: PUSH0 000046f6: DUP3 000046f7: SSTORE 000046f8: PUSH2 0x4702 000046fb: DUP9 000046fc: DUP4 000046fd: ADD 000046fe: PUSH2 0x4530 00004701: JUMP 00004702: JUMPDEST 00004703: PUSH1 0x02 00004705: DUP3 00004706: ADD 00004707: SWAP2 00004708: POP 00004709: PUSH2 0x46ec 0000470c: JUMP 0000470d: JUMPDEST 0000470e: POP 0000470f: POP 00004710: JUMPDEST 00004711: POP 00004712: PUSH0 00004713: SWAP4 00004714: DUP5 00004715: MSTORE 00004716: PUSH1 0x20 00004718: DUP5 00004719: KECCAK256 0000471a: SWAP4 0000471b: DUP3 0000471c: SWAP1 0000471d: JUMPDEST 0000471e: DUP3 0000471f: DUP2 00004720: LT 00004721: ISZERO 00004722: PUSH2 0x474a 00004725: JUMPI 00004726: PUSH2 0x4738 00004729: PUSH2 0x4732 0000472c: DUP4 0000472d: DUP7 0000472e: PUSH2 0x4441 00004731: JUMP 00004732: JUMPDEST 00004733: DUP8 00004734: PUSH2 0x4590 00004737: JUMP 00004738: JUMPDEST 00004739: PUSH1 0x02 0000473b: SWAP6 0000473c: SWAP1 0000473d: SWAP6 0000473e: ADD 0000473f: SWAP5 00004740: SWAP1 00004741: DUP5 00004742: ADD 00004743: SWAP1 00004744: DUP7 00004745: ADD 00004746: PUSH2 0x471d 00004749: JUMP 0000474a: JUMPDEST 0000474b: POP 0000474c: POP 0000474d: POP 0000474e: POP 0000474f: POP 00004750: POP 00004751: POP 00004752: PUSH2 0x14a1 00004755: PUSH2 0x4760 00004758: PUSH1 0x40 0000475a: DUP5 0000475b: ADD 0000475c: PUSH2 0x464e 0000475f: JUMP 00004760: JUMPDEST 00004761: PUSH1 0x02 00004763: DUP4 00004764: ADD 00004765: DUP1 00004766: SLOAD 00004767: PUSH1 0x01 00004769: PUSH1 0x01 0000476b: PUSH1 0xa0 0000476d: SHL 0000476e: SUB 0000476f: NOT 00004770: AND 00004771: PUSH1 0x01 00004773: PUSH1 0x01 00004775: PUSH1 0xa0 00004777: SHL 00004778: SUB 00004779: SWAP3 0000477a: SWAP1 0000477b: SWAP3 0000477c: AND 0000477d: SWAP2 0000477e: SWAP1 0000477f: SWAP2 00004780: OR 00004781: SWAP1 00004782: SSTORE 00004783: JUMP 00004784: JUMPDEST 00004785: PUSH0 00004786: DUP1 00004787: DUP4 00004788: CALLDATALOAD 00004789: PUSH1 0x1e 0000478b: NOT 0000478c: DUP5 0000478d: CALLDATASIZE 0000478e: SUB 0000478f: ADD 00004790: DUP2 00004791: SLT 00004792: PUSH2 0x4799 00004795: JUMPI 00004796: PUSH0 00004797: DUP1 00004798: REVERT 00004799: JUMPDEST 0000479a: DUP4 0000479b: ADD 0000479c: PUSH1 0x20 0000479e: DUP2 0000479f: ADD 000047a0: SWAP3 000047a1: POP 000047a2: CALLDATALOAD 000047a3: SWAP1 000047a4: POP 000047a5: PUSH1 0x01 000047a7: PUSH1 0x01 000047a9: PUSH1 0x40 000047ab: SHL 000047ac: SUB 000047ad: DUP2 000047ae: GT 000047af: ISZERO 000047b0: PUSH2 0x47b7 000047b3: JUMPI 000047b4: PUSH0 000047b5: DUP1 000047b6: REVERT 000047b7: JUMPDEST 000047b8: DUP1 000047b9: PUSH1 0x05 000047bb: SHL 000047bc: CALLDATASIZE 000047bd: SUB 000047be: DUP3 000047bf: SGT 000047c0: ISZERO 000047c1: PUSH2 0x3a4d 000047c4: JUMPI 000047c5: PUSH0 000047c6: DUP1 000047c7: REVERT 000047c8: JUMPDEST 000047c9: DUP1 000047ca: CALLDATALOAD 000047cb: PUSH2 0x37fb 000047ce: DUP2 000047cf: PUSH2 0x388f 000047d2: JUMP 000047d3: JUMPDEST 000047d4: PUSH0 000047d5: PUSH1 0x40 000047d7: PUSH4 0xffffffff 000047dc: PUSH1 0xe0 000047de: SHL 000047df: DUP6 000047e0: AND 000047e1: DUP4 000047e2: MSTORE 000047e3: PUSH1 0x20 000047e5: PUSH1 0x40 000047e7: DUP2 000047e8: DUP6 000047e9: ADD 000047ea: MSTORE 000047eb: PUSH1 0xa0 000047ed: DUP5 000047ee: ADD 000047ef: DUP6 000047f0: CALLDATALOAD 000047f1: PUSH2 0x47f9 000047f4: DUP2 000047f5: PUSH2 0x3c3e 000047f8: JUMP 000047f9: JUMPDEST 000047fa: ISZERO 000047fb: ISZERO 000047fc: PUSH1 0x40 000047fe: DUP7 000047ff: ADD 00004800: MSTORE 00004801: PUSH2 0x480c 00004804: DUP7 00004805: DUP4 00004806: ADD 00004807: DUP8 00004808: PUSH2 0x4784 0000480b: JUMP 0000480c: JUMPDEST 0000480d: PUSH1 0x60 0000480f: DUP1 00004810: PUSH1 0x60 00004812: DUP10 00004813: ADD 00004814: MSTORE 00004815: DUP4 00004816: DUP3 00004817: DUP6 00004818: MSTORE 00004819: PUSH1 0xc0 0000481b: DUP10 0000481c: ADD 0000481d: SWAP1 0000481e: POP 0000481f: PUSH1 0xc0 00004821: DUP4 00004822: PUSH1 0x05 00004824: SHL 00004825: DUP11 00004826: ADD 00004827: ADD 00004828: SWAP5 00004829: POP 0000482a: DUP4 0000482b: PUSH0 0000482c: JUMPDEST 0000482d: DUP5 0000482e: DUP2 0000482f: LT 00004830: ISZERO 00004831: PUSH2 0x48e3 00004834: JUMPI 00004835: DUP11 00004836: DUP8 00004837: SUB 00004838: PUSH1 0xbf 0000483a: NOT 0000483b: ADD 0000483c: DUP4 0000483d: MSTORE 0000483e: DUP2 0000483f: CALLDATALOAD 00004840: CALLDATASIZE 00004841: DUP8 00004842: SWAP1 00004843: SUB 00004844: PUSH1 0x5e 00004846: NOT 00004847: ADD 00004848: DUP2 00004849: SLT 0000484a: PUSH2 0x4851 0000484d: JUMPI 0000484e: PUSH0 0000484f: DUP1 00004850: REVERT 00004851: JUMPDEST 00004852: DUP7 00004853: ADD 00004854: DUP8 00004855: DUP6 00004856: ADD 00004857: DUP2 00004858: CALLDATALOAD 00004859: PUSH2 0x4861 0000485c: DUP2 0000485d: PUSH2 0x4584 00004860: JUMP 00004861: JUMPDEST 00004862: PUSH2 0x486b 00004865: DUP11 00004866: DUP3 00004867: PUSH2 0x3914 0000486a: JUMP 0000486b: JUMPDEST 0000486c: POP 0000486d: DUP10 0000486e: DUP3 0000486f: ADD 00004870: CALLDATALOAD 00004871: PUSH2 0x4879 00004874: DUP2 00004875: PUSH2 0x3c3e 00004878: JUMP 00004879: JUMPDEST 0000487a: ISZERO 0000487b: ISZERO 0000487c: DUP10 0000487d: DUP12 0000487e: ADD 0000487f: MSTORE 00004880: PUSH2 0x488b 00004883: DUP3 00004884: DUP13 00004885: ADD 00004886: DUP4 00004887: PUSH2 0x4784 0000488a: JUMP 0000488b: JUMPDEST 0000488c: DUP11 0000488d: DUP14 0000488e: ADD 0000488f: DUP9 00004890: SWAP1 00004891: MSTORE 00004892: SWAP2 00004893: DUP3 00004894: SWAP1 00004895: MSTORE 00004896: SWAP1 00004897: SWAP2 00004898: POP 00004899: PUSH0 0000489a: PUSH1 0x80 0000489c: DUP11 0000489d: ADD 0000489e: JUMPDEST 0000489f: DUP4 000048a0: DUP3 000048a1: LT 000048a2: ISZERO 000048a3: PUSH2 0x48ce 000048a6: JUMPI 000048a7: DUP3 000048a8: CALLDATALOAD 000048a9: PUSH2 0x48b1 000048ac: DUP2 000048ad: PUSH2 0x388f 000048b0: JUMP 000048b1: JUMPDEST 000048b2: PUSH1 0x01 000048b4: PUSH1 0x01 000048b6: PUSH1 0xa0 000048b8: SHL 000048b9: SUB 000048ba: AND 000048bb: DUP2 000048bc: MSTORE 000048bd: SWAP2 000048be: DUP12 000048bf: ADD 000048c0: SWAP2 000048c1: PUSH1 0x01 000048c3: SWAP2 000048c4: SWAP1 000048c5: SWAP2 000048c6: ADD 000048c7: SWAP1 000048c8: DUP12 000048c9: ADD 000048ca: PUSH2 0x489e 000048cd: JUMP 000048ce: JUMPDEST 000048cf: SWAP10 000048d0: POP 000048d1: POP 000048d2: POP 000048d3: SWAP3 000048d4: DUP9 000048d5: ADD 000048d6: SWAP3 000048d7: POP 000048d8: SWAP1 000048d9: DUP8 000048da: ADD 000048db: SWAP1 000048dc: PUSH1 0x01 000048de: ADD 000048df: PUSH2 0x482c 000048e2: JUMP 000048e3: JUMPDEST 000048e4: POP 000048e5: POP 000048e6: POP 000048e7: POP 000048e8: POP 000048e9: POP 000048ea: PUSH2 0x48f5 000048ed: PUSH1 0x40 000048ef: DUP8 000048f0: ADD 000048f1: PUSH2 0x47c8 000048f4: JUMP 000048f5: JUMPDEST 000048f6: PUSH1 0x01 000048f8: PUSH1 0x01 000048fa: PUSH1 0xa0 000048fc: SHL 000048fd: SUB 000048fe: DUP2 000048ff: AND 00004900: PUSH1 0x80 00004902: DUP8 00004903: ADD 00004904: MSTORE 00004905: SWAP3 00004906: POP 00004907: SWAP7 00004908: SWAP6 00004909: POP 0000490a: POP 0000490b: POP 0000490c: POP 0000490d: POP 0000490e: POP 0000490f: JUMP 00004910: JUMPDEST 00004911: DUP3 00004912: DUP2 00004913: MSTORE 00004914: PUSH1 0x40 00004916: DUP2 00004917: ADD 00004918: DUP3 00004919: CALLDATALOAD 0000491a: PUSH2 0x4922 0000491d: DUP2 0000491e: PUSH2 0x3c3e 00004921: JUMP 00004922: JUMPDEST 00004923: DUP1 00004924: ISZERO 00004925: ISZERO 00004926: PUSH1 0x20 00004928: DUP5 00004929: ADD 0000492a: MSTORE 0000492b: POP 0000492c: SWAP4 0000492d: SWAP3 0000492e: POP 0000492f: POP 00004930: POP 00004931: JUMP 00004932: JUMPDEST 00004933: PUSH4 0x4e487b71 00004938: PUSH1 0xe0 0000493a: SHL 0000493b: PUSH0 0000493c: MSTORE 0000493d: PUSH1 0x12 0000493f: PUSH1 0x04 00004941: MSTORE 00004942: PUSH1 0x24 00004944: PUSH0 00004945: REVERT 00004946: JUMPDEST 00004947: PUSH0 00004948: PUSH1 0x20 0000494a: DUP3 0000494b: DUP5 0000494c: SUB 0000494d: SLT 0000494e: ISZERO 0000494f: PUSH2 0x4956 00004952: JUMPI 00004953: PUSH0 00004954: DUP1 00004955: REVERT 00004956: JUMPDEST 00004957: DUP2 00004958: MLOAD 00004959: PUSH2 0x1263 0000495c: DUP2 0000495d: PUSH2 0x3c3e 00004960: JUMP 00004961: JUMPDEST 00004962: PUSH1 0x1f 00004964: DUP3 00004965: GT 00004966: ISZERO 00004967: PUSH2 0x130b 0000496a: JUMPI 0000496b: DUP1 0000496c: PUSH0 0000496d: MSTORE 0000496e: PUSH1 0x20 00004970: PUSH0 00004971: KECCAK256 00004972: PUSH1 0x1f 00004974: DUP5 00004975: ADD 00004976: PUSH1 0x05 00004978: SHR 00004979: DUP2 0000497a: ADD 0000497b: PUSH1 0x20 0000497d: DUP6 0000497e: LT 0000497f: ISZERO 00004980: PUSH2 0x4986 00004983: JUMPI 00004984: POP 00004985: DUP1 00004986: JUMPDEST 00004987: PUSH2 0x2b91 0000498a: PUSH1 0x1f 0000498c: DUP6 0000498d: ADD 0000498e: PUSH1 0x05 00004990: SHR 00004991: DUP4 00004992: ADD 00004993: DUP3 00004994: PUSH2 0x451c 00004997: JUMP 00004998: JUMPDEST 00004999: DUP2 0000499a: MLOAD 0000499b: PUSH1 0x01 0000499d: PUSH1 0x01 0000499f: PUSH1 0x40 000049a1: SHL 000049a2: SUB 000049a3: DUP2 000049a4: GT 000049a5: ISZERO 000049a6: PUSH2 0x49b1 000049a9: JUMPI 000049aa: PUSH2 0x49b1 000049ad: PUSH2 0x3a54 000049b0: JUMP 000049b1: JUMPDEST 000049b2: PUSH2 0x49c5 000049b5: DUP2 000049b6: PUSH2 0x49bf 000049b9: DUP5 000049ba: SLOAD 000049bb: PUSH2 0x4164 000049be: JUMP 000049bf: JUMPDEST 000049c0: DUP5 000049c1: PUSH2 0x4961 000049c4: JUMP 000049c5: JUMPDEST 000049c6: PUSH1 0x20 000049c8: DUP1 000049c9: PUSH1 0x1f 000049cb: DUP4 000049cc: GT 000049cd: PUSH1 0x01 000049cf: DUP2 000049d0: EQ 000049d1: PUSH2 0x49f8 000049d4: JUMPI 000049d5: PUSH0 000049d6: DUP5 000049d7: ISZERO 000049d8: PUSH2 0x49e1 000049db: JUMPI 000049dc: POP 000049dd: DUP6 000049de: DUP4 000049df: ADD 000049e0: MLOAD 000049e1: JUMPDEST 000049e2: PUSH0 000049e3: NOT 000049e4: PUSH1 0x03 000049e6: DUP7 000049e7: SWAP1 000049e8: SHL 000049e9: SHR 000049ea: NOT 000049eb: AND 000049ec: PUSH1 0x01 000049ee: DUP6 000049ef: SWAP1 000049f0: SHL 000049f1: OR 000049f2: DUP6 000049f3: SSTORE 000049f4: PUSH2 0x1fce 000049f7: JUMP 000049f8: JUMPDEST 000049f9: PUSH0 000049fa: DUP6 000049fb: DUP2 000049fc: MSTORE 000049fd: PUSH1 0x20 000049ff: DUP2 00004a00: KECCAK256 00004a01: PUSH1 0x1f 00004a03: NOT 00004a04: DUP7 00004a05: AND 00004a06: SWAP2 00004a07: JUMPDEST 00004a08: DUP3 00004a09: DUP2 00004a0a: LT 00004a0b: ISZERO 00004a0c: PUSH2 0x4a26 00004a0f: JUMPI 00004a10: DUP9 00004a11: DUP7 00004a12: ADD 00004a13: MLOAD 00004a14: DUP3 00004a15: SSTORE 00004a16: SWAP5 00004a17: DUP5 00004a18: ADD 00004a19: SWAP5 00004a1a: PUSH1 0x01 00004a1c: SWAP1 00004a1d: SWAP2 00004a1e: ADD 00004a1f: SWAP1 00004a20: DUP5 00004a21: ADD 00004a22: PUSH2 0x4a07 00004a25: JUMP 00004a26: JUMPDEST 00004a27: POP 00004a28: DUP6 00004a29: DUP3 00004a2a: LT 00004a2b: ISZERO 00004a2c: PUSH2 0x4a43 00004a2f: JUMPI 00004a30: DUP8 00004a31: DUP6 00004a32: ADD 00004a33: MLOAD 00004a34: PUSH0 00004a35: NOT 00004a36: PUSH1 0x03 00004a38: DUP9 00004a39: SWAP1 00004a3a: SHL 00004a3b: PUSH1 0xf8 00004a3d: AND 00004a3e: SHR 00004a3f: NOT 00004a40: AND 00004a41: DUP2 00004a42: SSTORE 00004a43: JUMPDEST 00004a44: POP 00004a45: POP 00004a46: POP 00004a47: POP 00004a48: POP 00004a49: PUSH1 0x01 00004a4b: SWAP1 00004a4c: DUP2 00004a4d: SHL 00004a4e: ADD 00004a4f: SWAP1 00004a50: SSTORE 00004a51: POP 00004a52: JUMP 00004a53: JUMPDEST 00004a54: PUSH0 00004a55: PUSH1 0xff 00004a57: DUP4 00004a58: AND 00004a59: DUP1 00004a5a: PUSH2 0x4a71 00004a5d: JUMPI 00004a5e: PUSH4 0x4e487b71 00004a63: PUSH1 0xe0 00004a65: SHL 00004a66: PUSH0 00004a67: MSTORE 00004a68: PUSH1 0x12 00004a6a: PUSH1 0x04 00004a6c: MSTORE 00004a6d: PUSH1 0x24 00004a6f: PUSH0 00004a70: REVERT 00004a71: JUMPDEST 00004a72: DUP1 00004a73: PUSH1 0xff 00004a75: DUP5 00004a76: AND 00004a77: MOD 00004a78: SWAP2 00004a79: POP 00004a7a: POP 00004a7b: SWAP3 00004a7c: SWAP2 00004a7d: POP 00004a7e: POP 00004a7f: JUMP 00004a80: JUMPDEST 00004a81: PUSH0 00004a82: DUP3 00004a83: MLOAD 00004a84: PUSH2 0x4455 00004a87: DUP2 00004a88: DUP5 00004a89: PUSH1 0x20 00004a8b: DUP8 00004a8c: ADD 00004a8d: PUSH2 0x3819 00004a90: JUMP 00004a91: INVALID 00004a92: MSTORE 00004a93: UNKNOWN(0xC6) 00004a94: ORIGIN 00004a95: SELFBALANCE 00004a96: UNKNOWN(0xE1) 00004a97: DELEGATECALL 00004a98: PUSH30 0xb19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d942 00004ab7: PUSH2 0xc751 00004aba: PUSH29 0xc8ff89f61c0ce93598e3c849801011dee649a6a557d100b1fadd3142ab 00004ad8: UNKNOWN(0x2A) 00004ad9: UNKNOWN(0xD7) 00004ada: CALL 00004adb: CALLER 00004adc: PUSH31 0xa4d97112bcc8337fc11ce5b20cb04ad038adf9981902dd7bc7dec4dceedda7 00004afc: PUSH22 0xe58dd541e08a116c6c53815c0bd028192f7b6268009b 00004b13: PUSH24 0x9b17422d0df92223018b32b4d1fa46e071723d6817e2486d 00004b2c: STOP 00004b2d: EXTCODESIZE 00004b2e: UNKNOWN(0xEC) 00004b2f: UNKNOWN(0xC5) 00004b30: PUSH0 00004b31: STOP 00004b32: LOG2 00004b33: PUSH5 0x6970667358 00004b39: UNKNOWN(0x22) 00004b3a: SLT 00004b3b: KECCAK256 00004b3c: CREATE 00004b3d: UNKNOWN(0xEE) 00004b3e: JUMPDEST 00004b3f: UNKNOWN(0xC4) 00004b40: SHR 00004b41: SHR 00004b42: UNKNOWN(0xB2) 00004b43: GAS 00004b44: PUSH14 0xf0bfa546aa1c105ef840b60049c9 00004b53: UNKNOWN(0xCE) 00004b54: UNKNOWN(0xE6) 00004b55: UNKNOWN(0x2F) 00004b56: SELFBALANCE 00004b57: COINBASE 00004b58: UNKNOWN(0xC6) 00004b59: UNKNOWN(0xC6) 00004b5a: PUSH28
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | slither | VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "processor",
"type": "function",
"source_mapping": {
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336
],
"start": 12206,
"length": 706,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/library/VaultLib.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-vqubff6j/src/library/VaultLib.sol",
"filename_relative": "src/library/VaultLib.sol"
},
"type_specific_fields": {
"parent": {
"name": "VaultLib",
"type": "contract",
"source_mapping": {
"lines": [
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337
],
"start": 261,
"length": 12653,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/library/VaultLib.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-vqubff6j/src/library/VaultLib.sol",
"filename_relative": "src/library/VaultLib.sol"
}
},
"signature": "processor(address[],uint256[],bytes[])"
}
},
{
"name": "(success,returnData_) = targets[i].call{value: values[i]}(data[i])",
"type": "node",
"source_mapping": {
"lines": [
329
],
"start": 12595,
"length": 85,
"ending_column": 98,
"is_dependency": false,
"filename_short": "src/library/VaultLib.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-vqubff6j/src/library/VaultLib.sol",
"filename_relative": "src/library/VaultLib.sol"
},
"type_specific_fields": {
"parent": {
"name": "processor",
"type": "function",
"source_mapping": {
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336
],
"start": 12206,
"length": 706,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/library/VaultLib.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-vqubff6j/src/library/VaultLib.sol",
"filename_relative": "src/library/VaultLib.sol"
},
"type_specific_fields": {
"parent": {
"name": "VaultLib",
"type": "contract",
"source_mapping": {
"lines": [
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337
],
"start": 261,
"length": 12653,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/library/VaultLib.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-vqubff6j/src/library/VaultLib.sol",
"filename_relative": "src/library/VaultLib.sol"
}
},
"signature": "processor(address[],uint256[],bytes[])"
}
}
}
}
],
"locations": [
{
"file": "src/library/VaultLib.sol",
"name": "processor",
"type": "function",
"lines": [
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336
]
},
{
"file": "src/library/VaultLib.sol",
"name": "(success,returnData_) = targets[i].call{value: values[i]}(data[i])",
"type": "node",
"lines": [
329
]
}
],
"description": "VaultLib.processor(address[],uint256[],bytes[]) (src/library/VaultLib.sol#319-336) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,returnData_) = targets[i].call{value: values[i]}(data[i]) (src/library/VaultLib.sol#329)"
}
|
| high | other | slither | TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
412,
413,
414,
415
],
"start": 14092,
"length": 232,
"ending_column": 6,
"is_dependency": true,
"filename_short": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-vqubff6j/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"filename_relative": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472
],
"start": 1084,
"length": 15205,
"ending_column": 2,
"is_dependency": true,
"filename_short": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-vqubff6j/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"filename_relative": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
},
{
"name": "(success,returndata) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
413
],
"start": 14189,
"length": 73,
"ending_column": 82,
"is_dependency": true,
"filename_short": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-vqubff6j/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"filename_relative": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
412,
413,
414,
415
],
"start": 14092,
"length": 232,
"ending_column": 6,
"is_dependency": true,
"filename_short": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-vqubff6j/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"filename_relative": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472
],
"start": 1084,
"length": 15205,
"ending_column": 2,
"is_dependency": true,
"filename_short": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-vqubff6j/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"filename_relative": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
}
],
"locations": [
{
"file": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"name": "_execute",
"type": "function",
"lines": [
412,
413,
414,
415
]
},
{
"file": "lib/openzeppelin-contracts/contracts/governance/TimelockController.sol",
"name": "(success,returndata) = target.call{value: value}(data)",
"type": "node",
"lines": [
413
]
}
],
"description": "TimelockController._execute(address,uint256,bytes) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#412-415) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,returndata) = target.call{value: value}(data) (lib/openzeppelin-contracts/contracts/governance/TimelockController.sol#413)"
}
|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0xc0950f723abeb36de24046f2cb6cd84d2ddc55de3d563c9017e9ac04c94eb60b
call_targets:
0xe46adc117d08a5bcf70cb178b239138e1526a6b6
target_varies:
no
classification:
constant_target
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "sink_reached",
"attempts": 2,
"trace_id": "0xc0950f723abeb36de24046f2cb6cd84d2ddc55de3d563c9017e9ac04c94eb60b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe46adc117d08a5bcf70cb178b239138e1526a6b6"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xecfe5f93",
"selector": "0xecfe5f93",
"calldata_variants": [
"0xecfe5f93",
"0xecfe5f930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedaafe20",
"selector": "0xedaafe20",
"calldata_variants": [
"0xedaafe20",
"0xedaafe200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef8b30f7",
"selector": "0xef8b30f7",
"calldata_variants": [
"0xef8b30f7",
"0xef8b30f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4595b89",
"selector": "0xf4595b89",
"calldata_variants": [
"0xf4595b89",
"0xf4595b890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb1bb9de",
"selector": "0xfb1bb9de",
"calldata_variants": [
"0xfb1bb9de",
"0xfb1bb9de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd905777e",
"selector": "0xd905777e",
"calldata_variants": [
"0xd905777e",
"0xd905777e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe63ab1e9",
"selector": "0xe63ab1e9",
"calldata_variants": [
"0xe63ab1e9",
"0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3654,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 4584,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 6007,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 19092,
"type": "tx_origin_used"
}
],
"delegatecall_count": 13,
"untrusted_delegatecall_count": 13
}
|
| high | other | codex | processAccounting ignores buffer/strategy assets, enabling share price manipulation | 85 | no | — |
viewevidence_json{
"evidence": "computeTotalAssets only sums balances held by address(this) and processAccounting overwrites totalAssets with that value.",
"locations": [
"src/library/VaultLib.sol:295",
"src/library/VaultLib.sol:301",
"src/library/VaultLib.sol:305",
"src/BaseVault.sol:773",
"src/BaseVault.sol:777"
],
"recommendation": "Include buffer/strategy balances in computeTotalAssets (e.g., add IStrategy(buffer).totalAssets() plus any other strategy holdings) or prevent processAccounting from overwriting totalAssets while assets are held off-vault. Consider restricting processAccounting to trusted keepers if accuracy cannot be guaranteed.",
"exploit_scenario": "If vault assets are moved into the buffer strategy (used for withdrawals), any user can call processAccounting() and force totalAssets to be recomputed from only the vault\u2019s on-contract balances. This can drop totalAssets close to zero even though assets still exist in the buffer. An attacker can then deposit a small amount and mint disproportionately many shares (since shares are priced off the deflated totalAssets). Once assets are moved back on-vault or accounting is corrected, the attacker can redeem for more assets than deposited, extracting value from existing holders. Even without profit, it can misprice shares and break maxWithdraw logic."
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xecfe5f93",
"selector": "0xecfe5f93",
"calldata_variants": [
"0xecfe5f93",
"0xecfe5f930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedaafe20",
"selector": "0xedaafe20",
"calldata_variants": [
"0xedaafe20",
"0xedaafe200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef8b30f7",
"selector": "0xef8b30f7",
"calldata_variants": [
"0xef8b30f7",
"0xef8b30f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4595b89",
"selector": "0xf4595b89",
"calldata_variants": [
"0xf4595b89",
"0xf4595b890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb1bb9de",
"selector": "0xfb1bb9de",
"calldata_variants": [
"0xfb1bb9de",
"0xfb1bb9de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd905777e",
"selector": "0xd905777e",
"calldata_variants": [
"0xd905777e",
"0xd905777e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe63ab1e9",
"selector": "0xe63ab1e9",
"calldata_variants": [
"0xe63ab1e9",
"0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 19092,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x98ae8626027e89b214b28b21375221cb81aba6da3e19e7f706feac527676638c
call_targets:
0xc1c5b18774d0282949331b719b5ea4a21cbc62c8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x98ae8626027e89b214b28b21375221cb81aba6da3e19e7f706feac527676638c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc1c5b18774d0282949331b719b5ea4a21cbc62c8"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xecfe5f93",
"selector": "0xecfe5f93",
"calldata_variants": [
"0xecfe5f93",
"0xecfe5f930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedaafe20",
"selector": "0xedaafe20",
"calldata_variants": [
"0xedaafe20",
"0xedaafe200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef8b30f7",
"selector": "0xef8b30f7",
"calldata_variants": [
"0xef8b30f7",
"0xef8b30f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4595b89",
"selector": "0xf4595b89",
"calldata_variants": [
"0xf4595b89",
"0xf4595b890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb1bb9de",
"selector": "0xfb1bb9de",
"calldata_variants": [
"0xfb1bb9de",
"0xfb1bb9de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd905777e",
"selector": "0xd905777e",
"calldata_variants": [
"0xd905777e",
"0xd905777e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe63ab1e9",
"selector": "0xe63ab1e9",
"calldata_variants": [
"0xe63ab1e9",
"0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 11594,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 14113,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 19162,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [
{
"pc": 19092,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x8792bcc129c3a27a904ff1edfdbc1dc50a104000f1d6a19a3bd60ee268c48b36
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x8792bcc129c3a27a904ff1edfdbc1dc50a104000f1d6a19a3bd60ee268c48b36",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xecfe5f93",
"selector": "0xecfe5f93",
"calldata_variants": [
"0xecfe5f93",
"0xecfe5f930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedaafe20",
"selector": "0xedaafe20",
"calldata_variants": [
"0xedaafe20",
"0xedaafe200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef8b30f7",
"selector": "0xef8b30f7",
"calldata_variants": [
"0xef8b30f7",
"0xef8b30f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4595b89",
"selector": "0xf4595b89",
"calldata_variants": [
"0xf4595b89",
"0xf4595b890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb1bb9de",
"selector": "0xfb1bb9de",
"calldata_variants": [
"0xfb1bb9de",
"0xfb1bb9de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd905777e",
"selector": "0xd905777e",
"calldata_variants": [
"0xd905777e",
"0xd905777e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe63ab1e9",
"selector": "0xe63ab1e9",
"calldata_variants": [
"0xe63ab1e9",
"0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 13
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x98ae8626027e89b214b28b21375221cb81aba6da3e19e7f706feac527676638c
call_targets:
0xc1c5b18774d0282949331b719b5ea4a21cbc62c8
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x98ae8626027e89b214b28b21375221cb81aba6da3e19e7f706feac527676638c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc1c5b18774d0282949331b719b5ea4a21cbc62c8"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xecfe5f93",
"selector": "0xecfe5f93",
"calldata_variants": [
"0xecfe5f93",
"0xecfe5f930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xedaafe20",
"selector": "0xedaafe20",
"calldata_variants": [
"0xedaafe20",
"0xedaafe200000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xef8b30f7",
"selector": "0xef8b30f7",
"calldata_variants": [
"0xef8b30f7",
"0xef8b30f70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4595b89",
"selector": "0xf4595b89",
"calldata_variants": [
"0xf4595b89",
"0xf4595b890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb1bb9de",
"selector": "0xfb1bb9de",
"calldata_variants": [
"0xfb1bb9de",
"0xfb1bb9de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd905777e",
"selector": "0xd905777e",
"calldata_variants": [
"0xd905777e",
"0xd905777e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe63ab1e9",
"selector": "0xe63ab1e9",
"calldata_variants": [
"0xe63ab1e9",
"0xe63ab1e90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 11594,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 14113,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 19162,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 19092,
"type": "tx_origin_used"
}
]
}
|
| medium | oracle | codex | Share pricing fully trusts provider rates without validation or staleness checks | 75 | no | — |
viewevidence_json{
"evidence": "Rates are pulled from IProvider with no validation and used directly in conversions that determine share pricing.",
"locations": [
"src/library/VaultLib.sol:177",
"src/library/VaultLib.sol:189",
"src/library/VaultLib.sol:248"
],
"recommendation": "Use robust oracles (TWAP/Chainlink), add staleness and bounds checks, and consider restricting processAccounting to trusted keepers or validating rates before accepting them. Revert on zero or out-of-range rates.",
"exploit_scenario": "convertAssetToBase/convertBaseToAsset use IProvider.getRate(asset_) directly. If the provider source can be manipulated (e.g., DEX spot price, stale oracle, or malicious provider), an attacker can skew the rate, call processAccounting or deposit/redeem, minting shares at an inflated rate or redeeming at a deflated rate and draining value. Because processAccounting is public, attackers can time the update to the manipulated rate themselves."
}
|
| low | other | codex | Fee-on-transfer tokens can inflate shares and totalAssets | 65 | no | — |
viewevidence_json{
"evidence": "_deposit updates accounting and mints shares before verifying actual tokens received.",
"locations": [
"src/BaseVault.sol:458",
"src/BaseVault.sol:470",
"src/BaseVault.sol:472",
"src/BaseVault.sol:473"
],
"recommendation": "Either disallow fee-on-transfer/rebasing assets explicitly or compute actual received amount by checking balanceBefore/balanceAfter and base share minting on the received amount.",
"exploit_scenario": "_deposit mints shares and increments totalAssets using the requested assets amount, then calls transferFrom. For fee-on-transfer/deflationary tokens, the vault receives fewer tokens than assets, but still mints full shares and records full baseAssets. A user can deposit such a token to mint excess shares, then redeem for more value than actually deposited, diluting existing holders."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 6
}
|