019be3d6-8267-739c-b062-5f21bd63b2eb
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 |
|---|---|---|---|---|
| 40645 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 40646 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 40647 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 40648 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 40649 | capability.graph | complete | 1 / 3 | 2 months ago |
| 40650 | detector.run | complete | 1 / 3 | 2 months ago |
| 40651 | validation.fork | complete | 1 / 3 | 2 months ago |
| 41265 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 41266 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-mivjhbkt) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-mivjhbkt) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) has bitwise-xor operator ^ instead of the exponentiation operator **: - inv = (3 * denominator) ^ 2 (src/libraries/FullMath.sol#84) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) ignores return value by IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv = (3 * denominator) ^ 2 (src/libraries/FullMath.sol#84) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#88) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#89) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#90) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#91) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#92) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - denominator = denominator / twos (src/libraries/FullMath.sol#64) - inv *= 2 - denominator * inv (src/libraries/FullMath.sol#93) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) performs a multiplication on the result of a division: - prod0 = prod0 / twos (src/libraries/FullMath.sol#69) - result = prod0 * inv (src/libraries/FullMath.sol#101) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply Reentrancy in KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201): External calls: - IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164) State variables written after the call(s): - lpMarket = _market (src/KotoV3.sol#196) KotoV3.lpMarket (src/KotoV3.sol#41) can be used in cross function reentrancies: - KotoV3._createLpMarket() (src/KotoV3.sol#425-450) - KotoV3._currentMarketPrice(bool) (src/KotoV3.sol#605-623) - KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) - KotoV3.lpMarketInfo() (src/KotoV3.sol#291-297) - lpTerm = _term (src/KotoV3.sol#197) KotoV3.lpTerm (src/KotoV3.sol#42) can be used in cross function reentrancies: - KotoV3._createLpMarket() (src/KotoV3.sol#425-450) - KotoV3._currentMarketPrice(bool) (src/KotoV3.sol#605-623) - KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) - KotoV3.lpMarketInfo() (src/KotoV3.sol#291-297) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1 KotoV3._transfer(address,address,uint256).fees (src/KotoV3.sol#468) is a local variable never initialized PricingLibrary.tune(uint48,PricingLibrary.Market,PricingLibrary.Term,PricingLibrary.Data,PricingLibrary.Adjustment,uint256).cache (src/PricingLibrary.sol#103) is a local variable never initialized Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables KotoV3._currentControlVariable(uint256,PricingLibrary.Adjustment) (src/KotoV3.sol#625-632) ignores return value by (decay,None,None) = PricingLibrary.controlDecay(info) (src/KotoV3.sol#630) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return Reentrancy in KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201): External calls: - IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164) State variables written after the call(s): - success = _bond(msg.sender,payout) (src/KotoV3.sol#187) - _balances[to] += value (src/KotoV3.sol#528) - _balances[address(this)] -= value (src/KotoV3.sol#529) - lpAdjustment = adjustments (src/KotoV3.sol#199) - lpData = _data (src/KotoV3.sol#198) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2 Reentrancy in KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201): External calls: - IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164) Event emitted after the call(s): - Bond(msg.sender,payout,price) (src/KotoV3.sol#189) - Transfer(address(this),to,value) (src/KotoV3.sol#532) - success = _bond(msg.sender,payout) (src/KotoV3.sol#187) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3 ERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/solmate/src/tokens/ERC20.sol#116-160) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(deadline >= block.timestamp,PERMIT_DEADLINE_EXPIRED) (lib/solmate/src/tokens/ERC20.sol#125) KotoV3.bond() (src/KotoV3.sol#117-159) uses timestamp for comparisons Dangerous comparisons: - block.timestamp > term.conclusion (src/KotoV3.sol#118) KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) uses timestamp for comparisons Dangerous comparisons: - block.timestamp > lpTerm.conclusion (src/KotoV3.sol#162) - payout > lpMarket.maxPayout (src/KotoV3.sol#179) KotoV3.create(uint256,uint256) (src/KotoV3.sol#334-354) uses timestamp for comparisons Dangerous comparisons: - term.conclusion > block.timestamp (src/KotoV3.sol#336) - currentBalance > 0 (src/KotoV3.sol#341) KotoV3._policy(uint256,uint256) (src/KotoV3.sol#458-463) uses timestamp for comparisons Dangerous comparisons: - burnRelative >= bondRelative (src/KotoV3.sol#462) KotoV3._transfer(address,address,uint256) (src/KotoV3.sol#466-494) uses timestamp for comparisons Dangerous comparisons: - _value > _balances[from] (src/KotoV3.sol#467) KotoV3._burn(address,uint256) (src/KotoV3.sol#512-519) uses timestamp for comparisons Dangerous comparisons: - _balances[from] < value (src/KotoV3.sol#513) KotoV3._bond(address,uint256) (src/KotoV3.sol#525-533) uses timestamp for comparisons Dangerous comparisons: - value > _balances[address(this)] (src/KotoV3.sol#526) PricingLibrary.controlDecay(PricingLibrary.Adjustment) (src/PricingLibrary.sol#61-68) uses timestamp for comparisons Dangerous comparisons: - active = secondsSince < info.timeToAdjusted (src/PricingLibrary.sol#65) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp SafeTransferLib.safeTransferETH(address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#15-25) uses assembly - INLINE ASM (lib/solmate/src/utils/SafeTransferLib.sol#19-22) SafeTransferLib.safeTransferFrom(ERC20,address,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#31-63) uses assembly - INLINE ASM (lib/solmate/src/utils/SafeTransferLib.sol#40-60) SafeTransferLib.safeTransfer(ERC20,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#65-95) uses assembly - INLINE ASM (lib/solmate/src/utils/SafeTransferLib.sol#73-92) SafeTransferLib.safeApprove(ERC20,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#97-127) uses assembly - INLINE ASM (lib/solmate/src/utils/SafeTransferLib.sol#105-124) KotoV3._createUniswapV2Pair(address,address) (src/KotoV3.sol#362-372) uses assembly - INLINE ASM (src/KotoV3.sol#363-371) KotoV3._addInitialLiquidity() (src/KotoV3.sol#375-389) uses assembly - INLINE ASM (src/KotoV3.sol#377-388) KotoV3._getPrice() (src/KotoV3.sol#537-557) uses assembly - INLINE ASM (src/KotoV3.sol#541-550) KotoV3._getLpPrice() (src/KotoV3.sol#560-584) uses assembly - INLINE ASM (src/KotoV3.sol#565-577) KotoV3._getTokens(address) (src/KotoV3.sol#590-601) uses assembly - INLINE ASM (src/KotoV3.sol#591-600) FullMath.mulDiv(uint256,uint256,uint256) (src/libraries/FullMath.sol#14-104) uses assembly - INLINE ASM (src/libraries/FullMath.sol#23-27) - INLINE ASM (src/libraries/FullMath.sol#32-34) - INLINE ASM (src/libraries/FullMath.sol#49-51) - INLINE ASM (src/libraries/FullMath.sol#53-56) - INLINE ASM (src/libraries/FullMath.sol#63-65) - INLINE ASM (src/libraries/FullMath.sol#68-70) - INLINE ASM (src/libraries/FullMath.sol#74-76) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage 3 different versions of Solidity are used: - Version constraint >=0.8.0 is used by: ->=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2) ->=0.8.0 (lib/solmate/src/utils/SafeTransferLib.sol#2) - Version constraint 0.8.23 is used by: -0.8.23 (src/KotoV3.sol#13) -0.8.23 (src/PricingLibrary.sol#3) -0.8.23 (src/interfaces/IERC20Minimal.sol#3) -0.8.23 (src/interfaces/IKotoV3.sol#3) - Version constraint ^0.8.0 is used by: -^0.8.0 (src/libraries/FullMath.sol#2) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used Version constraint >=0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - DataLocationChangeInInternalOverride - NestedCalldataArrayAbiReencodingSizeValidation - SignedImmutables - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching. It is used by: - >=0.8.0 (lib/solmate/src/tokens/ERC20.sol#2) - >=0.8.0 (lib/solmate/src/utils/SafeTransferLib.sol#2) Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - DataLocationChangeInInternalOverride - NestedCalldataArrayAbiReencodingSizeValidation - SignedImmutables - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching. It is used by: - ^0.8.0 (src/libraries/FullMath.sol#2) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Function ERC20.DOMAIN_SEPARATOR() (lib/solmate/src/tokens/ERC20.sol#162-164) is not in mixedCase Variable ERC20.INITIAL_CHAIN_ID (lib/solmate/src/tokens/ERC20.sol#41) is not in mixedCase Variable ERC20.INITIAL_DOMAIN_SEPARATOR (lib/solmate/src/tokens/ERC20.sol#43) is not in mixedCase Parameter KotoV3.transfer(address,uint256)._to (src/KotoV3.sol#93) is not in mixedCase Parameter KotoV3.transfer(address,uint256)._value (src/KotoV3.sol#93) is not in mixedCase Parameter KotoV3.transferFrom(address,address,uint256)._from (src/KotoV3.sol#99) is not in mixedCase Parameter KotoV3.transferFrom(address,address,uint256)._to (src/KotoV3.sol#99) is not in mixedCase Parameter KotoV3.transferFrom(address,address,uint256)._value (src/KotoV3.sol#99) is not in mixedCase Parameter KotoV3.approve(address,uint256)._spender (src/KotoV3.sol#109) is not in mixedCase Parameter KotoV3.approve(address,uint256)._value (src/KotoV3.sol#109) is not in mixedCase Parameter KotoV3.bondLp(uint256)._lpAmount (src/KotoV3.sol#161) is not in mixedCase Parameter KotoV3.balanceOf(address)._owner (src/KotoV3.sol#247) is not in mixedCase Parameter KotoV3.addAmm(address)._pool (src/KotoV3.sol#316) is not in mixedCase Parameter PricingLibrary.marketPrice(uint256,uint256,uint256)._controlVariable (src/PricingLibrary.sol#70) is not in mixedCase Parameter PricingLibrary.marketPrice(uint256,uint256,uint256)._totalDebt (src/PricingLibrary.sol#70) is not in mixedCase Parameter PricingLibrary.marketPrice(uint256,uint256,uint256)._totalSupply (src/PricingLibrary.sol#70) is not in mixedCase Parameter PricingLibrary.debtRatio(uint256,uint256)._totalDebt (src/PricingLibrary.sol#78) is not in mixedCase Parameter PricingLibrary.debtRatio(uint256,uint256)._totalSupply (src/PricingLibrary.sol#78) is not in mixedCase Parameter PricingLibrary.tune(uint48,PricingLibrary.Market,PricingLibrary.Term,PricingLibrary.Data,PricingLibrary.Adjustment,uint256)._totalSupply (src/PricingLibrary.sol#101) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions SafeTransferLib.safeTransferFrom(ERC20,address,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#31-63) uses literals with too many digits: - mstore(uint256,uint256)(freeMemoryPointer_safeTransferFrom_asm_0,0x23b872dd00000000000000000000000000000000000000000000000000000000) (lib/solmate/src/utils/SafeTransferLib.sol#45) SafeTransferLib.safeTransfer(ERC20,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#65-95) uses literals with too many digits: - mstore(uint256,uint256)(freeMemoryPointer_safeTransfer_asm_0,0xa9059cbb00000000000000000000000000000000000000000000000000000000) (lib/solmate/src/utils/SafeTransferLib.sol#78) SafeTransferLib.safeApprove(ERC20,address,uint256) (lib/solmate/src/utils/SafeTransferLib.sol#97-127) uses literals with too many digits: - mstore(uint256,uint256)(freeMemoryPointer_safeApprove_asm_0,0x095ea7b300000000000000000000000000000000000000000000000000000000) (lib/solmate/src/utils/SafeTransferLib.sol#110) KotoV3._createUniswapV2Pair(address,address) (src/KotoV3.sol#362-372) uses literals with too many digits: - mstore(uint256,uint256)(ptr__createUniswapV2Pair_asm_0,0xc9c6539600000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#365) KotoV3._addInitialLiquidity() (src/KotoV3.sol#375-389) uses literals with too many digits: - mstore(uint256,uint256)(ptr__addInitialLiquidity_asm_0,0xf305d71900000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#379) KotoV3._getPrice() (src/KotoV3.sol#537-557) uses literals with too many digits: - mstore(uint256,uint256)(ptr__getPrice_asm_0,0x0902f1ac00000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#543) KotoV3._getLpPrice() (src/KotoV3.sol#560-584) uses literals with too many digits: - mstore(uint256,uint256)(ptr__getLpPrice_asm_0,0x0902f1ac00000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#567) KotoV3._getLpPrice() (src/KotoV3.sol#560-584) uses literals with too many digits: - mstore(uint256,uint256)(ptr__getLpPrice_asm_0 + 0x20,0x18160ddd00000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#574) KotoV3._getTokens(address) (src/KotoV3.sol#590-601) uses literals with too many digits: - mstore(uint256,uint256)(ptr__getTokens_asm_0,0x0dfe168100000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#593) KotoV3._getTokens(address) (src/KotoV3.sol#590-601) uses literals with too many digits: - mstore(uint256,uint256)(ptr__getTokens_asm_0 + 4,0xd21220a700000000000000000000000000000000000000000000000000000000) (src/KotoV3.sol#595) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits . analyzed (7 contracts with 100 detectors), 67 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.23",
"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.23",
"install_stderr": null,
"install_stdout": "Version '0.8.23' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-mivjhbkt --include-path /tmp/slither-mivjhbkt/lib --include-path /tmp/slither-mivjhbkt/lib/solmate --allow-paths /tmp/slither-mivjhbkt,/tmp/slither-mivjhbkt/lib,/tmp/slither-mivjhbkt/lib/solmate,/tmp/slither-mivjhbkt/src",
"remappings": [
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"solmate/=lib/solmate/",
"src/=src/"
],
"source_files": [
"src/KotoV3.sol",
"src/PricingLibrary.sol",
"lib/solmate/src/utils/SafeTransferLib.sol",
"src/libraries/FullMath.sol",
"src/interfaces/IERC20Minimal.sol",
"src/interfaces/IKotoV3.sol",
"lib/solmate/src/tokens/ERC20.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 67,
"workspace_hash": "0c3b70e1e43f5b9b960f49796f26ce9add3e3caa1a780dd4b5892ed91d384684",
"duration_seconds": 1.3678781986236572,
"solc_version_requested": "0.8.23"
}
{"no_findings":false,"summary":"Identified oracle manipulation risks in bond market creation and one unchecked ERC20 return value in LP bonding.","findings":[{"severity":"medium","category":"oracle","title":"Bond market parameters derived from manipulable Uniswap spot reserves","exploit_scenario":"An attacker can flash‑loan to skew the Uniswap V2 pair reserves immediately before an authorized `create` call. Because `_create`/`_createLpMarket` use `_getPrice`/`_getLpPrice` (spot reserves) to set `controlVariable` and `_policy`, the attacker can force an artificially low bond price and then buy bonds at a discount in the same block, capturing excess KOTO once price normalizes.","recommendation":"Use a manipulation‑resistant price source (e.g., Uniswap TWAP or Chainlink), add price bounds and minimum liquidity checks, and/or delay market creation so spot price manipulation cannot influence `controlVariable` and policy decisions.","evidence":"`_create`/`_createLpMarket` read `_getPrice`/`_getLpPrice`, which compute prices directly from `getReserves()` spot values.","locations":["src/KotoV3.sol:395","src/KotoV3.sol:424","src/KotoV3.sol:535","src/KotoV3.sol:559"]},{"severity":"low","category":"other","title":"LP bonding does not verify LP token transfer success","exploit_scenario":"`bondLp` calls `pair.transferFrom` without checking its return value. If the LP token were non‑standard and returned `false` instead of reverting, the function would still mint KOTO bonds without receiving LP tokens, under‑collateralizing the market.","recommendation":"Use a safe transfer helper (e.g., `SafeTransferLib.safeTransferFrom`) or explicitly check the boolean return value and revert on failure.","evidence":"`IERC20Minimal(pair).transferFrom(...)` is invoked without a return‑value check before bond issuance.","locations":["src/KotoV3.sol:161"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-mdb_h2fj
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be407-573c-7173-b72a-072ef880e73e
--------
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 'cat AUDIT_BUNDLE.txt' in /tmp/codex-mdb_h2fj succeeded in 12ms:
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/KotoV3.sol
================================================================================
// SPDX-License-Identifier: MIT
///@title Koto ERC20 Token
///@author Izanagi Dev
///@notice A stripped down ERC20 tax token that implements automated and continious monetary policy decisions.
///@dev Bonds are the ERC20 token in exchange for Ether. Unsold bonds with automatically be burned.
/// The bonding schedule is set to attempt to sell all of the tokens held within the contract in 1 day intervals. Taking a snapshot
/// of the amount currently held within the contract at the start of the next internal period, using this amount as the capcipty to be sold.
/// Socials
/// Telegram: https://t.me/KotoPortal
pragma solidity 0.8.23;
thinking
**Analyzing potential reentrancy and oracle risks**
The redeem function calls burn before sending ETH, so reentrancy attempts won't benefit from already-burned tokens, making this safe. However, the bond pricing depends on Uniswap V2 reserves accessed via getReserves, which could be flash loan manipulated, posing an oracle risk.
thinking
**Clarifying price sources for bond pricing**
The initial bond price relies on a market price linked to a PricingLibrary using controlVariable and debtRatio, not directly on Uniswap reserves. Next, I'll investigate the truncated _policy and _transfer code to understand their roles and confirm how Uniswap pricing factors in.
exec
/bin/bash -lc 'rg -n "_policy|_transfer|_burn|_bond|increaseLiquidity|removeLimits|limits" AUDIT_BUNDLE.txt' in /tmp/codex-mdb_h2fj succeeded in 7ms:
101: _transfer(msg.sender, _to, _value);
111: _transfer(_from, _to, _value);
148: bool success = _bond(msg.sender, payout);
193: bool success = _bond(msg.sender, payout);
216: _burn(msg.sender, amount);
224: _burn(msg.sender, amount);
311: ///@notice remove a given address from fees and limits
410: bool policy = _policy(capacity, initialPrice);
420: _burn(address(this), capacity);
438: bool policy = _policy(capacity, initialPrice);
448: _burn(address(this), capacity);
464: function _policy(uint256 capacity, uint256 price) private view returns (bool decision) {
472: function _transfer(address from, address to, uint256 _value) private {
518: function _burn(address from, uint256 value) private {
531: function _bond(address to, uint256 value) private returns (bool success) {
exec
/bin/bash -lc "sed -n '430,560p' AUDIT_BUNDLE.txt" in /tmp/codex-mdb_h2fj succeeded in 5ms:
///@notice create the next bond market for LP tokens -> koto
function _createLpMarket() private {
uint96 targetDebt = uint96(lpCapacityNext);
if (targetDebt > 0) {
uint256 initialPrice = _getLpPrice();
uint96 capacity = targetDebt;
uint96 maxPayout = uint96(targetDebt * 86400 / INTERVAL);
uint256 controlVariable = initialPrice * _totalSupply / targetDebt;
bool policy = _policy(capacity, initialPrice);
uint48 conclusion = uint48(block.timestamp + INTERVAL);
if (policy) {
lpMarket = PricingLibrary.Market(capacity, targetDebt, maxPayout, 0, 0);
lpTerm = PricingLibrary.Term(conclusion, controlVariable);
lpData =
PricingLibrary.Data(uint48(block.timestamp), uint48(block.timestamp), uint48(INTERVAL), 86400, 1800);
emit CreateMarket(capacity, block.timestamp, conclusion);
} else {
_burn(address(this), capacity);
// Set the markets so that they will be closed for the next interval. Important step to make sure
thinking
**Analyzing reentrancy and access control**
Reentrancy risk seems low since redeem uses contract ETH balance and proportional share logic prevents simple manipulation. The owner is hardcoded with no change ability, which matches expectations. The create function calls transferFrom with msg.sender as sender, so no allowance check occurs, confirming no approval needed here.
thinking
**Identifying potential flash loan oracle manipulation**
Bond pricing relies on Uniswap spot reserves without TWAP, enabling flash loan attacks to manipulate bond creation prices if the trusted caller acts on manipulated prices. A division-by-zero risk exists if capacity equals supply, causing reverts but likely only under trusted control. Some external calls have unchecked return values, though low risk given token behavior and ownership constraints.
exec
/bin/bash -lc 'rg -n "liquidity|limit|open|launch|exclude|amm|bond" src/KotoV3.sol' in /tmp/codex-mdb_h2fj succeeded in 12ms:
6:///@dev Bonds are the ERC20 token in exchange for Ether. Unsold bonds with automatically be burned.
7:/// The bonding schedule is set to attempt to sell all of the tokens held within the contract in 1 day intervals. Taking a snapshot
26: mapping(address => bool) private _excluded;
27: mapping(address => bool) private _amms;
48: bool private launched;
81: _excluded[OWNER] = true;
82: _excluded[BOND_DEPOSITORY] = true;
83: _excluded[address(this)] = true;
84: _amms[pair] = true;
115: ///@notice exchange ETH for Koto tokens at the current bonding price
116: ///@dev bonds are set on 1 day intervals with 4 hour deposit intervals and 30 minute tune intervals.
117: function bond() public payable lock returns (uint256 payout) {
142: bool success = _bond(msg.sender, payout);
156: //If bonds are not available refund the eth sent to the contract
161: function bondLp(uint256 _lpAmount) public lock returns (uint256 payout) {
187: bool success = _bond(msg.sender, payout);
264: ///@dev ownership is nontransferable and limited to opening trade, exclusion / inclusion,s and increasing liquidity
269: ///@notice the current price a bond
270: function bondPrice() external view returns (uint256) {
274: function bondPriceLp() external view returns (uint256) {
thinking
**Assessing potential vulnerability areas**
The external call in `bondLp` appears safe from reentrancy due to the lock and trusted Uniswap pair; ownership is centralized but not insecure; price and control variable decay logic looks sound with no immediate oracle manipulation risk.
thinking
**Analyzing nuanced edge cases and footguns**
Several edge cases like capacity equaling total supply cause reverts but aren't exploitable; potential reentrancy during refunds is limited and safe; price division by zero before liquidity added is a footgun; transferFrom failures unlikely due to Uniswap pair reverting; no critical vulnerabilities found so far but full code scan needed.
exec
/bin/bash -lc "sed -n '560,760p' AUDIT_BUNDLE.txt" in /tmp/codex-mdb_h2fj succeeded in 7ms:
} else {
price = FullMath.mulDiv(uint256(reserve0), 1e18, uint256(reserve1));
}
}
///@notice return the current price in koto for 1 LP token
function _getLpPrice() private view returns (uint256 _lpPrice) {
address _pair = pair;
uint112 reserve0;
uint112 reserve1;
uint256 lpTotalSupply;
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x0902f1ac00000000000000000000000000000000000000000000000000000000)
let success := staticcall(gas(), _pair, ptr, 4, 0, 0)
if iszero(success) { revert(0, 0) }
returndatacopy(0x00, 0, 32)
returndatacopy(0x20, 0x20, 32)
reserve0 := mload(0x00)
reserve1 := mload(0x20)
thinking
**Analyzing parameter usage inconsistency**
Noticed that the decay function is called with the original storage data instead of the copied memory _data, but this still results in a memory copy as needed; however, the market's maxPayout check happens before tune updates it, potentially causing a mismatch between comparison and updated values—this could be a real vulnerability vector.
thinking
**Uncovering multiple nuanced token and bonding logic risks**
Identified key issues including token transfers in bondLp occurring before all validations, potential owner centralization via unrestricted launch draining ETH, division-by-zero risk at exact term conclusion, and subtle underflow risks in debt decay limited by market timing. Also noted possible payout exceeding capacity due to maxPayout calculation, and unchecked implications of token burns and supply manipulations affecting bond pricing.
thinking
**Highlighting oracle manipulation and unchecked external calls**
Determined that bond pricing relies on manipulable Uniswap spot reserves without TWAP, enabling oracle manipulation via flashloan front-running during market creation. Also identified unchecked return values from LP token transferFrom calls as a minor risk given external calls without success validation.
exec
/bin/bash -lc "nl -ba src/KotoV3.sol | sed -n '120,220p'" in /tmp/codex-mdb_h2fj succeeded in 9ms:
120 // Cache variables for later use to minimize storage calls
121 PricingLibrary.Market memory _market = market;
122 PricingLibrary.Term memory _term = term;
123 PricingLibrary.Data memory _data = data;
124 PricingLibrary.Adjustment memory adjustments = adjustment;
125 uint256 _supply = _totalSupply;
126 uint48 time = uint48(block.timestamp);
127
128 // Can pass in structs here as nothing has been updated yet
129 (_market, _data, _term, adjustments) = PricingLibrary.decay(data, _market, _term, adjustments);
130
131 uint256 price = PricingLibrary.marketPrice(_term.controlVariable, _market.totalDebt, _supply);
132
133 payout = (msg.value * 1e18 / price);
134 if (payout > market.maxPayout) revert MaxPayout();
135
136 // Update market variables
137 _market.capacity -= uint96(payout);
138 _market.purchased += uint96(msg.value);
139 _market.sold += uint96(payout);
thinking
**Locating critical method line numbers**
exec
/bin/bash -lc "nl -ba src/KotoV3.sol | sed -n '360,520p'" in /tmp/codex-mdb_h2fj succeeded in 11ms:
360 ///@param _token1 token 1 of the pair
361 ///@return _pair the pair address
362 function _createUniswapV2Pair(address _token0, address _token1) private returns (address _pair) {
363 assembly {
364 let ptr := mload(0x40)
365 mstore(ptr, 0xc9c6539600000000000000000000000000000000000000000000000000000000)
366 mstore(add(ptr, 4), and(_token0, 0xffffffffffffffffffffffffffffffffffffffff))
367 mstore(add(ptr, 36), and(_token1, 0xffffffffffffffffffffffffffffffffffffffff))
368 let result := call(gas(), UNISWAP_V2_FACTORY, 0, ptr, 68, 0, 32)
369 if iszero(result) { revert(0, 0) }
370 _pair := mload(0x00)
371 }
372 }
373
374 ///@notice add the initial liquidity of the pool.
375 function _addInitialLiquidity() private {
376 uint256 tokenAmount = _balances[address(this)];
377 assembly {
378 let ptr := mload(0x40)
379 mstore(ptr, 0xf305d71900000000000000000000000000000000000000000000000000000000)
exec
/bin/bash -lc "nl -ba src/KotoV3.sol | sed -n '520,700p'" in /tmp/codex-mdb_h2fj succeeded in 6ms:
520
521 ///@notice send the user the correct amount of tokens after the have bought a bond
522 ///@param to the user to send the tokens to
523 ///@param value the amount of koto tokens to send
524 ///@dev bonds are not subject to taxes
525 function _bond(address to, uint256 value) private returns (bool success) {
526 if (value > _balances[address(this)]) revert InsufficentBondsAvailable();
527 unchecked {
528 _balances[to] += value;
529 _balances[address(this)] -= value;
530 }
531 success = true;
532 emit Transfer(address(this), to, value);
533 }
534
535 ///@notice calculate the current market price based on the reserves of the Uniswap Pair
536 ///@dev price is returned as the amount of ETH you would get back for 1 full (1e18) Koto tokens
537 function _getPrice() private view returns (uint256 price) {
538 address _pair = pair;
539 uint112 reserve0;
thinking
**Identifying potential oracle manipulation and unchecked ERC20 return risks**
I found a medium-severity oracle manipulation risk due to relying on manipulable Uniswap spot reserves for bond pricing without TWAP, allowing flash loan front-running if market creation isn't permissioned. Also, there's a risk from unchecked ERC20 transferFrom return values that could lead to undercollateralization if a non-standard token is used.
thinking
**Refining oracle manipulation and unchecked return findings with detailed scenarios**
I confirmed the oracle manipulation risk arises from using manipulable Uniswap spot reserves during bond market creation, allowing flash loan front-running to skew initial pricing and policies. I also identified low-severity unchecked ERC20 transferFrom return risk in LP bonding. Additionally, I examined potential stale maxPayout logic but found no clear exploit, so I'll focus on these two main findings in JSON with evidence lines and recommendations.
codex
{"no_findings":false,"summary":"Identified oracle manipulation risks in bond market creation and one unchecked ERC20 return value in LP bonding.","findings":[{"severity":"medium","category":"oracle","title":"Bond market parameters derived from manipulable Uniswap spot reserves","exploit_scenario":"An attacker can flash‑loan to skew the Uniswap V2 pair reserves immediately before an authorized `create` call. Because `_create`/`_createLpMarket` use `_getPrice`/`_getLpPrice` (spot reserves) to set `controlVariable` and `_policy`, the attacker can force an artificially low bond price and then buy bonds at a discount in the same block, capturing excess KOTO once price normalizes.","recommendation":"Use a manipulation‑resistant price source (e.g., Uniswap TWAP or Chainlink), add price bounds and minimum liquidity checks, and/or delay market creation so spot price manipulation cannot influence `controlVariable` and policy decisions.","evidence":"`_create`/`_createLpMarket` read `_getPrice`/`_getLpPrice`, which compute prices directly from `getReserves()` spot values.","locations":["src/KotoV3.sol:395","src/KotoV3.sol:424","src/KotoV3.sol:535","src/KotoV3.sol:559"]},{"severity":"low","category":"other","title":"LP bonding does not verify LP token transfer success","exploit_scenario":"`bondLp` calls `pair.transferFrom` without checking its return value. If the LP token were non‑standard and returned `false` instead of reverting, the function would still mint KOTO bonds without receiving LP tokens, under‑collateralizing the market.","recommendation":"Use a safe transfer helper (e.g., `SafeTransferLib.safeTransferFrom`) or explicitly check the boolean return value and revert on failure.","evidence":"`IERC20Minimal(pair).transferFrom(...)` is invoked without a return‑value check before bond issuance.","locations":["src/KotoV3.sol:161"]}]}
tokens used
42,870
{
"codex": {
"ran_at": "2026-01-22T04:53:07.261931+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 7,
"import_count": 7,
"first_party_contracts_count": 5
},
"summary": "Identified oracle manipulation risks in bond market creation and one unchecked ERC20 return value in LP bonding.",
"raw_final": {
"summary": "Identified oracle manipulation risks in bond market creation and one unchecked ERC20 return value in LP bonding.",
"findings": [
{
"title": "Bond market parameters derived from manipulable Uniswap spot reserves",
"category": "oracle",
"evidence": "`_create`/`_createLpMarket` read `_getPrice`/`_getLpPrice`, which compute prices directly from `getReserves()` spot values.",
"severity": "medium",
"locations": [
"src/KotoV3.sol:395",
"src/KotoV3.sol:424",
"src/KotoV3.sol:535",
"src/KotoV3.sol:559"
],
"recommendation": "Use a manipulation\u2011resistant price source (e.g., Uniswap TWAP or Chainlink), add price bounds and minimum liquidity checks, and/or delay market creation so spot price manipulation cannot influence `controlVariable` and policy decisions.",
"exploit_scenario": "An attacker can flash\u2011loan to skew the Uniswap V2 pair reserves immediately before an authorized `create` call. Because `_create`/`_createLpMarket` use `_getPrice`/`_getLpPrice` (spot reserves) to set `controlVariable` and `_policy`, the attacker can force an artificially low bond price and then buy bonds at a discount in the same block, capturing excess KOTO once price normalizes."
},
{
"title": "LP bonding does not verify LP token transfer success",
"category": "other",
"evidence": "`IERC20Minimal(pair).transferFrom(...)` is invoked without a return\u2011value check before bond issuance.",
"severity": "low",
"locations": [
"src/KotoV3.sol:161"
],
"recommendation": "Use a safe transfer helper (e.g., `SafeTransferLib.safeTransferFrom`) or explicitly check the boolean return value and revert on failure.",
"exploit_scenario": "`bondLp` calls `pair.transferFrom` without checking its return value. If the LP token were non\u2011standard and returned `false` instead of reverting, the function would still mint KOTO bonds without receiving LP tokens, under\u2011collateralizing the market."
}
],
"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 0x0164 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0x64c9ec6f 00000018: GT 00000019: PUSH2 0x00cd 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0xbedd12a5 00000023: GT 00000024: PUSH2 0x0087 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xd926de1c 0000002e: GT 0000002f: PUSH2 0x0062 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xd926de1c 00000039: EQ 0000003a: PUSH2 0x04bb 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xdb006a75 00000044: EQ 00000045: PUSH2 0x04da 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xdd62ed3e 0000004f: EQ 00000050: PUSH2 0x04f9 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0xdf8980b3 0000005a: EQ 0000005b: PUSH2 0x053d 0000005e: JUMPI 0000005f: PUSH0 00000060: DUP1 00000061: REVERT 00000062: JUMPDEST 00000063: DUP1 00000064: PUSH4 0xbedd12a5 00000069: EQ 0000006a: PUSH2 0x046d 0000006d: JUMPI 0000006e: DUP1 0000006f: PUSH4 0xc5b748c0 00000074: EQ 00000075: PUSH2 0x0493 00000078: JUMPI 00000079: DUP1 0000007a: PUSH4 0xd7ccfb0b 0000007f: EQ 00000080: PUSH2 0x04a7 00000083: JUMPI 00000084: PUSH0 00000085: DUP1 00000086: REVERT 00000087: JUMPDEST 00000088: DUP1 00000089: PUSH4 0x64c9ec6f 0000008e: EQ 0000008f: PUSH2 0x03b3 00000092: JUMPI 00000093: DUP1 00000094: PUSH4 0x70a08231 00000099: EQ 0000009a: PUSH2 0x03bb 0000009d: JUMPI 0000009e: DUP1 0000009f: PUSH4 0x7b16c21e 000000a4: EQ 000000a5: PUSH2 0x03ef 000000a8: JUMPI 000000a9: DUP1 000000aa: PUSH4 0x95d89b41 000000af: EQ 000000b0: PUSH2 0x0403 000000b3: JUMPI 000000b4: DUP1 000000b5: PUSH4 0x9f7b4579 000000ba: EQ 000000bb: PUSH2 0x042f 000000be: JUMPI 000000bf: DUP1 000000c0: PUSH4 0xa9059cbb 000000c5: EQ 000000c6: PUSH2 0x044e 000000c9: JUMPI 000000ca: PUSH0 000000cb: DUP1 000000cc: REVERT 000000cd: JUMPDEST 000000ce: DUP1 000000cf: PUSH4 0x23b872dd 000000d4: GT 000000d5: PUSH2 0x011e 000000d8: JUMPI 000000d9: DUP1 000000da: PUSH4 0x23b872dd 000000df: EQ 000000e0: PUSH2 0x0301 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0x26749e87 000000ea: EQ 000000eb: PUSH2 0x0320 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0x313ce567 000000f5: EQ 000000f6: PUSH2 0x0334 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0x42966c68 00000100: EQ 00000101: PUSH2 0x034f 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x4febf53d 0000010b: EQ 0000010c: PUSH2 0x036e 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x5d03147a 00000116: EQ 00000117: PUSH2 0x038d 0000011a: JUMPI 0000011b: PUSH0 0000011c: DUP1 0000011d: REVERT 0000011e: JUMPDEST 0000011f: DUP1 00000120: PUSH4 0x01339c21 00000125: EQ 00000126: PUSH2 0x016f 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x031bee00 00000130: EQ 00000131: PUSH2 0x0185 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x06fdde03 0000013b: EQ 0000013c: PUSH2 0x0239 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0x095ea7b3 00000146: EQ 00000147: PUSH2 0x026e 0000014a: JUMPI 0000014b: DUP1 0000014c: PUSH4 0x16f0115b 00000151: EQ 00000152: PUSH2 0x029d 00000155: JUMPI 00000156: DUP1 00000157: PUSH4 0x18160ddd 0000015c: EQ 0000015d: PUSH2 0x02e3 00000160: JUMPI 00000161: PUSH0 00000162: DUP1 00000163: REVERT 00000164: JUMPDEST 00000165: CALLDATASIZE 00000166: PUSH2 0x016b 00000169: JUMPI 0000016a: STOP 0000016b: JUMPDEST 0000016c: PUSH0 0000016d: DUP1 0000016e: REVERT 0000016f: JUMPDEST 00000170: CALLVALUE 00000171: DUP1 00000172: ISZERO 00000173: PUSH2 0x017a 00000176: JUMPI 00000177: PUSH0 00000178: DUP1 00000179: REVERT 0000017a: JUMPDEST 0000017b: POP 0000017c: PUSH2 0x0183 0000017f: PUSH2 0x055c 00000182: JUMP 00000183: JUMPDEST 00000184: STOP 00000185: JUMPDEST 00000186: CALLVALUE 00000187: DUP1 00000188: ISZERO 00000189: PUSH2 0x0190 0000018c: JUMPI 0000018d: PUSH0 0000018e: DUP1 0000018f: REVERT 00000190: JUMPDEST 00000191: POP 00000192: PUSH2 0x0199 00000195: PUSH2 0x060c 00000198: JUMP 00000199: JUMPDEST 0000019a: PUSH1 0x40 0000019c: DUP1 0000019d: MLOAD 0000019e: DUP5 0000019f: MLOAD 000001a0: PUSH1 0x01 000001a2: PUSH1 0x01 000001a4: PUSH1 0x60 000001a6: SHL 000001a7: SUB 000001a8: SWAP1 000001a9: DUP2 000001aa: AND 000001ab: DUP3 000001ac: MSTORE 000001ad: PUSH1 0x20 000001af: DUP1 000001b0: DUP8 000001b1: ADD 000001b2: MLOAD 000001b3: DUP3 000001b4: AND 000001b5: DUP2 000001b6: DUP5 000001b7: ADD 000001b8: MSTORE 000001b9: DUP7 000001ba: DUP5 000001bb: ADD 000001bc: MLOAD 000001bd: DUP3 000001be: AND 000001bf: DUP4 000001c0: DUP6 000001c1: ADD 000001c2: MSTORE 000001c3: PUSH1 0x60 000001c5: DUP1 000001c6: DUP9 000001c7: ADD 000001c8: MLOAD 000001c9: DUP4 000001ca: AND 000001cb: DUP2 000001cc: DUP6 000001cd: ADD 000001ce: MSTORE 000001cf: PUSH1 0x80 000001d1: SWAP8 000001d2: DUP9 000001d3: ADD 000001d4: MLOAD 000001d5: SWAP1 000001d6: SWAP3 000001d7: AND 000001d8: DUP8 000001d9: DUP5 000001da: ADD 000001db: MSTORE 000001dc: DUP6 000001dd: MLOAD 000001de: PUSH6 0xffffffffffff 000001e5: SWAP1 000001e6: DUP2 000001e7: AND 000001e8: PUSH1 0xa0 000001ea: DUP6 000001eb: ADD 000001ec: MSTORE 000001ed: SWAP6 000001ee: DUP2 000001ef: ADD 000001f0: MLOAD 000001f1: PUSH1 0xc0 000001f3: DUP5 000001f4: ADD 000001f5: MSTORE 000001f6: DUP5 000001f7: MLOAD 000001f8: DUP7 000001f9: AND 000001fa: PUSH1 0xe0 000001fc: DUP5 000001fd: ADD 000001fe: MSTORE 000001ff: DUP5 00000200: ADD 00000201: MLOAD 00000202: DUP6 00000203: AND 00000204: PUSH2 0x0100 00000207: DUP4 00000208: ADD 00000209: MSTORE 0000020a: SWAP2 0000020b: DUP4 0000020c: ADD 0000020d: MLOAD 0000020e: DUP5 0000020f: AND 00000210: PUSH2 0x0120 00000213: DUP3 00000214: ADD 00000215: MSTORE 00000216: SWAP1 00000217: DUP3 00000218: ADD 00000219: MLOAD 0000021a: DUP4 0000021b: AND 0000021c: PUSH2 0x0140 0000021f: DUP3 00000220: ADD 00000221: MSTORE 00000222: SWAP3 00000223: ADD 00000224: MLOAD 00000225: AND 00000226: PUSH2 0x0160 00000229: DUP3 0000022a: ADD 0000022b: MSTORE 0000022c: PUSH2 0x0180 0000022f: ADD 00000230: JUMPDEST 00000231: PUSH1 0x40 00000233: MLOAD 00000234: DUP1 00000235: SWAP2 00000236: SUB 00000237: SWAP1 00000238: RETURN 00000239: JUMPDEST 0000023a: CALLVALUE 0000023b: DUP1 0000023c: ISZERO 0000023d: PUSH2 0x0244 00000240: JUMPI 00000241: PUSH0 00000242: DUP1 00000243: REVERT 00000244: JUMPDEST 00000245: POP 00000246: PUSH1 0x40 00000248: DUP1 00000249: MLOAD 0000024a: DUP1 0000024b: DUP3 0000024c: ADD 0000024d: SWAP1 0000024e: SWAP2 0000024f: MSTORE 00000250: PUSH1 0x04 00000252: DUP2 00000253: MSTORE 00000254: PUSH4 0x4b6f746f 00000259: PUSH1 0xe0 0000025b: SHL 0000025c: PUSH1 0x20 0000025e: DUP3 0000025f: ADD 00000260: MSTORE 00000261: JUMPDEST 00000262: PUSH1 0x40 00000264: MLOAD 00000265: PUSH2 0x0230 00000268: SWAP2 00000269: SWAP1 0000026a: PUSH2 0x2c90 0000026d: JUMP 0000026e: JUMPDEST 0000026f: CALLVALUE 00000270: DUP1 00000271: ISZERO 00000272: PUSH2 0x0279 00000275: JUMPI 00000276: PUSH0 00000277: DUP1 00000278: REVERT 00000279: JUMPDEST 0000027a: POP 0000027b: PUSH2 0x028d 0000027e: PUSH2 0x0288 00000281: CALLDATASIZE 00000282: PUSH1 0x04 00000284: PUSH2 0x2cf2 00000287: JUMP 00000288: JUMPDEST 00000289: PUSH2 0x06f5 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH1 0x40 00000290: MLOAD 00000291: SWAP1 00000292: ISZERO 00000293: ISZERO 00000294: DUP2 00000295: MSTORE 00000296: PUSH1 0x20 00000298: ADD 00000299: PUSH2 0x0230 0000029c: JUMP 0000029d: JUMPDEST 0000029e: CALLVALUE 0000029f: DUP1 000002a0: ISZERO 000002a1: PUSH2 0x02a8 000002a4: JUMPI 000002a5: PUSH0 000002a6: DUP1 000002a7: REVERT 000002a8: JUMPDEST 000002a9: POP 000002aa: PUSH32 0x00000000000000000000000047287d8d7c1a5854aa11868e7d2186b138069f84 000002cb: JUMPDEST 000002cc: PUSH1 0x40 000002ce: MLOAD 000002cf: PUSH1 0x01 000002d1: PUSH1 0x01 000002d3: PUSH1 0xa0 000002d5: SHL 000002d6: SUB 000002d7: SWAP1 000002d8: SWAP2 000002d9: AND 000002da: DUP2 000002db: MSTORE 000002dc: PUSH1 0x20 000002de: ADD 000002df: PUSH2 0x0230 000002e2: JUMP 000002e3: JUMPDEST 000002e4: CALLVALUE 000002e5: DUP1 000002e6: ISZERO 000002e7: PUSH2 0x02ee 000002ea: JUMPI 000002eb: PUSH0 000002ec: DUP1 000002ed: REVERT 000002ee: JUMPDEST 000002ef: POP 000002f0: PUSH1 0x04 000002f2: SLOAD 000002f3: JUMPDEST 000002f4: PUSH1 0x40 000002f6: MLOAD 000002f7: SWAP1 000002f8: DUP2 000002f9: MSTORE 000002fa: PUSH1 0x20 000002fc: ADD 000002fd: PUSH2 0x0230 00000300: JUMP 00000301: JUMPDEST 00000302: CALLVALUE 00000303: DUP1 00000304: ISZERO 00000305: PUSH2 0x030c 00000308: JUMPI 00000309: PUSH0 0000030a: DUP1 0000030b: REVERT 0000030c: JUMPDEST 0000030d: POP 0000030e: PUSH2 0x028d 00000311: PUSH2 0x031b 00000314: CALLDATASIZE 00000315: PUSH1 0x04 00000317: PUSH2 0x2d1a 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x0722 0000031f: JUMP 00000320: JUMPDEST 00000321: CALLVALUE 00000322: DUP1 00000323: ISZERO 00000324: PUSH2 0x032b 00000327: JUMPI 00000328: PUSH0 00000329: DUP1 0000032a: REVERT 0000032b: JUMPDEST 0000032c: POP 0000032d: PUSH2 0x0199 00000330: PUSH2 0x07f6 00000333: JUMP 00000334: JUMPDEST 00000335: CALLVALUE 00000336: DUP1 00000337: ISZERO 00000338: PUSH2 0x033f 0000033b: JUMPI 0000033c: PUSH0 0000033d: DUP1 0000033e: REVERT 0000033f: JUMPDEST 00000340: POP 00000341: PUSH1 0x40 00000343: MLOAD 00000344: PUSH1 0x12 00000346: DUP2 00000347: MSTORE 00000348: PUSH1 0x20 0000034a: ADD 0000034b: PUSH2 0x0230 0000034e: JUMP 0000034f: JUMPDEST 00000350: CALLVALUE 00000351: DUP1 00000352: ISZERO 00000353: PUSH2 0x035a 00000356: JUMPI 00000357: PUSH0 00000358: DUP1 00000359: REVERT 0000035a: JUMPDEST 0000035b: POP 0000035c: PUSH2 0x028d 0000035f: PUSH2 0x0369 00000362: CALLDATASIZE 00000363: PUSH1 0x04 00000365: PUSH2 0x2d53 00000368: JUMP 00000369: JUMPDEST 0000036a: PUSH2 0x08df 0000036d: JUMP 0000036e: JUMPDEST 0000036f: CALLVALUE 00000370: DUP1 00000371: ISZERO 00000372: PUSH2 0x0379 00000375: JUMPI 00000376: PUSH0 00000377: DUP1 00000378: REVERT 00000379: JUMPDEST 0000037a: POP 0000037b: PUSH2 0x0183 0000037e: PUSH2 0x0388 00000381: CALLDATASIZE 00000382: PUSH1 0x04 00000384: PUSH2 0x2d6a 00000387: JUMP 00000388: JUMPDEST 00000389: PUSH2 0x0917 0000038c: JUMP 0000038d: JUMPDEST 0000038e: CALLVALUE 0000038f: DUP1 00000390: ISZERO 00000391: PUSH2 0x0398 00000394: JUMPI 00000395: PUSH0 00000396: DUP1 00000397: REVERT 00000398: JUMPDEST 00000399: POP 0000039a: PUSH20 0x946ef43867225695e29241813a8f41519634b36b 000003af: PUSH2 0x02cb 000003b2: JUMP 000003b3: JUMPDEST 000003b4: PUSH2 0x02f3 000003b7: PUSH2 0x0996 000003ba: JUMP 000003bb: JUMPDEST 000003bc: CALLVALUE 000003bd: DUP1 000003be: ISZERO 000003bf: PUSH2 0x03c6 000003c2: JUMPI 000003c3: PUSH0 000003c4: DUP1 000003c5: REVERT 000003c6: JUMPDEST 000003c7: POP 000003c8: PUSH2 0x02f3 000003cb: PUSH2 0x03d5 000003ce: CALLDATASIZE 000003cf: PUSH1 0x04 000003d1: PUSH2 0x2d6a 000003d4: JUMP 000003d5: JUMPDEST 000003d6: PUSH1 0x01 000003d8: PUSH1 0x01 000003da: PUSH1 0xa0 000003dc: SHL 000003dd: SUB 000003de: AND 000003df: PUSH0 000003e0: SWAP1 000003e1: DUP2 000003e2: MSTORE 000003e3: PUSH1 0x20 000003e5: DUP2 000003e6: SWAP1 000003e7: MSTORE 000003e8: PUSH1 0x40 000003ea: SWAP1 000003eb: KECCAK256 000003ec: SLOAD 000003ed: SWAP1 000003ee: JUMP 000003ef: JUMPDEST 000003f0: CALLVALUE 000003f1: DUP1 000003f2: ISZERO 000003f3: PUSH2 0x03fa 000003f6: JUMPI 000003f7: PUSH0 000003f8: DUP1 000003f9: REVERT 000003fa: JUMPDEST 000003fb: POP 000003fc: PUSH2 0x02f3 000003ff: PUSH2 0x10ee 00000402: JUMP 00000403: JUMPDEST 00000404: CALLVALUE 00000405: DUP1 00000406: ISZERO 00000407: PUSH2 0x040e 0000040a: JUMPI 0000040b: PUSH0 0000040c: DUP1 0000040d: REVERT 0000040e: JUMPDEST 0000040f: POP 00000410: PUSH1 0x40 00000412: DUP1 00000413: MLOAD 00000414: DUP1 00000415: DUP3 00000416: ADD 00000417: SWAP1 00000418: SWAP2 00000419: MSTORE 0000041a: PUSH1 0x04 0000041c: DUP2 0000041d: MSTORE 0000041e: PUSH4 0x4b4f544f 00000423: PUSH1 0xe0 00000425: SHL 00000426: PUSH1 0x20 00000428: DUP3 00000429: ADD 0000042a: MSTORE 0000042b: PUSH2 0x0261 0000042e: JUMP 0000042f: JUMPDEST 00000430: CALLVALUE 00000431: DUP1 00000432: ISZERO 00000433: PUSH2 0x043a 00000436: JUMPI 00000437: PUSH0 00000438: DUP1 00000439: REVERT 0000043a: JUMPDEST 0000043b: POP 0000043c: PUSH2 0x0183 0000043f: PUSH2 0x0449 00000442: CALLDATASIZE 00000443: PUSH1 0x04 00000445: PUSH2 0x2d83 00000448: JUMP 00000449: JUMPDEST 0000044a: PUSH2 0x10fd 0000044d: JUMP 0000044e: JUMPDEST 0000044f: CALLVALUE 00000450: DUP1 00000451: ISZERO 00000452: PUSH2 0x0459 00000455: JUMPI 00000456: PUSH0 00000457: DUP1 00000458: REVERT 00000459: JUMPDEST 0000045a: POP 0000045b: PUSH2 0x028d 0000045e: PUSH2 0x0468 00000461: CALLDATASIZE 00000462: PUSH1 0x04 00000464: PUSH2 0x2cf2 00000467: JUMP 00000468: JUMPDEST 00000469: PUSH2 0x120d 0000046c: JUMP 0000046d: JUMPDEST 0000046e: CALLVALUE 0000046f: DUP1 00000470: ISZERO 00000471: PUSH2 0x0478 00000474: JUMPI 00000475: PUSH0 00000476: DUP1 00000477: REVERT 00000478: JUMPDEST 00000479: POP 0000047a: PUSH20 0xe58b33c813ac4077bd2519de90fccb189a19fa71 0000048f: PUSH2 0x02cb 00000492: JUMP 00000493: JUMPDEST 00000494: CALLVALUE 00000495: DUP1 00000496: ISZERO 00000497: PUSH2 0x049e 0000049a: JUMPI 0000049b: PUSH0 0000049c: DUP1 0000049d: REVERT 0000049e: JUMPDEST 0000049f: POP 000004a0: PUSH2 0x02f3 000004a3: PUSH2 0x1254 000004a6: JUMP 000004a7: JUMPDEST 000004a8: CALLVALUE 000004a9: DUP1 000004aa: ISZERO 000004ab: PUSH2 0x04b2 000004ae: JUMPI 000004af: PUSH0 000004b0: DUP1 000004b1: REVERT 000004b2: JUMPDEST 000004b3: POP 000004b4: PUSH2 0x02f3 000004b7: PUSH2 0x1275 000004ba: JUMP 000004bb: JUMPDEST 000004bc: CALLVALUE 000004bd: DUP1 000004be: ISZERO 000004bf: PUSH2 0x04c6 000004c2: JUMPI 000004c3: PUSH0 000004c4: DUP1 000004c5: REVERT 000004c6: JUMPDEST 000004c7: POP 000004c8: PUSH2 0x0183 000004cb: PUSH2 0x04d5 000004ce: CALLDATASIZE 000004cf: PUSH1 0x04 000004d1: PUSH2 0x2d6a 000004d4: JUMP 000004d5: JUMPDEST 000004d6: PUSH2 0x1280 000004d9: JUMP 000004da: JUMPDEST 000004db: CALLVALUE 000004dc: DUP1 000004dd: ISZERO 000004de: PUSH2 0x04e5 000004e1: JUMPI 000004e2: PUSH0 000004e3: DUP1 000004e4: REVERT 000004e5: JUMPDEST 000004e6: POP 000004e7: PUSH2 0x02f3 000004ea: PUSH2 0x04f4 000004ed: CALLDATASIZE 000004ee: PUSH1 0x04 000004f0: PUSH2 0x2d53 000004f3: JUMP 000004f4: JUMPDEST 000004f5: PUSH2 0x130d 000004f8: JUMP 000004f9: JUMPDEST 000004fa: CALLVALUE 000004fb: DUP1 000004fc: ISZERO 000004fd: PUSH2 0x0504 00000500: JUMPI 00000501: PUSH0 00000502: DUP1 00000503: REVERT 00000504: JUMPDEST 00000505: POP 00000506: PUSH2 0x02f3 00000509: PUSH2 0x0513 0000050c: CALLDATASIZE 0000050d: PUSH1 0x04 0000050f: PUSH2 0x2da3 00000512: JUMP 00000513: JUMPDEST 00000514: PUSH1 0x01 00000516: PUSH1 0x01 00000518: PUSH1 0xa0 0000051a: SHL 0000051b: SUB 0000051c: SWAP2 0000051d: DUP3 0000051e: AND 0000051f: PUSH0 00000520: SWAP1 00000521: DUP2 00000522: MSTORE 00000523: PUSH1 0x01 00000525: PUSH1 0x20 00000527: SWAP1 00000528: DUP2 00000529: MSTORE 0000052a: PUSH1 0x40 0000052c: DUP1 0000052d: DUP4 0000052e: KECCAK256 0000052f: SWAP4 00000530: SWAP1 00000531: SWAP5 00000532: AND 00000533: DUP3 00000534: MSTORE 00000535: SWAP2 00000536: SWAP1 00000537: SWAP2 00000538: MSTORE 00000539: KECCAK256 0000053a: SLOAD 0000053b: SWAP1 0000053c: JUMP 0000053d: JUMPDEST 0000053e: CALLVALUE 0000053f: DUP1 00000540: ISZERO 00000541: PUSH2 0x0548 00000544: JUMPI 00000545: PUSH0 00000546: DUP1 00000547: REVERT 00000548: JUMPDEST 00000549: POP 0000054a: PUSH2 0x02f3 0000054d: PUSH2 0x0557 00000550: CALLDATASIZE 00000551: PUSH1 0x04 00000553: PUSH2 0x2d53 00000556: JUMP 00000557: JUMPDEST 00000558: PUSH2 0x1398 0000055b: JUMP 0000055c: JUMPDEST 0000055d: CALLER 0000055e: PUSH20 0x946ef43867225695e29241813a8f41519634b36b 00000573: EQ 00000574: PUSH2 0x0590 00000577: JUMPI 00000578: PUSH1 0x40 0000057a: MLOAD 0000057b: PUSH4 0x5fc483c5 00000580: PUSH1 0xe0 00000582: SHL 00000583: DUP2 00000584: MSTORE 00000585: PUSH1 0x04 00000587: ADD 00000588: PUSH1 0x40 0000058a: MLOAD 0000058b: DUP1 0000058c: SWAP2 0000058d: SUB 0000058e: SWAP1 0000058f: REVERT 00000590: JUMPDEST 00000591: PUSH1 0x15 00000593: SLOAD 00000594: PUSH2 0x0100 00000597: SWAP1 00000598: DIV 00000599: PUSH1 0xff 0000059b: AND 0000059c: ISZERO 0000059d: PUSH2 0x05b9 000005a0: JUMPI 000005a1: PUSH1 0x40 000005a3: MLOAD 000005a4: PUSH4 0x19f4db0f 000005a9: PUSH1 0xe3 000005ab: SHL 000005ac: DUP2 000005ad: MSTORE 000005ae: PUSH1 0x04 000005b0: ADD 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: DUP1 000005b5: SWAP2 000005b6: SUB 000005b7: SWAP1 000005b8: REVERT 000005b9: JUMPDEST 000005ba: PUSH2 0x05c1 000005bd: PUSH2 0x1b8c 000005c0: JUMP 000005c1: JUMPDEST 000005c2: PUSH1 0x15 000005c4: DUP1 000005c5: SLOAD 000005c6: PUSH2 0xff00 000005c9: NOT 000005ca: AND 000005cb: PUSH2 0x0100 000005ce: OR 000005cf: SWAP1 000005d0: SSTORE 000005d1: PUSH1 0x40 000005d3: MLOAD 000005d4: PUSH32 0xeca0dfbda743d141662328d4d48393e344b2c60df0430297221df823f2926dba 000005f5: SWAP1 000005f6: PUSH2 0x0602 000005f9: SWAP1 000005fa: TIMESTAMP 000005fb: DUP2 000005fc: MSTORE 000005fd: PUSH1 0x20 000005ff: ADD 00000600: SWAP1 00000601: JUMP 00000602: JUMPDEST 00000603: PUSH1 0x40 00000605: MLOAD 00000606: DUP1 00000607: SWAP2 00000608: SUB 00000609: SWAP1 0000060a: LOG1 0000060b: JUMP 0000060c: JUMPDEST 0000060d: PUSH2 0x0614 00000610: PUSH2 0x2c63 00000613: JUMP 00000614: JUMPDEST 00000615: PUSH1 0x40 00000617: DUP1 00000618: MLOAD 00000619: DUP1 0000061a: DUP3 0000061b: ADD 0000061c: SWAP1 0000061d: SWAP2 0000061e: MSTORE 0000061f: PUSH0 00000620: DUP1 00000621: DUP3 00000622: MSTORE 00000623: PUSH1 0x20 00000625: DUP3 00000626: ADD 00000627: MSTORE 00000628: PUSH2 0x062f 0000062b: PUSH2 0x2c63 0000062e: JUMP 0000062f: JUMPDEST 00000630: POP 00000631: POP 00000632: PUSH1 0x40 00000634: DUP1 00000635: MLOAD 00000636: PUSH1 0xa0 00000638: DUP1 00000639: DUP3 0000063a: ADD 0000063b: DUP4 0000063c: MSTORE 0000063d: PUSH1 0x07 0000063f: SLOAD 00000640: PUSH1 0x01 00000642: PUSH1 0x01 00000644: PUSH1 0x60 00000646: SHL 00000647: SUB 00000648: DUP1 00000649: DUP3 0000064a: AND 0000064b: DUP5 0000064c: MSTORE 0000064d: PUSH1 0x01 0000064f: PUSH1 0x60 00000651: SHL 00000652: SWAP2 00000653: DUP3 00000654: SWAP1 00000655: DIV 00000656: DUP2 00000657: AND 00000658: PUSH1 0x20 0000065a: DUP1 0000065b: DUP7 0000065c: ADD 0000065d: SWAP2 0000065e: SWAP1 0000065f: SWAP2 00000660: MSTORE 00000661: PUSH1 0x08 00000663: SLOAD 00000664: DUP1 00000665: DUP4 00000666: AND 00000667: DUP7 00000668: DUP9 00000669: ADD 0000066a: MSTORE 0000066b: DUP4 0000066c: SWAP1 0000066d: DIV 0000066e: DUP3 0000066f: AND 00000670: PUSH1 0x60 00000672: DUP1 00000673: DUP8 00000674: ADD 00000675: SWAP2 00000676: SWAP1 00000677: SWAP2 00000678: MSTORE 00000679: PUSH1 0x09 0000067b: SLOAD 0000067c: SWAP1 0000067d: SWAP3 0000067e: AND 0000067f: PUSH1 0x80 00000681: DUP1 00000682: DUP8 00000683: ADD 00000684: SWAP2 00000685: SWAP1 00000686: SWAP2 00000687: MSTORE 00000688: DUP7 00000689: MLOAD 0000068a: DUP1 0000068b: DUP9 0000068c: ADD 0000068d: DUP9 0000068e: MSTORE 0000068f: PUSH1 0x0a 00000691: SLOAD 00000692: PUSH6 0xffffffffffff 00000699: SWAP1 0000069a: DUP2 0000069b: AND 0000069c: DUP3 0000069d: MSTORE 0000069e: PUSH1 0x0b 000006a0: SLOAD 000006a1: DUP3 000006a2: DUP6 000006a3: ADD 000006a4: MSTORE 000006a5: DUP9 000006a6: MLOAD 000006a7: SWAP7 000006a8: DUP8 000006a9: ADD 000006aa: DUP10 000006ab: MSTORE 000006ac: PUSH1 0x06 000006ae: SLOAD 000006af: DUP1 000006b0: DUP3 000006b1: AND 000006b2: DUP9 000006b3: MSTORE 000006b4: PUSH1 0x01 000006b6: PUSH1 0x30 000006b8: SHL 000006b9: DUP2 000006ba: DIV 000006bb: DUP3 000006bc: AND 000006bd: SWAP5 000006be: DUP9 000006bf: ADD 000006c0: SWAP5 000006c1: SWAP1 000006c2: SWAP5 000006c3: MSTORE 000006c4: SWAP5 000006c5: DUP4 000006c6: DIV 000006c7: DUP6 000006c8: AND 000006c9: SWAP8 000006ca: DUP7 000006cb: ADD 000006cc: SWAP8 000006cd: SWAP1 000006ce: SWAP8 000006cf: MSTORE 000006d0: PUSH1 0x01 000006d2: PUSH1 0x90 000006d4: SHL 000006d5: DUP3 000006d6: DIV 000006d7: DUP5 000006d8: AND 000006d9: SWAP3 000006da: DUP6 000006db: ADD 000006dc: SWAP3 000006dd: SWAP1 000006de: SWAP3 000006df: MSTORE 000006e0: PUSH1 0x01 000006e2: PUSH1 0xc0 000006e4: SHL 000006e5: SWAP1 000006e6: DIV 000006e7: SWAP1 000006e8: SWAP2 000006e9: AND 000006ea: SWAP1 000006eb: DUP3 000006ec: ADD 000006ed: MSTORE 000006ee: SWAP1 000006ef: SWAP4 000006f0: SWAP2 000006f1: SWAP3 000006f2: POP 000006f3: SWAP1 000006f4: JUMP 000006f5: JUMPDEST 000006f6: CALLER 000006f7: PUSH0 000006f8: SWAP1 000006f9: DUP2 000006fa: MSTORE 000006fb: PUSH1 0x01 000006fd: PUSH1 0x20 000006ff: DUP2 00000700: DUP2 00000701: MSTORE 00000702: PUSH1 0x40 00000704: DUP1 00000705: DUP5 00000706: KECCAK256 00000707: PUSH1 0x01 00000709: PUSH1 0x01 0000070b: PUSH1 0xa0 0000070d: SHL 0000070e: SUB 0000070f: DUP8 00000710: AND 00000711: DUP6 00000712: MSTORE 00000713: SWAP1 00000714: SWAP2 00000715: MSTORE 00000716: SWAP1 00000717: SWAP2 00000718: KECCAK256 00000719: DUP3 0000071a: SWAP1 0000071b: SSTORE 0000071c: JUMPDEST 0000071d: SWAP3 0000071e: SWAP2 0000071f: POP 00000720: POP 00000721: JUMP 00000722: JUMPDEST 00000723: PUSH0 00000724: PUSH1 0x01 00000726: PUSH1 0x01 00000728: PUSH1 0xa0 0000072a: SHL 0000072b: SUB 0000072c: DUP4 0000072d: AND 0000072e: ISZERO 0000072f: DUP1 00000730: PUSH2 0x0737 00000733: JUMPI 00000734: POP 00000735: DUP2 00000736: ISZERO 00000737: JUMPDEST 00000738: ISZERO 00000739: PUSH2 0x0755 0000073c: JUMPI 0000073d: PUSH1 0x40 0000073f: MLOAD 00000740: PUSH4 0x2f352531 00000745: PUSH1 0xe0 00000747: SHL 00000748: DUP2 00000749: MSTORE 0000074a: PUSH1 0x04 0000074c: ADD 0000074d: PUSH1 0x40 0000074f: MLOAD 00000750: DUP1 00000751: SWAP2 00000752: SUB 00000753: SWAP1 00000754: REVERT 00000755: JUMPDEST 00000756: PUSH1 0x01 00000758: PUSH1 0x01 0000075a: PUSH1 0xa0 0000075c: SHL 0000075d: SUB 0000075e: DUP5 0000075f: AND 00000760: CALLER 00000761: EQ 00000762: PUSH2 0x07e0 00000765: JUMPI 00000766: PUSH1 0x01 00000768: PUSH1 0x01 0000076a: PUSH1 0xa0 0000076c: SHL 0000076d: SUB 0000076e: DUP5 0000076f: AND 00000770: PUSH0 00000771: SWAP1 00000772: DUP2 00000773: MSTORE 00000774: PUSH1 0x01 00000776: PUSH1 0x20 00000778: SWAP1 00000779: DUP2 0000077a: MSTORE 0000077b: PUSH1 0x40 0000077d: DUP1 0000077e: DUP4 0000077f: KECCAK256 00000780: CALLER 00000781: DUP5 00000782: MSTORE 00000783: SWAP1 00000784: SWAP2 00000785: MSTORE 00000786: SWAP1 00000787: KECCAK256 00000788: SLOAD 00000789: DUP3 0000078a: GT 0000078b: ISZERO 0000078c: PUSH2 0x07a8 0000078f: JUMPI 00000790: PUSH1 0x40 00000792: MLOAD 00000793: PUSH4 0x58d246fb 00000798: PUSH1 0xe1 0000079a: SHL 0000079b: DUP2 0000079c: MSTORE 0000079d: PUSH1 0x04 0000079f: ADD 000007a0: PUSH1 0x40 000007a2: MLOAD 000007a3: DUP1 000007a4: SWAP2 000007a5: SUB 000007a6: SWAP1 000007a7: REVERT 000007a8: JUMPDEST 000007a9: PUSH1 0x01 000007ab: PUSH1 0x01 000007ad: PUSH1 0xa0 000007af: SHL 000007b0: SUB 000007b1: DUP5 000007b2: AND 000007b3: PUSH0 000007b4: SWAP1 000007b5: DUP2 000007b6: MSTORE 000007b7: PUSH1 0x01 000007b9: PUSH1 0x20 000007bb: SWAP1 000007bc: DUP2 000007bd: MSTORE 000007be: PUSH1 0x40 000007c0: DUP1 000007c1: DUP4 000007c2: KECCAK256 000007c3: CALLER 000007c4: DUP5 000007c5: MSTORE 000007c6: SWAP1 000007c7: SWAP2 000007c8: MSTORE 000007c9: DUP2 000007ca: KECCAK256 000007cb: DUP1 000007cc: SLOAD 000007cd: DUP5 000007ce: SWAP3 000007cf: SWAP1 000007d0: PUSH2 0x07da 000007d3: SWAP1 000007d4: DUP5 000007d5: SWAP1 000007d6: PUSH2 0x2de8 000007d9: JUMP 000007da: JUMPDEST 000007db: SWAP1 000007dc: SWAP2 000007dd: SSTORE 000007de: POP 000007df: POP 000007e0: JUMPDEST 000007e1: PUSH2 0x07eb 000007e4: DUP5 000007e5: DUP5 000007e6: DUP5 000007e7: PUSH2 0x1c2d 000007ea: JUMP 000007eb: JUMPDEST 000007ec: POP 000007ed: PUSH1 0x01 000007ef: JUMPDEST 000007f0: SWAP4 000007f1: SWAP3 000007f2: POP 000007f3: POP 000007f4: POP 000007f5: JUMP 000007f6: JUMPDEST 000007f7: PUSH2 0x07fe 000007fa: PUSH2 0x2c63 000007fd: JUMP 000007fe: JUMPDEST 000007ff: PUSH1 0x40 00000801: DUP1 00000802: MLOAD 00000803: DUP1 00000804: DUP3 00000805: ADD 00000806: SWAP1 00000807: SWAP2 00000808: MSTORE 00000809: PUSH0 0000080a: DUP1 0000080b: DUP3 0000080c: MSTORE 0000080d: PUSH1 0x20 0000080f: DUP3 00000810: ADD 00000811: MSTORE 00000812: PUSH2 0x0819 00000815: PUSH2 0x2c63 00000818: JUMP 00000819: JUMPDEST 0000081a: POP 0000081b: POP 0000081c: PUSH1 0x40 0000081e: DUP1 0000081f: MLOAD 00000820: PUSH1 0xa0 00000822: DUP1 00000823: DUP3 00000824: ADD 00000825: DUP4 00000826: MSTORE 00000827: PUSH1 0x0e 00000829: SLOAD 0000082a: PUSH1 0x01 0000082c: PUSH1 0x01 0000082e: PUSH1 0x60 00000830: SHL 00000831: SUB 00000832: DUP1 00000833: DUP3 00000834: AND 00000835: DUP5 00000836: MSTORE 00000837: PUSH1 0x01 00000839: PUSH1 0x60 0000083b: SHL 0000083c: SWAP2 0000083d: DUP3 0000083e: SWAP1 0000083f: DIV 00000840: DUP2 00000841: AND 00000842: PUSH1 0x20 00000844: DUP1 00000845: DUP7 00000846: ADD 00000847: SWAP2 00000848: SWAP1 00000849: SWAP2 0000084a: MSTORE 0000084b: PUSH1 0x0f 0000084d: SLOAD 0000084e: DUP1 0000084f: DUP4 00000850: AND 00000851: DUP7 00000852: DUP9 00000853: ADD 00000854: MSTORE 00000855: DUP4 00000856: SWAP1 00000857: DIV 00000858: DUP3 00000859: AND 0000085a: PUSH1 0x60 0000085c: DUP1 0000085d: DUP8 0000085e: ADD 0000085f: SWAP2 00000860: SWAP1 00000861: SWAP2 00000862: MSTORE 00000863: PUSH1 0x10 00000865: SLOAD 00000866: SWAP1 00000867: SWAP3 00000868: AND 00000869: PUSH1 0x80 0000086b: DUP1 0000086c: DUP8 0000086d: ADD 0000086e: SWAP2 0000086f: SWAP1 00000870: SWAP2 00000871: MSTORE 00000872: DUP7 00000873: MLOAD 00000874: DUP1 00000875: DUP9 00000876: ADD 00000877: DUP9 00000878: MSTORE 00000879: PUSH1 0x11 0000087b: SLOAD 0000087c: PUSH6 0xffffffffffff 00000883: SWAP1 00000884: DUP2 00000885: AND 00000886: DUP3 00000887: MSTORE 00000888: PUSH1 0x12 0000088a: SLOAD 0000088b: DUP3 0000088c: DUP6 0000088d: ADD 0000088e: MSTORE 0000088f: DUP9 00000890: MLOAD 00000891: SWAP7 00000892: DUP8 00000893: ADD 00000894: DUP10 00000895: MSTORE 00000896: PUSH1 0x0d 00000898: SLOAD 00000899: DUP1 0000089a: DUP3 0000089b: AND 0000089c: DUP9 0000089d: MSTORE 0000089e: PUSH1 0x01 000008a0: PUSH1 0x30 000008a2: SHL 000008a3: DUP2 000008a4: DIV 000008a5: DUP3 000008a6: AND 000008a7: SWAP5 000008a8: DUP9 000008a9: ADD 000008aa: SWAP5 000008ab: SWAP1 000008ac: SWAP5 000008ad: MSTORE 000008ae: SWAP5 000008af: DUP4 000008b0: DIV 000008b1: DUP6 000008b2: AND 000008b3: SWAP8 000008b4: DUP7 000008b5: ADD 000008b6: SWAP8 000008b7: SWAP1 000008b8: SWAP8 000008b9: MSTORE 000008ba: PUSH1 0x01 000008bc: PUSH1 0x90 000008be: SHL 000008bf: DUP3 000008c0: DIV 000008c1: DUP5 000008c2: AND 000008c3: SWAP3 000008c4: DUP6 000008c5: ADD 000008c6: SWAP3 000008c7: SWAP1 000008c8: SWAP3 000008c9: MSTORE 000008ca: PUSH1 0x01 000008cc: PUSH1 0xc0 000008ce: SHL 000008cf: SWAP1 000008d0: DIV 000008d1: SWAP1 000008d2: SWAP2 000008d3: AND 000008d4: SWAP1 000008d5: DUP3 000008d6: ADD 000008d7: MSTORE 000008d8: SWAP1 000008d9: SWAP4 000008da: SWAP2 000008db: SWAP3 000008dc: POP 000008dd: SWAP1 000008de: JUMP 000008df: JUMPDEST 000008e0: PUSH0 000008e1: PUSH2 0x08ea 000008e4: CALLER 000008e5: DUP4 000008e6: PUSH2 0x1e0e 000008e9: JUMP 000008ea: JUMPDEST 000008eb: POP 000008ec: PUSH1 0x40 000008ee: MLOAD 000008ef: DUP2 000008f0: DUP2 000008f1: MSTORE 000008f2: PUSH1 0x01 000008f4: SWAP1 000008f5: PUSH0 000008f6: SWAP1 000008f7: CALLER 000008f8: SWAP1 000008f9: PUSH0 000008fa: DUP1 000008fb: MLOAD 000008fc: PUSH1 0x20 000008fe: PUSH2 0x2fa7 00000901: DUP4 00000902: CODECOPY 00000903: DUP2 00000904: MLOAD 00000905: SWAP2 00000906: MSTORE 00000907: SWAP1 00000908: PUSH1 0x20 0000090a: ADD 0000090b: PUSH1 0x40 0000090d: MLOAD 0000090e: DUP1 0000090f: SWAP2 00000910: SUB 00000911: SWAP1 00000912: LOG3 00000913: SWAP2 00000914: SWAP1 00000915: POP 00000916: JUMP 00000917: JUMPDEST 00000918: CALLER 00000919: PUSH20 0x946ef43867225695e29241813a8f41519634b36b 0000092e: EQ 0000092f: PUSH2 0x094b 00000932: JUMPI 00000933: PUSH1 0x40 00000935: MLOAD 00000936: PUSH4 0x5fc483c5 0000093b: PUSH1 0xe0 0000093d: SHL 0000093e: DUP2 0000093f: MSTORE 00000940: PUSH1 0x04 00000942: ADD 00000943: PUSH1 0x40 00000945: MLOAD 00000946: DUP1 00000947: SWAP2 00000948: SUB 00000949: SWAP1 0000094a: REVERT 0000094b: JUMPDEST 0000094c: PUSH1 0x01 0000094e: PUSH1 0x01 00000950: PUSH1 0xa0 00000952: SHL 00000953: SUB 00000954: DUP2 00000955: AND 00000956: PUSH0 00000957: DUP2 00000958: DUP2 00000959: MSTORE 0000095a: PUSH1 0x02 0000095c: PUSH1 0x20 0000095e: MSTORE 0000095f: PUSH1 0x40 00000961: DUP1 00000962: DUP3 00000963: KECCAK256 00000964: DUP1 00000965: SLOAD 00000966: PUSH1 0xff 00000968: NOT 00000969: AND 0000096a: PUSH1 0x01 0000096c: OR 0000096d: SWAP1 0000096e: SSTORE 0000096f: MLOAD 00000970: PUSH32 0xec2dffa455deca3e695cce255e2b110b5ca334fb5b166f3159bbaad319ce0f1b 00000991: SWAP2 00000992: SWAP1 00000993: LOG2 00000994: POP 00000995: JUMP 00000996: JUMPDEST 00000997: PUSH1 0x15 00000999: SLOAD 0000099a: PUSH0 0000099b: SWAP1 0000099c: PUSH1 0xff 0000099e: AND 0000099f: PUSH1 0x02 000009a1: SUB 000009a2: PUSH2 0x09be 000009a5: JUMPI 000009a6: PUSH1 0x40 000009a8: MLOAD 000009a9: PUSH4 0x558a1e03 000009ae: PUSH1 0xe1 000009b0: SHL 000009b1: DUP2 000009b2: MSTORE 000009b3: PUSH1 0x04 000009b5: ADD 000009b6: PUSH1 0x40 000009b8: MLOAD 000009b9: DUP1 000009ba: SWAP2 000009bb: SUB 000009bc: SWAP1 000009bd: REVERT 000009be: JUMPDEST 000009bf: PUSH1 0x15 000009c1: DUP1 000009c2: SLOAD 000009c3: PUSH1 0xff 000009c5: NOT 000009c6: AND 000009c7: PUSH1 0x02 000009c9: OR 000009ca: SWAP1 000009cb: SSTORE 000009cc: PUSH1 0x0a 000009ce: SLOAD 000009cf: PUSH6 0xffffffffffff 000009d6: AND 000009d7: TIMESTAMP 000009d8: GT 000009d9: ISZERO 000009da: PUSH2 0x09f5 000009dd: JUMPI 000009de: PUSH1 0x40 000009e0: MLOAD 000009e1: PUSH3 0xb5f6bf 000009e5: PUSH1 0xe4 000009e7: SHL 000009e8: DUP2 000009e9: MSTORE 000009ea: PUSH1 0x04 000009ec: ADD 000009ed: PUSH1 0x40 000009ef: MLOAD 000009f0: DUP1 000009f1: SWAP2 000009f2: SUB 000009f3: SWAP1 000009f4: REVERT 000009f5: JUMPDEST 000009f6: PUSH1 0x07 000009f8: SLOAD 000009f9: PUSH1 0x01 000009fb: PUSH1 0x01 000009fd: PUSH1 0x60 000009ff: SHL 00000a00: SUB 00000a01: AND 00000a02: ISZERO 00000a03: PUSH2 0x10d4 00000a06: JUMPI 00000a07: PUSH0 00000a08: PUSH1 0x07 00000a0a: PUSH1 0x40 00000a0c: MLOAD 00000a0d: DUP1 00000a0e: PUSH1 0xa0 00000a10: ADD 00000a11: PUSH1 0x40 00000a13: MSTORE 00000a14: SWAP1 00000a15: DUP2 00000a16: PUSH0 00000a17: DUP3 00000a18: ADD 00000a19: PUSH0 00000a1a: SWAP1 00000a1b: SLOAD 00000a1c: SWAP1 00000a1d: PUSH2 0x0100 00000a20: EXP 00000a21: SWAP1 00000a22: DIV 00000a23: PUSH1 0x01 00000a25: PUSH1 0x01 00000a27: PUSH1 0x60 00000a29: SHL 00000a2a: SUB 00000a2b: AND 00000a2c: PUSH1 0x01 00000a2e: PUSH1 0x01 00000a30: PUSH1 0x60 00000a32: SHL 00000a33: SUB 00000a34: AND 00000a35: PUSH1 0x01 00000a37: PUSH1 0x01 00000a39: PUSH1 0x60 00000a3b: SHL 00000a3c: SUB 00000a3d: AND 00000a3e: DUP2 00000a3f: MSTORE 00000a40: PUSH1 0x20 00000a42: ADD 00000a43: PUSH0 00000a44: DUP3 00000a45: ADD 00000a46: PUSH1 0x0c 00000a48: SWAP1 00000a49: SLOAD 00000a4a: SWAP1 00000a4b: PUSH2 0x0100 00000a4e: EXP 00000a4f: SWAP1 00000a50: DIV 00000a51: PUSH1 0x01 00000a53: PUSH1 0x01 00000a55: PUSH1 0x60 00000a57: SHL 00000a58: SUB 00000a59: AND 00000a5a: PUSH1 0x01 00000a5c: PUSH1 0x01 00000a5e: PUSH1 0x60 00000a60: SHL 00000a61: SUB 00000a62: AND 00000a63: PUSH1 0x01 00000a65: PUSH1 0x01 00000a67: PUSH1 0x60 00000a69: SHL 00000a6a: SUB 00000a6b: AND 00000a6c: DUP2 00000a6d: MSTORE 00000a6e: PUSH1 0x20 00000a70: ADD 00000a71: PUSH1 0x01 00000a73: DUP3 00000a74: ADD 00000a75: PUSH0 00000a76: SWAP1 00000a77: SLOAD 00000a78: SWAP1 00000a79: PUSH2 0x0100 00000a7c: EXP 00000a7d: SWAP1 00000a7e: DIV 00000a7f: PUSH1 0x01 00000a81: PUSH1 0x01 00000a83: PUSH1 0x60 00000a85: SHL 00000a86: SUB 00000a87: AND 00000a88: PUSH1 0x01 00000a8a: PUSH1 0x01 00000a8c: PUSH1 0x60 00000a8e: SHL 00000a8f: SUB 00000a90: AND 00000a91: PUSH1 0x01 00000a93: PUSH1 0x01 00000a95: PUSH1 0x60 00000a97: SHL 00000a98: SUB 00000a99: AND 00000a9a: DUP2 00000a9b: MSTORE 00000a9c: PUSH1 0x20 00000a9e: ADD 00000a9f: PUSH1 0x01 00000aa1: DUP3 00000aa2: ADD 00000aa3: PUSH1 0x0c 00000aa5: SWAP1 00000aa6: SLOAD 00000aa7: SWAP1 00000aa8: PUSH2 0x0100 00000aab: EXP 00000aac: SWAP1 00000aad: DIV 00000aae: PUSH1 0x01 00000ab0: PUSH1 0x01 00000ab2: PUSH1 0x60 00000ab4: SHL 00000ab5: SUB 00000ab6: AND 00000ab7: PUSH1 0x01 00000ab9: PUSH1 0x01 00000abb: PUSH1 0x60 00000abd: SHL 00000abe: SUB 00000abf: AND 00000ac0: PUSH1 0x01 00000ac2: PUSH1 0x01 00000ac4: PUSH1 0x60 00000ac6: SHL 00000ac7: SUB 00000ac8: AND 00000ac9: DUP2 00000aca: MSTORE 00000acb: PUSH1 0x20 00000acd: ADD 00000ace: PUSH1 0x02 00000ad0: DUP3 00000ad1: ADD 00000ad2: PUSH0 00000ad3: SWAP1 00000ad4: SLOAD 00000ad5: SWAP1 00000ad6: PUSH2 0x0100 00000ad9: EXP 00000ada: SWAP1 00000adb: DIV 00000adc: PUSH1 0x01 00000ade: PUSH1 0x01 00000ae0: PUSH1 0x60 00000ae2: SHL 00000ae3: SUB 00000ae4: AND 00000ae5: PUSH1 0x01 00000ae7: PUSH1 0x01 00000ae9: PUSH1 0x60 00000aeb: SHL 00000aec: SUB 00000aed: AND 00000aee: PUSH1 0x01 00000af0: PUSH1 0x01 00000af2: PUSH1 0x60 00000af4: SHL 00000af5: SUB 00000af6: AND 00000af7: DUP2 00000af8: MSTORE 00000af9: POP 00000afa: POP 00000afb: SWAP1 00000afc: POP 00000afd: PUSH0 00000afe: PUSH1 0x0a 00000b00: PUSH1 0x40 00000b02: MLOAD 00000b03: DUP1 00000b04: PUSH1 0x40 00000b06: ADD 00000b07: PUSH1 0x40 00000b09: MSTORE 00000b0a: SWAP1 00000b0b: DUP2 00000b0c: PUSH0 00000b0d: DUP3 00000b0e: ADD 00000b0f: PUSH0 00000b10: SWAP1 00000b11: SLOAD 00000b12: SWAP1 00000b13: PUSH2 0x0100 00000b16: EXP 00000b17: SWAP1 00000b18: DIV 00000b19: PUSH6 0xffffffffffff 00000b20: AND 00000b21: PUSH6 0xffffffffffff 00000b28: AND 00000b29: PUSH6 0xffffffffffff 00000b30: AND 00000b31: DUP2 00000b32: MSTORE 00000b33: PUSH1 0x20 00000b35: ADD 00000b36: PUSH1 0x01 00000b38: DUP3 00000b39: ADD 00000b3a: SLOAD 00000b3b: DUP2 00000b3c: MSTORE 00000b3d: POP 00000b3e: POP 00000b3f: SWAP1 00000b40: POP 00000b41: PUSH0 00000b42: PUSH1 0x06 00000b44: PUSH1 0x40 00000b46: MLOAD 00000b47: DUP1 00000b48: PUSH1 0xa0 00000b4a: ADD 00000b4b: PUSH1 0x40 00000b4d: MSTORE 00000b4e: SWAP1 00000b4f: DUP2 00000b50: PUSH0 00000b51: DUP3 00000b52: ADD 00000b53: PUSH0 00000b54: SWAP1 00000b55: SLOAD 00000b56: SWAP1 00000b57: PUSH2 0x0100 00000b5a: EXP 00000b5b: SWAP1 00000b5c: DIV 00000b5d: PUSH6 0xffffffffffff 00000b64: AND 00000b65: PUSH6 0xffffffffffff 00000b6c: AND 00000b6d: PUSH6 0xffffffffffff 00000b74: AND 00000b75: DUP2 00000b76: MSTORE 00000b77: PUSH1 0x20 00000b79: ADD 00000b7a: PUSH0 00000b7b: DUP3 00000b7c: ADD 00000b7d: PUSH1 0x06 00000b7f: SWAP1 00000b80: SLOAD 00000b81: SWAP1 00000b82: PUSH2 0x0100 00000b85: EXP 00000b86: SWAP1 00000b87: DIV 00000b88: PUSH6 0xffffffffffff 00000b8f: AND 00000b90: PUSH6 0xffffffffffff 00000b97: AND 00000b98: PUSH6 0xffffffffffff 00000b9f: AND 00000ba0: DUP2 00000ba1: MSTORE 00000ba2: PUSH1 0x20 00000ba4: ADD 00000ba5: PUSH0 00000ba6: DUP3 00000ba7: ADD 00000ba8: PUSH1 0x0c 00000baa: SWAP1 00000bab: SLOAD 00000bac: SWAP1 00000bad: PUSH2 0x0100 00000bb0: EXP 00000bb1: SWAP1 00000bb2: DIV 00000bb3: PUSH6 0xffffffffffff 00000bba: AND 00000bbb: PUSH6 0xffffffffffff 00000bc2: AND 00000bc3: PUSH6 0xffffffffffff 00000bca: AND 00000bcb: DUP2 00000bcc: MSTORE 00000bcd: PUSH1 0x20 00000bcf: ADD 00000bd0: PUSH0 00000bd1: DUP3 00000bd2: ADD 00000bd3: PUSH1 0x12 00000bd5: SWAP1 00000bd6: SLOAD 00000bd7: SWAP1 00000bd8: PUSH2 0x0100 00000bdb: EXP 00000bdc: SWAP1 00000bdd: DIV 00000bde: PUSH6 0xffffffffffff 00000be5: AND 00000be6: PUSH6 0xffffffffffff 00000bed: AND 00000bee: PUSH6 0xffffffffffff 00000bf5: AND 00000bf6: DUP2 00000bf7: MSTORE 00000bf8: PUSH1 0x20 00000bfa: ADD 00000bfb: PUSH0 00000bfc: DUP3 00000bfd: ADD 00000bfe: PUSH1 0x18 00000c00: SWAP1 00000c01: SLOAD 00000c02: SWAP1 00000c03: PUSH2 0x0100 00000c06: EXP 00000c07: SWAP1 00000c08: DIV 00000c09: PUSH6 0xffffffffffff 00000c10: AND 00000c11: PUSH6 0xffffffffffff 00000c18: AND 00000c19: PUSH6 0xffffffffffff 00000c20: AND 00000c21: DUP2 00000c22: MSTORE 00000c23: POP 00000c24: POP 00000c25: SWAP1 00000c26: POP 00000c27: PUSH0 00000c28: PUSH1 0x05 00000c2a: PUSH1 0x40 00000c2c: MLOAD 00000c2d: DUP1 00000c2e: PUSH1 0x80 00000c30: ADD 00000c31: PUSH1 0x40 00000c33: MSTORE 00000c34: SWAP1 00000c35: DUP2 00000c36: PUSH0 00000c37: DUP3 00000c38: ADD 00000c39: PUSH0 00000c3a: SWAP1 00000c3b: SLOAD 00000c3c: SWAP1 00000c3d: PUSH2 0x0100 00000c40: EXP 00000c41: SWAP1 00000c42: DIV 00000c43: PUSH1 0x01 00000c45: PUSH1 0x01 00000c47: PUSH1 0x80 00000c49: SHL 00000c4a: SUB 00000c4b: AND 00000c4c: PUSH1 0x01 00000c4e: PUSH1 0x01 00000c50: PUSH1 0x80 00000c52: SHL 00000c53: SUB 00000c54: AND 00000c55: PUSH1 0x01 00000c57: PUSH1 0x01 00000c59: PUSH1 0x80 00000c5b: SHL 00000c5c: SUB 00000c5d: AND 00000c5e: DUP2 00000c5f: MSTORE 00000c60: PUSH1 0x20 00000c62: ADD 00000c63: PUSH0 00000c64: DUP3 00000c65: ADD 00000c66: PUSH1 0x10 00000c68: SWAP1 00000c69: SLOAD 00000c6a: SWAP1 00000c6b: PUSH2 0x0100 00000c6e: EXP 00000c6f: SWAP1 00000c70: DIV 00000c71: PUSH6 0xffffffffffff 00000c78: AND 00000c79: PUSH6 0xffffffffffff 00000c80: AND 00000c81: PUSH6 0xffffffffffff 00000c88: AND 00000c89: DUP2 00000c8a: MSTORE 00000c8b: PUSH1 0x20 00000c8d: ADD 00000c8e: PUSH0 00000c8f: DUP3 00000c90: ADD 00000c91: PUSH1 0x16 00000c93: SWAP1 00000c94: SLOAD 00000c95: SWAP1 00000c96: PUSH2 0x0100 00000c99: EXP 00000c9a: SWAP1 00000c9b: DIV 00000c9c: PUSH6 0xffffffffffff 00000ca3: AND 00000ca4: PUSH6 0xffffffffffff 00000cab: AND 00000cac: PUSH6 0xffffffffffff 00000cb3: AND 00000cb4: DUP2 00000cb5: MSTORE 00000cb6: PUSH1 0x20 00000cb8: ADD 00000cb9: PUSH0 00000cba: DUP3 00000cbb: ADD 00000cbc: PUSH1 0x1c 00000cbe: SWAP1 00000cbf: SLOAD 00000cc0: SWAP1 00000cc1: PUSH2 0x0100 00000cc4: EXP 00000cc5: SWAP1 00000cc6: DIV 00000cc7: PUSH1 0xff 00000cc9: AND 00000cca: ISZERO 00000ccb: ISZERO 00000ccc: ISZERO 00000ccd: ISZERO 00000cce: DUP2 00000ccf: MSTORE 00000cd0: POP 00000cd1: POP 00000cd2: SWAP1 00000cd3: POP 00000cd4: PUSH0 00000cd5: PUSH1 0x04 00000cd7: SLOAD 00000cd8: SWAP1 00000cd9: POP 00000cda: PUSH0 00000cdb: TIMESTAMP 00000cdc: SWAP1 00000cdd: POP 00000cde: PUSH2 0x0dcb 00000ce1: PUSH1 0x06 00000ce3: PUSH1 0x40 00000ce5: MLOAD 00000ce6: DUP1 00000ce7: PUSH1 0xa0 00000ce9: ADD 00000cea: PUSH1 0x40 00000cec: MSTORE 00000ced: SWAP1 00000cee: DUP2 00000cef: PUSH0 00000cf0: DUP3 00000cf1: ADD 00000cf2: PUSH0 00000cf3: SWAP1 00000cf4: SLOAD 00000cf5: SWAP1 00000cf6: PUSH2 0x0100 00000cf9: EXP 00000cfa: SWAP1 00000cfb: DIV 00000cfc: PUSH6 0xffffffffffff 00000d03: AND 00000d04: PUSH6 0xffffffffffff 00000d0b: AND 00000d0c: PUSH6 0xffffffffffff 00000d13: AND 00000d14: DUP2 00000d15: MSTORE 00000d16: PUSH1 0x20 00000d18: ADD 00000d19: PUSH0 00000d1a: DUP3 00000d1b: ADD 00000d1c: PUSH1 0x06 00000d1e: SWAP1 00000d1f: SLOAD 00000d20: SWAP1 00000d21: PUSH2 0x0100 00000d24: EXP 00000d25: SWAP1 00000d26: DIV 00000d27: PUSH6 0xffffffffffff 00000d2e: AND 00000d2f: PUSH6 0xffffffffffff 00000d36: AND 00000d37: PUSH6 0xffffffffffff 00000d3e: AND 00000d3f: DUP2 00000d40: MSTORE 00000d41: PUSH1 0x20 00000d43: ADD 00000d44: PUSH0 00000d45: DUP3 00000d46: ADD 00000d47: PUSH1 0x0c 00000d49: SWAP1 00000d4a: SLOAD 00000d4b: SWAP1 00000d4c: PUSH2 0x0100 00000d4f: EXP 00000d50: SWAP1 00000d51: DIV 00000d52: PUSH6 0xffffffffffff 00000d59: AND 00000d5a: PUSH6 0xffffffffffff 00000d61: AND 00000d62: PUSH6 0xffffffffffff 00000d69: AND 00000d6a: DUP2 00000d6b: MSTORE 00000d6c: PUSH1 0x20 00000d6e: ADD 00000d6f: PUSH0 00000d70: DUP3 00000d71: ADD 00000d72: PUSH1 0x12 00000d74: SWAP1 00000d75: SLOAD 00000d76: SWAP1 00000d77: PUSH2 0x0100 00000d7a: EXP 00000d7b: SWAP1 00000d7c: DIV 00000d7d: PUSH6 0xffffffffffff 00000d84: AND 00000d85: PUSH6 0xffffffffffff 00000d8c: AND 00000d8d: PUSH6 0xffffffffffff 00000d94: AND 00000d95: DUP2 00000d96: MSTORE 00000d97: PUSH1 0x20 00000d99: ADD 00000d9a: PUSH0 00000d9b: DUP3 00000d9c: ADD 00000d9d: PUSH1 0x18 00000d9f: SWAP1 00000da0: SLOAD 00000da1: SWAP1 00000da2: PUSH2 0x0100 00000da5: EXP 00000da6: SWAP1 00000da7: DIV 00000da8: PUSH6 0xffffffffffff 00000daf: AND 00000db0: PUSH6 0xffffffffffff 00000db7: AND 00000db8: PUSH6 0xffffffffffff 00000dbf: AND 00000dc0: DUP2 00000dc1: MSTORE 00000dc2: POP 00000dc3: POP 00000dc4: DUP8 00000dc5: DUP8 00000dc6: DUP7 00000dc7: PUSH2 0x1e91 00000dca: JUMP 00000dcb: JUMPDEST 00000dcc: DUP1 00000dcd: SWAP7 00000dce: POP 00000dcf: DUP2 00000dd0: SWAP9 00000dd1: POP 00000dd2: DUP3 00000dd3: SWAP8 00000dd4: POP 00000dd5: DUP4 00000dd6: SWAP10 00000dd7: POP 00000dd8: POP 00000dd9: POP 00000dda: POP 00000ddb: POP 00000ddc: PUSH0 00000ddd: PUSH2 0x0df8 00000de0: DUP7 00000de1: PUSH1 0x20 00000de3: ADD 00000de4: MLOAD 00000de5: DUP9 00000de6: PUSH1 0x20 00000de8: ADD 00000de9: MLOAD 00000dea: PUSH1 0x01 00000dec: PUSH1 0x01 00000dee: PUSH1 0x60 00000df0: SHL 00000df1: SUB 00000df2: AND 00000df3: DUP6 00000df4: PUSH2 0x1fb7 00000df7: JUMP 00000df8: JUMPDEST 00000df9: SWAP1 00000dfa: POP 00000dfb: DUP1 00000dfc: PUSH2 0x0e0d 00000dff: CALLVALUE 00000e00: PUSH8 0x0de0b6b3a7640000 00000e09: PUSH2 0x2dfb 00000e0c: JUMP 00000e0d: JUMPDEST 00000e0e: PUSH2 0x0e17 00000e11: SWAP2 00000e12: SWAP1 00000e13: PUSH2 0x2e26 00000e16: JUMP 00000e17: JUMPDEST 00000e18: PUSH1 0x08 00000e1a: SLOAD 00000e1b: SWAP1 00000e1c: SWAP9 00000e1d: POP 00000e1e: PUSH1 0x01 00000e20: PUSH1 0x01 00000e22: PUSH1 0x60 00000e24: SHL 00000e25: SUB 00000e26: AND 00000e27: DUP9 00000e28: GT 00000e29: ISZERO 00000e2a: PUSH2 0x0e46 00000e2d: JUMPI 00000e2e: PUSH1 0x40 00000e30: MLOAD 00000e31: PUSH4 0x05c250cf 00000e36: PUSH1 0xe1 00000e38: SHL 00000e39: DUP2 00000e3a: MSTORE 00000e3b: PUSH1 0x04 00000e3d: ADD 00000e3e: PUSH1 0x40 00000e40: MLOAD 00000e41: DUP1 00000e42: SWAP2 00000e43: SUB 00000e44: SWAP1 00000e45: REVERT 00000e46: JUMPDEST 00000e47: DUP8 00000e48: DUP8 00000e49: PUSH0 00000e4a: ADD 00000e4b: DUP2 00000e4c: DUP2 00000e4d: MLOAD 00000e4e: PUSH2 0x0e57 00000e51: SWAP2 00000e52: SWAP1 00000e53: PUSH2 0x2e39 00000e56: JUMP 00000e57: JUMPDEST 00000e58: PUSH1 0x01 00000e5a: PUSH1 0x01 00000e5c: PUSH1 0x60 00000e5e: SHL 00000e5f: SUB 00000e60: AND 00000e61: SWAP1 00000e62: MSTORE 00000e63: POP 00000e64: PUSH1 0x80 00000e66: DUP8 00000e67: ADD 00000e68: DUP1 00000e69: MLOAD 00000e6a: CALLVALUE 00000e6b: SWAP2 00000e6c: SWAP1 00000e6d: PUSH2 0x0e77 00000e70: SWAP1 00000e71: DUP4 00000e72: SWAP1 00000e73: PUSH2 0x2e60 00000e76: JUMP 00000e77: JUMPDEST 00000e78: PUSH1 0x01 00000e7a: PUSH1 0x01 00000e7c: PUSH1 0x60 00000e7e: SHL 00000e7f: SUB 00000e80: AND 00000e81: SWAP1 00000e82: MSTORE 00000e83: POP 00000e84: PUSH1 0x60 00000e86: DUP8 00000e87: ADD 00000e88: DUP1 00000e89: MLOAD 00000e8a: DUP10 00000e8b: SWAP2 00000e8c: SWAP1 00000e8d: PUSH2 0x0e97 00000e90: SWAP1 00000e91: DUP4 00000e92: SWAP1 00000e93: PUSH2 0x2e60 00000e96: JUMP 00000e97: JUMPDEST 00000e98: PUSH1 0x01 00000e9a: PUSH1 0x01 00000e9c: PUSH1 0x60 00000e9e: SHL 00000e9f: SUB 00000ea0: AND 00000ea1: SWAP1 00000ea2: MSTORE 00000ea3: POP 00000ea4: PUSH1 0x20 00000ea6: DUP8 00000ea7: ADD 00000ea8: DUP1 00000ea9: MLOAD 00000eaa: DUP10 00000eab: SWAP2 00000eac: SWAP1 00000ead: PUSH2 0x0eb7 00000eb0: SWAP1 00000eb1: DUP4 00000eb2: SWAP1 00000eb3: PUSH2 0x2e60 00000eb6: JUMP 00000eb7: JUMPDEST 00000eb8: PUSH1 0x01 00000eba: PUSH1 0x01 00000ebc: PUSH1 0x60 00000ebe: SHL 00000ebf: SUB 00000ec0: AND 00000ec1: SWAP1 00000ec2: MSTORE 00000ec3: POP 00000ec4: PUSH0 00000ec5: PUSH2 0x0ece 00000ec8: CALLER 00000ec9: DUP11 00000eca: PUSH2 0x1fe7 00000ecd: JUMP 00000ece: JUMPDEST 00000ecf: SWAP1 00000ed0: POP 00000ed1: DUP1 00000ed2: PUSH2 0x0eee 00000ed5: JUMPI 00000ed6: PUSH1 0x40 00000ed8: MLOAD 00000ed9: PUSH4 0xdde1446d 00000ede: PUSH1 0xe0 00000ee0: SHL 00000ee1: DUP2 00000ee2: MSTORE 00000ee3: PUSH1 0x04 00000ee5: ADD 00000ee6: PUSH1 0x40 00000ee8: MLOAD 00000ee9: DUP1 00000eea: SWAP2 00000eeb: SUB 00000eec: SWAP1 00000eed: REVERT 00000eee: JUMPDEST 00000eef: PUSH1 0x40 00000ef1: DUP1 00000ef2: MLOAD 00000ef3: DUP11 00000ef4: DUP2 00000ef5: MSTORE 00000ef6: PUSH1 0x20 00000ef8: DUP2 00000ef9: ADD 00000efa: DUP5 00000efb: SWAP1 00000efc: MSTORE 00000efd: CALLER 00000efe: SWAP2 00000eff: PUSH32 0x3ae9ad26d7d47616d306d7757b947fe7b0f9a7c61a5f0dc784b0ddb6c7c40b5a 00000f20: SWAP2 00000f21: ADD 00000f22: PUSH1 0x40 00000f24: MLOAD 00000f25: DUP1 00000f26: SWAP2 00000f27: SUB 00000f28: SWAP1 00000f29: LOG2 00000f2a: PUSH2 0x0f37 00000f2d: DUP4 00000f2e: DUP10 00000f2f: DUP10 00000f30: DUP10 00000f31: DUP10 00000f32: DUP10 00000f33: PUSH2 0x206b 00000f36: JUMP 00000f37: JUMPDEST 00000f38: DUP4 00000f39: MLOAD 00000f3a: PUSH1 0x07 00000f3c: DUP1 00000f3d: SLOAD 00000f3e: PUSH1 0x20 00000f40: DUP1 00000f41: DUP9 00000f42: ADD 00000f43: MLOAD 00000f44: PUSH1 0x01 00000f46: PUSH1 0x01 00000f48: PUSH1 0x60 00000f4a: SHL 00000f4b: SUB 00000f4c: SWAP5 00000f4d: DUP6 00000f4e: AND 00000f4f: PUSH1 0x01 00000f51: PUSH1 0x01 00000f53: PUSH1 0xc0 00000f55: SHL 00000f56: SUB 00000f57: NOT 00000f58: SWAP4 00000f59: DUP5 00000f5a: AND 00000f5b: OR 00000f5c: PUSH1 0x01 00000f5e: PUSH1 0x60 00000f60: SHL 00000f61: SWAP2 00000f62: DUP7 00000f63: AND 00000f64: DUP3 00000f65: MUL 00000f66: OR 00000f67: SWAP1 00000f68: SWAP4 00000f69: SSTORE 00000f6a: PUSH1 0x40 00000f6c: DUP1 00000f6d: DUP10 00000f6e: ADD 00000f6f: MLOAD 00000f70: PUSH1 0x08 00000f72: DUP1 00000f73: SLOAD 00000f74: PUSH1 0x60 00000f76: DUP1 00000f77: DUP14 00000f78: ADD 00000f79: MLOAD 00000f7a: SWAP4 00000f7b: DUP10 00000f7c: AND 00000f7d: SWAP2 00000f7e: SWAP1 00000f7f: SWAP7 00000f80: AND 00000f81: OR 00000f82: SWAP2 00000f83: DUP8 00000f84: AND 00000f85: DUP7 00000f86: MUL 00000f87: SWAP2 00000f88: SWAP1 00000f89: SWAP2 00000f8a: OR 00000f8b: SWAP1 00000f8c: SSTORE 00000f8d: PUSH1 0x80 00000f8f: SWAP9 00000f90: DUP10 00000f91: ADD 00000f92: MLOAD 00000f93: PUSH1 0x09 00000f95: DUP1 00000f96: SLOAD 00000f97: PUSH1 0x01 00000f99: PUSH1 0x01 00000f9b: PUSH1 0x60 00000f9d: SHL 00000f9e: SUB 00000f9f: NOT 00000fa0: SWAP1 00000fa1: DUP2 00000fa2: AND 00000fa3: SWAP3 00000fa4: SWAP1 00000fa5: SWAP8 00000fa6: AND 00000fa7: SWAP2 00000fa8: SWAP1 00000fa9: SWAP2 00000faa: OR 00000fab: SWAP1 00000fac: SSTORE 00000fad: DUP8 00000fae: MLOAD 00000faf: PUSH1 0x0a 00000fb1: DUP1 00000fb2: SLOAD 00000fb3: PUSH6 0xffffffffffff 00000fba: NOT 00000fbb: AND 00000fbc: PUSH6 0xffffffffffff 00000fc3: SWAP3 00000fc4: DUP4 00000fc5: AND 00000fc6: OR 00000fc7: SWAP1 00000fc8: SSTORE 00000fc9: SWAP8 00000fca: DUP3 00000fcb: ADD 00000fcc: MLOAD 00000fcd: PUSH1 0x0b 00000fcf: SSTORE 00000fd0: DUP7 00000fd1: MLOAD 00000fd2: PUSH1 0x06 00000fd4: DUP1 00000fd5: SLOAD 00000fd6: DUP10 00000fd7: DUP6 00000fd8: ADD 00000fd9: MLOAD 00000fda: DUP11 00000fdb: DUP6 00000fdc: ADD 00000fdd: MLOAD 00000fde: DUP12 00000fdf: DUP9 00000fe0: ADD 00000fe1: MLOAD 00000fe2: SWAP12 00000fe3: SWAP1 00000fe4: SWAP14 00000fe5: ADD 00000fe6: MLOAD 00000fe7: PUSH12 0xffffffffffffffffffffffff 00000ff4: PUSH1 0x60 00000ff6: SHL 00000ff7: NOT 00000ff8: SWAP5 00000ff9: DUP14 00000ffa: AND 00000ffb: SWAP3 00000ffc: SWAP1 00000ffd: SWAP10 00000ffe: AND 00000fff: SWAP2 00001000: SWAP1 00001001: SWAP2 00001002: OR 00001003: PUSH1 0x01 00001005: PUSH1 0x30 00001007: SHL 00001008: SWAP2 00001009: DUP13 0000100a: AND 0000100b: SWAP2 0000100c: SWAP1 0000100d: SWAP2 0000100e: MUL 0000100f: OR 00001010: SWAP2 00001011: SWAP1 00001012: SWAP2 00001013: AND 00001014: SWAP10 00001015: DUP10 00001016: AND 00001017: SWAP1 00001018: SWAP5 00001019: MUL 0000101a: PUSH6 0xffffffffffff 00001021: PUSH1 0x90 00001023: SHL 00001024: NOT 00001025: AND 00001026: SWAP9 00001027: SWAP1 00001028: SWAP9 00001029: OR 0000102a: PUSH1 0x01 0000102c: PUSH1 0x90 0000102e: SHL 0000102f: SWAP7 00001030: DUP9 00001031: AND 00001032: SWAP7 00001033: SWAP1 00001034: SWAP7 00001035: MUL 00001036: SWAP6 00001037: SWAP1 00001038: SWAP6 00001039: OR 0000103a: PUSH6 0xffffffffffff 00001041: PUSH1 0xc0 00001043: SHL 00001044: NOT 00001045: AND 00001046: PUSH1 0x01 00001048: PUSH1 0xc0 0000104a: SHL 0000104b: SWAP4 0000104c: DUP8 0000104d: AND 0000104e: SWAP4 0000104f: SWAP1 00001050: SWAP4 00001051: MUL 00001052: SWAP3 00001053: SWAP1 00001054: SWAP3 00001055: OR 00001056: SWAP1 00001057: SSTORE 00001058: DUP2 00001059: MLOAD 0000105a: PUSH1 0x05 0000105c: DUP1 0000105d: SLOAD 0000105e: SWAP5 0000105f: DUP5 00001060: ADD 00001061: MLOAD 00001062: SWAP7 00001063: DUP5 00001064: ADD 00001065: MLOAD 00001066: SWAP4 00001067: SWAP1 00001068: SWAP3 00001069: ADD 0000106a: MLOAD 0000106b: PUSH1 0x01 0000106d: PUSH1 0x01 0000106f: PUSH1 0x80 00001071: SHL 00001072: SUB 00001073: SWAP1 00001074: SWAP2 00001075: AND 00001076: PUSH1 0x01 00001078: PUSH1 0x01 0000107a: PUSH1 0xb0 0000107c: SHL 0000107d: SUB 0000107e: NOT 0000107f: SWAP1 00001080: SWAP5 00001081: AND 00001082: SWAP4 00001083: SWAP1 00001084: SWAP4 00001085: OR 00001086: PUSH1 0x01 00001088: PUSH1 0x80 0000108a: SHL 0000108b: SWAP6 0000108c: DUP6 0000108d: AND 0000108e: SWAP6 0000108f: SWAP1 00001090: SWAP6 00001091: MUL 00001092: SWAP5 00001093: SWAP1 00001094: SWAP5 00001095: OR 00001096: PUSH7 0xffffffffffffff 0000109e: PUSH1 0xb0 000010a0: SHL 000010a1: NOT 000010a2: AND 000010a3: PUSH1 0x01 000010a5: PUSH1 0xb0 000010a7: SHL 000010a8: SWAP2 000010a9: SWAP1 000010aa: SWAP4 000010ab: AND 000010ac: MUL 000010ad: PUSH1 0xff 000010af: PUSH1 0xe0 000010b1: SHL 000010b2: NOT 000010b3: AND 000010b4: SWAP2 000010b5: SWAP1 000010b6: SWAP2 000010b7: OR 000010b8: PUSH1 0x01 000010ba: PUSH1 0xe0 000010bc: SHL 000010bd: SWAP2 000010be: ISZERO 000010bf: ISZERO 000010c0: SWAP2 000010c1: SWAP1 000010c2: SWAP2 000010c3: MUL 000010c4: OR 000010c5: SWAP1 000010c6: SSTORE 000010c7: POP 000010c8: PUSH2 0x10de 000010cb: SWAP7 000010cc: POP 000010cd: POP 000010ce: POP 000010cf: POP 000010d0: POP 000010d1: POP 000010d2: POP 000010d3: JUMP 000010d4: JUMPDEST 000010d5: PUSH2 0x10de 000010d8: CALLER 000010d9: CALLVALUE 000010da: PUSH2 0x226e 000010dd: JUMP 000010de: JUMPDEST 000010df: PUSH1 0x15 000010e1: DUP1 000010e2: SLOAD 000010e3: PUSH1 0xff 000010e5: NOT 000010e6: AND 000010e7: PUSH1 0x01 000010e9: OR 000010ea: SWAP1 000010eb: SSTORE 000010ec: SWAP1 000010ed: JUMP 000010ee: JUMPDEST 000010ef: PUSH0 000010f0: PUSH2 0x10f8 000010f3: PUSH0 000010f4: PUSH2 0x22c5 000010f7: JUMP 000010f8: JUMPDEST 000010f9: SWAP1 000010fa: POP 000010fb: SWAP1 000010fc: JUMP 000010fd: JUMPDEST 000010fe: CALLER 000010ff: PUSH20 0x946ef43867225695e29241813a8f41519634b36b 00001114: EQ 00001115: DUP1 00001116: ISZERO 00001117: SWAP1 00001118: PUSH2 0x1135 0000111b: JUMPI 0000111c: POP 0000111d: CALLER 0000111e: PUSH20 0xe58b33c813ac4077bd2519de90fccb189a19fa71 00001133: EQ 00001134: ISZERO 00001135: JUMPDEST 00001136: ISZERO 00001137: PUSH2 0x1153 0000113a: JUMPI 0000113b: PUSH1 0x40 0000113d: MLOAD 0000113e: PUSH4 0x6edaef2f 00001143: PUSH1 0xe1 00001145: SHL 00001146: DUP2 00001147: MSTORE 00001148: PUSH1 0x04 0000114a: ADD 0000114b: PUSH1 0x40 0000114d: MLOAD 0000114e: DUP1 0000114f: SWAP2 00001150: SUB 00001151: SWAP1 00001152: REVERT 00001153: JUMPDEST 00001154: PUSH1 0x0a 00001156: SLOAD 00001157: TIMESTAMP 00001158: PUSH6 0xffffffffffff 0000115f: SWAP1 00001160: SWAP2 00001161: AND 00001162: GT 00001163: ISZERO 00001164: PUSH2 0x1180 00001167: JUMPI 00001168: PUSH1 0x40 0000116a: MLOAD 0000116b: PUSH4 0x01f25959 00001170: PUSH1 0xe0 00001172: SHL 00001173: DUP2 00001174: MSTORE 00001175: PUSH1 0x04 00001177: ADD 00001178: PUSH1 0x40 0000117a: MLOAD 0000117b: DUP1 0000117c: SWAP2 0000117d: SUB 0000117e: SWAP1 0000117f: REVERT 00001180: JUMPDEST 00001181: ADDRESS 00001182: PUSH0 00001183: SWAP1 00001184: DUP2 00001185: MSTORE 00001186: PUSH1 0x20 00001188: DUP2 00001189: SWAP1 0000118a: MSTORE 0000118b: PUSH1 0x40 0000118d: SWAP1 0000118e: KECCAK256 0000118f: SLOAD 00001190: DUP1 00001191: ISZERO 00001192: PUSH2 0x11d4 00001195: JUMPI 00001196: ADDRESS 00001197: PUSH0 00001198: DUP2 00001199: DUP2 0000119a: MSTORE 0000119b: PUSH1 0x20 0000119d: DUP2 0000119e: DUP2 0000119f: MSTORE 000011a0: PUSH1 0x40 000011a2: DUP1 000011a3: DUP4 000011a4: KECCAK256 000011a5: DUP1 000011a6: SLOAD 000011a7: DUP7 000011a8: SWAP1 000011a9: SUB 000011aa: SWAP1 000011ab: SSTORE 000011ac: PUSH1 0x04 000011ae: DUP1 000011af: SLOAD 000011b0: DUP7 000011b1: SWAP1 000011b2: SUB 000011b3: SWAP1 000011b4: SSTORE 000011b5: MLOAD 000011b6: DUP5 000011b7: DUP2 000011b8: MSTORE 000011b9: SWAP2 000011ba: SWAP3 000011bb: SWAP2 000011bc: PUSH0 000011bd: DUP1 000011be: MLOAD 000011bf: PUSH1 0x20 000011c1: PUSH2 0x2fa7 000011c4: DUP4 000011c5: CODECOPY 000011c6: DUP2 000011c7: MLOAD 000011c8: SWAP2 000011c9: MSTORE 000011ca: SWAP2 000011cb: ADD 000011cc: PUSH1 0x40 000011ce: MLOAD 000011cf: DUP1 000011d0: SWAP2 000011d1: SUB 000011d2: SWAP1 000011d3: LOG3 000011d4: JUMPDEST 000011d5: PUSH0 000011d6: PUSH2 0x11df 000011d9: DUP4 000011da: DUP6 000011db: PUSH2 0x2e80 000011de: JUMP 000011df: JUMPDEST 000011e0: SWAP1 000011e1: POP 000011e2: PUSH2 0x11ec 000011e5: CALLER 000011e6: ADDRESS 000011e7: DUP4 000011e8: PUSH2 0x0722 000011eb: JUMP 000011ec: JUMPDEST 000011ed: POP 000011ee: PUSH1 0x13 000011f0: DUP5 000011f1: SWAP1 000011f2: SSTORE 000011f3: PUSH1 0x14 000011f5: DUP4 000011f6: SWAP1 000011f7: SSTORE 000011f8: PUSH2 0x11ff 000011fb: PUSH2 0x23df 000011fe: JUMP 000011ff: JUMPDEST 00001200: PUSH2 0x1207 00001203: PUSH2 0x2620 00001206: JUMP 00001207: JUMPDEST 00001208: POP 00001209: POP 0000120a: POP 0000120b: POP 0000120c: JUMP 0000120d: JUMPDEST 0000120e: PUSH0 0000120f: PUSH1 0x01 00001211: PUSH1 0x01 00001213: PUSH1 0xa0 00001215: SHL 00001216: SUB 00001217: DUP4 00001218: AND 00001219: ISZERO 0000121a: DUP1 0000121b: PUSH2 0x1222 0000121e: JUMPI 0000121f: POP 00001220: DUP2 00001221: ISZERO 00001222: JUMPDEST 00001223: ISZERO 00001224: PUSH2 0x1240 00001227: JUMPI 00001228: PUSH1 0x40 0000122a: MLOAD 0000122b: PUSH4 0x2f352531 00001230: PUSH1 0xe0 00001232: SHL 00001233: DUP2 00001234: MSTORE 00001235: PUSH1 0x04 00001237: ADD 00001238: PUSH1 0x40 0000123a: MLOAD 0000123b: DUP1 0000123c: SWAP2 0000123d: SUB 0000123e: SWAP1 0000123f: REVERT 00001240: JUMPDEST 00001241: PUSH2 0x124b 00001244: CALLER 00001245: DUP5 00001246: DUP5 00001247: PUSH2 0x1c2d 0000124a: JUMP 0000124b: JUMPDEST 0000124c: POP 0000124d: PUSH1 0x01 0000124f: SWAP3 00001250: SWAP2 00001251: POP 00001252: POP 00001253: JUMP 00001254: JUMPDEST 00001255: PUSH1 0x04 00001257: SLOAD 00001258: PUSH0 00001259: SWAP1 0000125a: PUSH2 0x126b 0000125d: SELFBALANCE 0000125e: PUSH8 0x0de0b6b3a7640000 00001267: PUSH2 0x2dfb 0000126a: JUMP 0000126b: JUMPDEST 0000126c: PUSH2 0x10f8 0000126f: SWAP2 00001270: SWAP1 00001271: PUSH2 0x2e26 00001274: JUMP 00001275: JUMPDEST 00001276: PUSH0 00001277: PUSH2 0x10f8 0000127a: PUSH1 0x01 0000127c: PUSH2 0x22c5 0000127f: JUMP 00001280: JUMPDEST 00001281: CALLER 00001282: PUSH20 0x946ef43867225695e29241813a8f41519634b36b 00001297: EQ 00001298: PUSH2 0x12b4 0000129b: JUMPI 0000129c: PUSH1 0x40 0000129e: MLOAD 0000129f: PUSH4 0x5fc483c5 000012a4: PUSH1 0xe0 000012a6: SHL 000012a7: DUP2 000012a8: MSTORE 000012a9: PUSH1 0x04 000012ab: ADD 000012ac: PUSH1 0x40 000012ae: MLOAD 000012af: DUP1 000012b0: SWAP2 000012b1: SUB 000012b2: SWAP1 000012b3: REVERT 000012b4: JUMPDEST 000012b5: PUSH1 0x01 000012b7: PUSH1 0x01 000012b9: PUSH1 0xa0 000012bb: SHL 000012bc: SUB 000012bd: DUP2 000012be: AND 000012bf: PUSH0 000012c0: DUP2 000012c1: DUP2 000012c2: MSTORE 000012c3: PUSH1 0x03 000012c5: PUSH1 0x20 000012c7: SWAP1 000012c8: DUP2 000012c9: MSTORE 000012ca: PUSH1 0x40 000012cc: SWAP2 000012cd: DUP3 000012ce: SWAP1 000012cf: KECCAK256 000012d0: DUP1 000012d1: SLOAD 000012d2: PUSH1 0xff 000012d4: NOT 000012d5: AND 000012d6: PUSH1 0x01 000012d8: OR 000012d9: SWAP1 000012da: SSTORE 000012db: SWAP1 000012dc: MLOAD 000012dd: SWAP2 000012de: DUP3 000012df: MSTORE 000012e0: PUSH32 0x10cdbb821aa416c854add806e1d7e8138afe2a538921cebe99b1351362ae38b2 00001301: SWAP2 00001302: ADD 00001303: PUSH1 0x40 00001305: MLOAD 00001306: DUP1 00001307: SWAP2 00001308: SUB 00001309: SWAP1 0000130a: LOG1 0000130b: POP 0000130c: JUMP 0000130d: JUMPDEST 0000130e: PUSH0 0000130f: DUP1 00001310: PUSH2 0x1324 00001313: SELFBALANCE 00001314: PUSH8 0x0de0b6b3a7640000 0000131d: PUSH1 0x04 0000131f: SLOAD 00001320: PUSH2 0x286a 00001323: JUMP 00001324: JUMPDEST 00001325: SWAP1 00001326: POP 00001327: PUSH2 0x1339 0000132a: DUP2 0000132b: DUP5 0000132c: PUSH8 0x0de0b6b3a7640000 00001335: PUSH2 0x286a 00001338: JUMP 00001339: JUMPDEST 0000133a: SWAP2 0000133b: POP 0000133c: PUSH2 0x1345 0000133f: CALLER 00001340: DUP5 00001341: PUSH2 0x1e0e 00001344: JUMP 00001345: JUMPDEST 00001346: PUSH2 0x134f 00001349: CALLER 0000134a: DUP4 0000134b: PUSH2 0x226e 0000134e: JUMP 0000134f: JUMPDEST 00001350: PUSH1 0x40 00001352: DUP1 00001353: MLOAD 00001354: DUP5 00001355: DUP2 00001356: MSTORE 00001357: PUSH1 0x20 00001359: DUP2 0000135a: ADD 0000135b: DUP5 0000135c: SWAP1 0000135d: MSTORE 0000135e: SWAP1 0000135f: DUP2 00001360: ADD 00001361: DUP3 00001362: SWAP1 00001363: MSTORE 00001364: CALLER 00001365: SWAP1 00001366: PUSH32 0xbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646 00001387: SWAP1 00001388: PUSH1 0x60 0000138a: ADD 0000138b: PUSH1 0x40 0000138d: MLOAD 0000138e: DUP1 0000138f: SWAP2 00001390: SUB 00001391: SWAP1 00001392: LOG2 00001393: POP 00001394: SWAP2 00001395: SWAP1 00001396: POP 00001397: JUMP 00001398: JUMPDEST 00001399: PUSH1 0x15 0000139b: SLOAD 0000139c: PUSH0 0000139d: SWAP1 0000139e: PUSH1 0xff 000013a0: AND 000013a1: PUSH1 0x02 000013a3: SUB 000013a4: PUSH2 0x13c0 000013a7: JUMPI 000013a8: PUSH1 0x40 000013aa: MLOAD 000013ab: PUSH4 0x558a1e03 000013b0: PUSH1 0xe1 000013b2: SHL 000013b3: DUP2 000013b4: MSTORE 000013b5: PUSH1 0x04 000013b7: ADD 000013b8: PUSH1 0x40 000013ba: MLOAD 000013bb: DUP1 000013bc: SWAP2 000013bd: SUB 000013be: SWAP1 000013bf: REVERT 000013c0: JUMPDEST 000013c1: PUSH1 0x15 000013c3: DUP1 000013c4: SLOAD 000013c5: PUSH1 0xff 000013c7: NOT 000013c8: AND 000013c9: PUSH1 0x02 000013cb: OR 000013cc: SWAP1 000013cd: SSTORE 000013ce: PUSH1 0x11 000013d0: SLOAD 000013d1: PUSH6 0xffffffffffff 000013d8: AND 000013d9: TIMESTAMP 000013da: GT 000013db: ISZERO 000013dc: PUSH2 0x13f7 000013df: JUMPI 000013e0: PUSH1 0x40 000013e2: MLOAD 000013e3: PUSH3 0xb5f6bf 000013e7: PUSH1 0xe4 000013e9: SHL 000013ea: DUP2 000013eb: MSTORE 000013ec: PUSH1 0x04 000013ee: ADD 000013ef: PUSH1 0x40 000013f1: MLOAD 000013f2: DUP1 000013f3: SWAP2 000013f4: SUB 000013f5: SWAP1 000013f6: REVERT 000013f7: JUMPDEST 000013f8: PUSH1 0x0e 000013fa: SLOAD 000013fb: PUSH1 0x01 000013fd: PUSH1 0x01 000013ff: PUSH1 0x60 00001401: SHL 00001402: SUB 00001403: AND 00001404: ISZERO 00001405: PUSH2 0x1b7a 00001408: JUMPI 00001409: PUSH1 0x40 0000140b: MLOAD 0000140c: PUSH4 0x23b872dd 00001411: PUSH1 0xe0 00001413: SHL 00001414: DUP2 00001415: MSTORE 00001416: CALLER 00001417: PUSH1 0x04 00001419: DUP3 0000141a: ADD 0000141b: MSTORE 0000141c: PUSH20 0xe58b33c813ac4077bd2519de90fccb189a19fa71 00001431: PUSH1 0x24 00001433: DUP3 00001434: ADD 00001435: MSTORE 00001436: PUSH1 0x44 00001438: DUP2 00001439: ADD 0000143a: DUP4 0000143b: SWAP1 0000143c: MSTORE 0000143d: PUSH32 0x00000000000000000000000047287d8d7c1a5854aa11868e7d2186b138069f84 0000145e: PUSH1 0x01 00001460: PUSH1 0x01 00001462: PUSH1 0xa0 00001464: SHL 00001465: SUB 00001466: AND 00001467: SWAP1 00001468: PUSH4 0x23b872dd 0000146d: SWAP1 0000146e: PUSH1 0x64 00001470: ADD 00001471: PUSH1 0x20 00001473: PUSH1 0x40 00001475: MLOAD 00001476: DUP1 00001477: DUP4 00001478: SUB 00001479: DUP2 0000147a: PUSH0 0000147b: DUP8 0000147c: GAS 0000147d: CALL 0000147e: ISZERO 0000147f: DUP1 00001480: ISZERO 00001481: PUSH2 0x148c 00001484: JUMPI 00001485: RETURNDATASIZE 00001486: PUSH0 00001487: DUP1 00001488: RETURNDATACOPY 00001489: RETURNDATASIZE 0000148a: PUSH0 0000148b: REVERT 0000148c: JUMPDEST 0000148d: POP 0000148e: POP 0000148f: POP 00001490: POP 00001491: PUSH1 0x40 00001493: MLOAD 00001494: RETURNDATASIZE 00001495: PUSH1 0x1f 00001497: NOT 00001498: PUSH1 0x1f 0000149a: DUP3 0000149b: ADD 0000149c: AND 0000149d: DUP3 0000149e: ADD 0000149f: DUP1 000014a0: PUSH1 0x40 000014a2: MSTORE 000014a3: POP 000014a4: DUP2 000014a5: ADD 000014a6: SWAP1 000014a7: PUSH2 0x14b0 000014aa: SWAP2 000014ab: SWAP1 000014ac: PUSH2 0x2e93 000014af: JUMP 000014b0: JUMPDEST 000014b1: POP 000014b2: PUSH0 000014b3: PUSH1 0x0e 000014b5: PUSH1 0x40 000014b7: MLOAD 000014b8: DUP1 000014b9: PUSH1 0xa0 000014bb: ADD 000014bc: PUSH1 0x40 000014be: MSTORE 000014bf: SWAP1 000014c0: DUP2 000014c1: PUSH0 000014c2: DUP3 000014c3: ADD 000014c4: PUSH0 000014c5: SWAP1 000014c6: SLOAD 000014c7: SWAP1 000014c8: PUSH2 0x0100 000014cb: EXP 000014cc: SWAP1 000014cd: DIV 000014ce: PUSH1 0x01 000014d0: PUSH1 0x01 000014d2: PUSH1 0x60 000014d4: SHL 000014d5: SUB 000014d6: AND 000014d7: PUSH1 0x01 000014d9: PUSH1 0x01 000014db: PUSH1 0x60 000014dd: SHL 000014de: SUB 000014df: AND 000014e0: PUSH1 0x01 000014e2: PUSH1 0x01 000014e4: PUSH1 0x60 000014e6: SHL 000014e7: SUB 000014e8: AND 000014e9: DUP2 000014ea: MSTORE 000014eb: PUSH1 0x20 000014ed: ADD 000014ee: PUSH0 000014ef: DUP3 000014f0: ADD 000014f1: PUSH1 0x0c 000014f3: SWAP1 000014f4: SLOAD 000014f5: SWAP1 000014f6: PUSH2 0x0100 000014f9: EXP 000014fa: SWAP1 000014fb: DIV 000014fc: PUSH1 0x01 000014fe: PUSH1 0x01 00001500: PUSH1 0x60 00001502: SHL 00001503: SUB 00001504: AND 00001505: PUSH1 0x01 00001507: PUSH1 0x01 00001509: PUSH1 0x60 0000150b: SHL 0000150c: SUB 0000150d: AND 0000150e: PUSH1 0x01 00001510: PUSH1 0x01 00001512: PUSH1 0x60 00001514: SHL 00001515: SUB 00001516: AND 00001517: DUP2 00001518: MSTORE 00001519: PUSH1 0x20 0000151b: ADD 0000151c: PUSH1 0x01 0000151e: DUP3 0000151f: ADD 00001520: PUSH0 00001521: SWAP1 00001522: SLOAD 00001523: SWAP1 00001524: PUSH2 0x0100 00001527: EXP 00001528: SWAP1 00001529: DIV 0000152a: PUSH1 0x01 0000152c: PUSH1 0x01 0000152e: PUSH1 0x60 00001530: SHL 00001531: SUB 00001532: AND 00001533: PUSH1 0x01 00001535: PUSH1 0x01 00001537: PUSH1 0x60 00001539: SHL 0000153a: SUB 0000153b: AND 0000153c: PUSH1 0x01 0000153e: PUSH1 0x01 00001540: PUSH1 0x60 00001542: SHL 00001543: SUB 00001544: AND 00001545: DUP2 00001546: MSTORE 00001547: PUSH1 0x20 00001549: ADD 0000154a: PUSH1 0x01 0000154c: DUP3 0000154d: ADD 0000154e: PUSH1 0x0c 00001550: SWAP1 00001551: SLOAD 00001552: SWAP1 00001553: PUSH2 0x0100 00001556: EXP 00001557: SWAP1 00001558: DIV 00001559: PUSH1 0x01 0000155b: PUSH1 0x01 0000155d: PUSH1 0x60 0000155f: SHL 00001560: SUB 00001561: AND 00001562: PUSH1 0x01 00001564: PUSH1 0x01 00001566: PUSH1 0x60 00001568: SHL 00001569: SUB 0000156a: AND 0000156b: PUSH1 0x01 0000156d: PUSH1 0x01 0000156f: PUSH1 0x60 00001571: SHL 00001572: SUB 00001573: AND 00001574: DUP2 00001575: MSTORE 00001576: PUSH1 0x20 00001578: ADD 00001579: PUSH1 0x02 0000157b: DUP3 0000157c: ADD 0000157d: PUSH0 0000157e: SWAP1 0000157f: SLOAD 00001580: SWAP1 00001581: PUSH2 0x0100 00001584: EXP 00001585: SWAP1 00001586: DIV 00001587: PUSH1 0x01 00001589: PUSH1 0x01 0000158b: PUSH1 0x60 0000158d: SHL 0000158e: SUB 0000158f: AND 00001590: PUSH1 0x01 00001592: PUSH1 0x01 00001594: PUSH1 0x60 00001596: SHL 00001597: SUB 00001598: AND 00001599: PUSH1 0x01 0000159b: PUSH1 0x01 0000159d: PUSH1 0x60 0000159f: SHL 000015a0: SUB 000015a1: AND 000015a2: DUP2 000015a3: MSTORE 000015a4: POP 000015a5: POP 000015a6: SWAP1 000015a7: POP 000015a8: PUSH0 000015a9: PUSH1 0x11 000015ab: PUSH1 0x40 000015ad: MLOAD 000015ae: DUP1 000015af: PUSH1 0x40 000015b1: ADD 000015b2: PUSH1 0x40 000015b4: MSTORE 000015b5: SWAP1 000015b6: DUP2 000015b7: PUSH0 000015b8: DUP3 000015b9: ADD 000015ba: PUSH0 000015bb: SWAP1 000015bc: SLOAD 000015bd: SWAP1 000015be: PUSH2 0x0100 000015c1: EXP 000015c2: SWAP1 000015c3: DIV 000015c4: PUSH6 0xffffffffffff 000015cb: AND 000015cc: PUSH6 0xffffffffffff 000015d3: AND 000015d4: PUSH6 0xffffffffffff 000015db: AND 000015dc: DUP2 000015dd: MSTORE 000015de: PUSH1 0x20 000015e0: ADD 000015e1: PUSH1 0x01 000015e3: DUP3 000015e4: ADD 000015e5: SLOAD 000015e6: DUP2 000015e7: MSTORE 000015e8: POP 000015e9: POP 000015ea: SWAP1 000015eb: POP 000015ec: PUSH0 000015ed: PUSH1 0x0d 000015ef: PUSH1 0x40 000015f1: MLOAD 000015f2: DUP1 000015f3: PUSH1 0xa0 000015f5: ADD 000015f6: PUSH1 0x40 000015f8: MSTORE 000015f9: SWAP1 000015fa: DUP2 000015fb: PUSH0 000015fc: DUP3 000015fd: ADD 000015fe: PUSH0 000015ff: SWAP1 00001600: SLOAD 00001601: SWAP1 00001602: PUSH2 0x0100 00001605: EXP 00001606: SWAP1 00001607: DIV 00001608: PUSH6 0xffffffffffff 0000160f: AND 00001610: PUSH6 0xffffffffffff 00001617: AND 00001618: PUSH6 0xffffffffffff 0000161f: AND 00001620: DUP2 00001621: MSTORE 00001622: PUSH1 0x20 00001624: ADD 00001625: PUSH0 00001626: DUP3 00001627: ADD 00001628: PUSH1 0x06 0000162a: SWAP1 0000162b: SLOAD 0000162c: SWAP1 0000162d: PUSH2 0x0100 00001630: EXP 00001631: SWAP1 00001632: DIV 00001633: PUSH6 0xffffffffffff 0000163a: AND 0000163b: PUSH6 0xffffffffffff 00001642: AND 00001643: PUSH6 0xffffffffffff 0000164a: AND 0000164b: DUP2 0000164c: MSTORE 0000164d: PUSH1 0x20 0000164f: ADD 00001650: PUSH0 00001651: DUP3 00001652: ADD 00001653: PUSH1 0x0c 00001655: SWAP1 00001656: SLOAD 00001657: SWAP1 00001658: PUSH2 0x0100 0000165b: EXP 0000165c: SWAP1 0000165d: DIV 0000165e: PUSH6 0xffffffffffff 00001665: AND 00001666: PUSH6 0xffffffffffff 0000166d: AND 0000166e: PUSH6 0xffffffffffff 00001675: AND 00001676: DUP2 00001677: MSTORE 00001678: PUSH1 0x20 0000167a: ADD 0000167b: PUSH0 0000167c: DUP3 0000167d: ADD 0000167e: PUSH1 0x12 00001680: SWAP1 00001681: SLOAD 00001682: SWAP1 00001683: PUSH2 0x0100 00001686: EXP 00001687: SWAP1 00001688: DIV 00001689: PUSH6 0xffffffffffff 00001690: AND 00001691: PUSH6 0xffffffffffff 00001698: AND 00001699: PUSH6 0xffffffffffff 000016a0: AND 000016a1: DUP2 000016a2: MSTORE 000016a3: PUSH1 0x20 000016a5: ADD 000016a6: PUSH0 000016a7: DUP3 000016a8: ADD 000016a9: PUSH1 0x18 000016ab: SWAP1 000016ac: SLOAD 000016ad: SWAP1 000016ae: PUSH2 0x0100 000016b1: EXP 000016b2: SWAP1 000016b3: DIV 000016b4: PUSH6 0xffffffffffff 000016bb: AND 000016bc: PUSH6 0xffffffffffff 000016c3: AND 000016c4: PUSH6 0xffffffffffff 000016cb: AND 000016cc: DUP2 000016cd: MSTORE 000016ce: POP 000016cf: POP 000016d0: SWAP1 000016d1: POP 000016d2: PUSH0 000016d3: PUSH1 0x0c 000016d5: PUSH1 0x40 000016d7: MLOAD 000016d8: DUP1 000016d9: PUSH1 0x80 000016db: ADD 000016dc: PUSH1 0x40 000016de: MSTORE 000016df: SWAP1 000016e0: DUP2 000016e1: PUSH0 000016e2: DUP3 000016e3: ADD 000016e4: PUSH0 000016e5: SWAP1 000016e6: SLOAD 000016e7: SWAP1 000016e8: PUSH2 0x0100 000016eb: EXP 000016ec: SWAP1 000016ed: DIV 000016ee: PUSH1 0x01 000016f0: PUSH1 0x01 000016f2: PUSH1 0x80 000016f4: SHL 000016f5: SUB 000016f6: AND 000016f7: PUSH1 0x01 000016f9: PUSH1 0x01 000016fb: PUSH1 0x80 000016fd: SHL 000016fe: SUB 000016ff: AND 00001700: PUSH1 0x01 00001702: PUSH1 0x01 00001704: PUSH1 0x80 00001706: SHL 00001707: SUB 00001708: AND 00001709: DUP2 0000170a: MSTORE 0000170b: PUSH1 0x20 0000170d: ADD 0000170e: PUSH0 0000170f: DUP3 00001710: ADD 00001711: PUSH1 0x10 00001713: SWAP1 00001714: SLOAD 00001715: SWAP1 00001716: PUSH2 0x0100 00001719: EXP 0000171a: SWAP1 0000171b: DIV 0000171c: PUSH6 0xffffffffffff 00001723: AND 00001724: PUSH6 0xffffffffffff 0000172b: AND 0000172c: PUSH6 0xffffffffffff 00001733: AND 00001734: DUP2 00001735: MSTORE 00001736: PUSH1 0x20 00001738: ADD 00001739: PUSH0 0000173a: DUP3 0000173b: ADD 0000173c: PUSH1 0x16 0000173e: SWAP1 0000173f: SLOAD 00001740: SWAP1 00001741: PUSH2 0x0100 00001744: EXP 00001745: SWAP1 00001746: DIV 00001747: PUSH6 0xffffffffffff 0000174e: AND 0000174f: PUSH6 0xffffffffffff 00001756: AND 00001757: PUSH6 0xffffffffffff 0000175e: AND 0000175f: DUP2 00001760: MSTORE 00001761: PUSH1 0x20 00001763: ADD 00001764: PUSH0 00001765: DUP3 00001766: ADD 00001767: PUSH1 0x1c 00001769: SWAP1 0000176a: SLOAD 0000176b: SWAP1 0000176c: PUSH2 0x0100 0000176f: EXP 00001770: SWAP1 00001771: DIV 00001772: PUSH1 0xff 00001774: AND 00001775: ISZERO 00001776: ISZERO 00001777: ISZERO 00001778: ISZERO 00001779: DUP2 0000177a: MSTORE 0000177b: POP 0000177c: POP 0000177d: SWAP1 0000177e: POP 0000177f: PUSH0 00001780: PUSH1 0x04 00001782: SLOAD 00001783: SWAP1 00001784: POP 00001785: PUSH0 00001786: TIMESTAMP 00001787: SWAP1 00001788: POP 00001789: PUSH2 0x1876 0000178c: PUSH1 0x0d 0000178e: PUSH1 0x40 00001790: MLOAD 00001791: DUP1 00001792: PUSH1 0xa0 00001794: ADD 00001795: PUSH1 0x40 00001797: MSTORE 00001798: SWAP1 00001799: DUP2 0000179a: PUSH0 0000179b: DUP3 0000179c: ADD 0000179d: PUSH0 0000179e: SWAP1 0000179f: SLOAD 000017a0: SWAP1 000017a1: PUSH2 0x0100 000017a4: EXP 000017a5: SWAP1 000017a6: DIV 000017a7: PUSH6 0xffffffffffff 000017ae: AND 000017af: PUSH6 0xffffffffffff 000017b6: AND 000017b7: PUSH6 0xffffffffffff 000017be: AND 000017bf: DUP2 000017c0: MSTORE 000017c1: PUSH1 0x20 000017c3: ADD 000017c4: PUSH0 000017c5: DUP3 000017c6: ADD 000017c7: PUSH1 0x06 000017c9: SWAP1 000017ca: SLOAD 000017cb: SWAP1 000017cc: PUSH2 0x0100 000017cf: EXP 000017d0: SWAP1 000017d1: DIV 000017d2: PUSH6 0xffffffffffff 000017d9: AND 000017da: PUSH6 0xffffffffffff 000017e1: AND 000017e2: PUSH6 0xffffffffffff 000017e9: AND 000017ea: DUP2 000017eb: MSTORE 000017ec: PUSH1 0x20 000017ee: ADD 000017ef: PUSH0 000017f0: DUP3 000017f1: ADD 000017f2: PUSH1 0x0c 000017f4: SWAP1 000017f5: SLOAD 000017f6: SWAP1 000017f7: PUSH2 0x0100 000017fa: EXP 000017fb: SWAP1 000017fc: DIV 000017fd: PUSH6 0xffffffffffff 00001804: AND 00001805: PUSH6 0xffffffffffff 0000180c: AND 0000180d: PUSH6 0xffffffffffff 00001814: AND 00001815: DUP2 00001816: MSTORE 00001817: PUSH1 0x20 00001819: ADD 0000181a: PUSH0 0000181b: DUP3 0000181c: ADD 0000181d: PUSH1 0x12 0000181f: SWAP1 00001820: SLOAD 00001821: SWAP1 00001822: PUSH2 0x0100 00001825: EXP 00001826: SWAP1 00001827: DIV 00001828: PUSH6 0xffffffffffff 0000182f: AND 00001830: PUSH6 0xffffffffffff 00001837: AND 00001838: PUSH6 0xffffffffffff 0000183f: AND 00001840: DUP2 00001841: MSTORE 00001842: PUSH1 0x20 00001844: ADD 00001845: PUSH0 00001846: DUP3 00001847: ADD 00001848: PUSH1 0x18 0000184a: SWAP1 0000184b: SLOAD 0000184c: SWAP1 0000184d: PUSH2 0x0100 00001850: EXP 00001851: SWAP1 00001852: DIV 00001853: PUSH6 0xffffffffffff 0000185a: AND 0000185b: PUSH6 0xffffffffffff 00001862: AND 00001863: PUSH6 0xffffffffffff 0000186a: AND 0000186b: DUP2 0000186c: MSTORE 0000186d: POP 0000186e: POP 0000186f: DUP8 00001870: DUP8 00001871: DUP7 00001872: PUSH2 0x1e91 00001875: JUMP 00001876: JUMPDEST 00001877: DUP1 00001878: SWAP7 00001879: POP 0000187a: DUP2 0000187b: SWAP9 0000187c: POP 0000187d: DUP3 0000187e: SWAP8 0000187f: POP 00001880: DUP4 00001881: SWAP10 00001882: POP 00001883: POP 00001884: POP 00001885: POP 00001886: POP 00001887: PUSH0 00001888: PUSH2 0x18a3 0000188b: DUP7 0000188c: PUSH1 0x20 0000188e: ADD 0000188f: MLOAD 00001890: DUP9 00001891: PUSH1 0x20 00001893: ADD 00001894: MLOAD 00001895: PUSH1 0x01 00001897: PUSH1 0x01 00001899: PUSH1 0x60 0000189b: SHL 0000189c: SUB 0000189d: AND 0000189e: DUP6 0000189f: PUSH2 0x1fb7 000018a2: JUMP 000018a3: JUMPDEST 000018a4: SWAP1 000018a5: POP 000018a6: DUP1 000018a7: PUSH2 0x18b8 000018aa: DUP11 000018ab: PUSH8 0x0de0b6b3a7640000 000018b4: PUSH2 0x2dfb 000018b7: JUMP 000018b8: JUMPDEST 000018b9: PUSH2 0x18c2 000018bc: SWAP2 000018bd: SWAP1 000018be: PUSH2 0x2e26 000018c1: JUMP 000018c2: JUMPDEST 000018c3: PUSH1 0x0f 000018c5: SLOAD 000018c6: SWAP1 000018c7: SWAP9 000018c8: POP 000018c9: PUSH1 0x01 000018cb: PUSH1 0x01 000018cd: PUSH1 0x60 000018cf: SHL 000018d0: SUB 000018d1: AND 000018d2: DUP9 000018d3: GT 000018d4: ISZERO 000018d5: PUSH2 0x18f1 000018d8: JUMPI 000018d9: PUSH1 0x40 000018db: MLOAD 000018dc: PUSH4 0x05c250cf 000018e1: PUSH1 0xe1 000018e3: SHL 000018e4: DUP2 000018e5: MSTORE 000018e6: PUSH1 0x04 000018e8: ADD 000018e9: PUSH1 0x40 000018eb: MLOAD 000018ec: DUP1 000018ed: SWAP2 000018ee: SUB 000018ef: SWAP1 000018f0: REVERT 000018f1: JUMPDEST 000018f2: DUP8 000018f3: DUP8 000018f4: PUSH0 000018f5: ADD 000018f6: DUP2 000018f7: DUP2 000018f8: MLOAD 000018f9: PUSH2 0x1902 000018fc: SWAP2 000018fd: SWAP1 000018fe: PUSH2 0x2e39 00001901: JUMP 00001902: JUMPDEST 00001903: PUSH1 0x01 00001905: PUSH1 0x01 00001907: PUSH1 0x60 00001909: SHL 0000190a: SUB 0000190b: AND 0000190c: SWAP1 0000190d: MSTORE 0000190e: POP 0000190f: PUSH1 0x80 00001911: DUP8 00001912: ADD 00001913: DUP1 00001914: MLOAD 00001915: DUP11 00001916: SWAP2 00001917: SWAP1 00001918: PUSH2 0x1922 0000191b: SWAP1 0000191c: DUP4 0000191d: SWAP1 0000191e: PUSH2 0x2e60 00001921: JUMP 00001922: JUMPDEST 00001923: PUSH1 0x01 00001925: PUSH1 0x01 00001927: PUSH1 0x60 00001929: SHL 0000192a: SUB 0000192b: AND 0000192c: SWAP1 0000192d: MSTORE 0000192e: POP 0000192f: PUSH1 0x60 00001931: DUP8 00001932: ADD 00001933: DUP1 00001934: MLOAD 00001935: DUP10 00001936: SWAP2 00001937: SWAP1 00001938: PUSH2 0x1942 0000193b: SWAP1 0000193c: DUP4 0000193d: SWAP1 0000193e: PUSH2 0x2e60 00001941: JUMP 00001942: JUMPDEST 00001943: PUSH1 0x01 00001945: PUSH1 0x01 00001947: PUSH1 0x60 00001949: SHL 0000194a: SUB 0000194b: AND 0000194c: SWAP1 0000194d: MSTORE 0000194e: POP 0000194f: PUSH1 0x20 00001951: DUP8 00001952: ADD 00001953: DUP1 00001954: MLOAD 00001955: DUP10 00001956: SWAP2 00001957: SWAP1 00001958: PUSH2 0x1962 0000195b: SWAP1 0000195c: DUP4 0000195d: SWAP1 0000195e: PUSH2 0x2e60 00001961: JUMP 00001962: JUMPDEST 00001963: PUSH1 0x01 00001965: PUSH1 0x01 00001967: PUSH1 0x60 00001969: SHL 0000196a: SUB 0000196b: AND 0000196c: SWAP1 0000196d: MSTORE 0000196e: POP 0000196f: PUSH0 00001970: PUSH2 0x1979 00001973: CALLER 00001974: DUP11 00001975: PUSH2 0x1fe7 00001978: JUMP 00001979: JUMPDEST 0000197a: SWAP1 0000197b: POP 0000197c: DUP1 0000197d: PUSH2 0x1999 00001980: JUMPI 00001981: PUSH1 0x40 00001983: MLOAD 00001984: PUSH4 0xdde1446d 00001989: PUSH1 0xe0 0000198b: SHL 0000198c: DUP2 0000198d: MSTORE 0000198e: PUSH1 0x04 00001990: ADD 00001991: PUSH1 0x40 00001993: MLOAD 00001994: DUP1 00001995: SWAP2 00001996: SUB 00001997: SWAP1 00001998: REVERT 00001999: JUMPDEST 0000199a: PUSH1 0x40 0000199c: DUP1 0000199d: MLOAD 0000199e: DUP11 0000199f: DUP2 000019a0: MSTORE 000019a1: PUSH1 0x20 000019a3: DUP2 000019a4: ADD 000019a5: DUP5 000019a6: SWAP1 000019a7: MSTORE 000019a8: CALLER 000019a9: SWAP2 000019aa: PUSH32 0x3ae9ad26d7d47616d306d7757b947fe7b0f9a7c61a5f0dc784b0ddb6c7c40b5a 000019cb: SWAP2 000019cc: ADD 000019cd: PUSH1 0x40 000019cf: MLOAD 000019d0: DUP1 000019d1: SWAP2 000019d2: SUB 000019d3: SWAP1 000019d4: LOG2 000019d5: PUSH2 0x19e2 000019d8: DUP4 000019d9: DUP10 000019da: DUP10 000019db: DUP10 000019dc: DUP10 000019dd: DUP10 000019de: PUSH2 0x206b 000019e1: JUMP 000019e2: JUMPDEST 000019e3: DUP4 000019e4: MLOAD 000019e5: PUSH1 0x0e 000019e7: DUP1 000019e8: SLOAD 000019e9: PUSH1 0x20 000019eb: DUP1 000019ec: DUP9 000019ed: ADD 000019ee: MLOAD 000019ef: PUSH1 0x01 000019f1: PUSH1 0x01 000019f3: PUSH1 0x60 000019f5: SHL 000019f6: SUB 000019f7: SWAP5 000019f8: DUP6 000019f9: AND 000019fa: PUSH1 0x01 000019fc: PUSH1 0x01 000019fe: PUSH1 0xc0 00001a00: SHL 00001a01: SUB 00001a02: NOT 00001a03: SWAP4 00001a04: DUP5 00001a05: AND 00001a06: OR 00001a07: PUSH1 0x01 00001a09: PUSH1 0x60 00001a0b: SHL 00001a0c: SWAP2 00001a0d: DUP7 00001a0e: AND 00001a0f: DUP3 00001a10: MUL 00001a11: OR 00001a12: SWAP1 00001a13: SWAP4 00001a14: SSTORE 00001a15: PUSH1 0x40 00001a17: DUP1 00001a18: DUP10 00001a19: ADD 00001a1a: MLOAD 00001a1b: PUSH1 0x0f 00001a1d: DUP1 00001a1e: SLOAD 00001a1f: PUSH1 0x60 00001a21: DUP1 00001a22: DUP14 00001a23: ADD 00001a24: MLOAD 00001a25: SWAP4 00001a26: DUP10 00001a27: AND 00001a28: SWAP2 00001a29: SWAP1 00001a2a: SWAP7 00001a2b: AND 00001a2c: OR 00001a2d: SWAP2 00001a2e: DUP8 00001a2f: AND 00001a30: DUP7 00001a31: MUL 00001a32: SWAP2 00001a33: SWAP1 00001a34: SWAP2 00001a35: OR 00001a36: SWAP1 00001a37: SSTORE 00001a38: PUSH1 0x80 00001a3a: SWAP9 00001a3b: DUP10 00001a3c: ADD 00001a3d: MLOAD 00001a3e: PUSH1 0x10 00001a40: DUP1 00001a41: SLOAD 00001a42: PUSH1 0x01 00001a44: PUSH1 0x01 00001a46: PUSH1 0x60 00001a48: SHL 00001a49: SUB 00001a4a: NOT 00001a4b: SWAP1 00001a4c: DUP2 00001a4d: AND 00001a4e: SWAP3 00001a4f: SWAP1 00001a50: SWAP8 00001a51: AND 00001a52: SWAP2 00001a53: SWAP1 00001a54: SWAP2 00001a55: OR 00001a56: SWAP1 00001a57: SSTORE 00001a58: DUP8 00001a59: MLOAD 00001a5a: PUSH1 0x11 00001a5c: DUP1 00001a5d: SLOAD 00001a5e: PUSH6 0xffffffffffff 00001a65: NOT 00001a66: AND 00001a67: PUSH6 0xffffffffffff 00001a6e: SWAP3 00001a6f: DUP4 00001a70: AND 00001a71: OR 00001a72: SWAP1 00001a73: SSTORE 00001a74: SWAP8 00001a75: DUP3 00001a76: ADD 00001a77: MLOAD 00001a78: PUSH1 0x12 00001a7a: SSTORE 00001a7b: DUP7 00001a7c: MLOAD 00001a7d: PUSH1 0x0d 00001a7f: DUP1 00001a80: SLOAD 00001a81: DUP10 00001a82: DUP6 00001a83: ADD 00001a84: MLOAD 00001a85: DUP11 00001a86: DUP6 00001a87: ADD 00001a88: MLOAD 00001a89: DUP12 00001a8a: DUP9 00001a8b: ADD 00001a8c: MLOAD 00001a8d: SWAP12 00001a8e: SWAP1 00001a8f: SWAP14 00001a90: ADD 00001a91: MLOAD 00001a92: PUSH12 0xffffffffffffffffffffffff 00001a9f: PUSH1 0x60 00001aa1: SHL 00001aa2: NOT 00001aa3: SWAP5 00001aa4: DUP14 00001aa5: AND 00001aa6: SWAP3 00001aa7: SWAP1 00001aa8: SWAP10 00001aa9: AND 00001aaa: SWAP2 00001aab: SWAP1 00001aac: SWAP2 00001aad: OR 00001aae: PUSH1 0x01 00001ab0: PUSH1 0x30 00001ab2: SHL 00001ab3: SWAP2 00001ab4: DUP13 00001ab5: AND 00001ab6: SWAP2 00001ab7: SWAP1 00001ab8: SWAP2 00001ab9: MUL 00001aba: OR 00001abb: SWAP2 00001abc: SWAP1 00001abd: SWAP2 00001abe: AND 00001abf: SWAP10 00001ac0: DUP10 00001ac1: AND 00001ac2: SWAP1 00001ac3: SWAP5 00001ac4: MUL 00001ac5: PUSH6 0xffffffffffff 00001acc: PUSH1 0x90 00001ace: SHL 00001acf: NOT 00001ad0: AND 00001ad1: SWAP9 00001ad2: SWAP1 00001ad3: SWAP9 00001ad4: OR 00001ad5: PUSH1 0x01 00001ad7: PUSH1 0x90 00001ad9: SHL 00001ada: SWAP7 00001adb: DUP9 00001adc: AND 00001add: SWAP7 00001ade: SWAP1 00001adf: SWAP7 00001ae0: MUL 00001ae1: SWAP6 00001ae2: SWAP1 00001ae3: SWAP6 00001ae4: OR 00001ae5: PUSH6 0xffffffffffff 00001aec: PUSH1 0xc0 00001aee: SHL 00001aef: NOT 00001af0: AND 00001af1: PUSH1 0x01 00001af3: PUSH1 0xc0 00001af5: SHL 00001af6: SWAP4 00001af7: DUP8 00001af8: AND 00001af9: SWAP4 00001afa: SWAP1 00001afb: SWAP4 00001afc: MUL 00001afd: SWAP3 00001afe: SWAP1 00001aff: SWAP3 00001b00: OR 00001b01: SWAP1 00001b02: SSTORE 00001b03: DUP2 00001b04: MLOAD 00001b05: PUSH1 0x0c 00001b07: DUP1 00001b08: SLOAD 00001b09: SWAP5 00001b0a: DUP5 00001b0b: ADD 00001b0c: MLOAD 00001b0d: SWAP7 00001b0e: DUP5 00001b0f: ADD 00001b10: MLOAD 00001b11: SWAP4 00001b12: SWAP1 00001b13: SWAP3 00001b14: ADD 00001b15: MLOAD 00001b16: PUSH1 0x01 00001b18: PUSH1 0x01 00001b1a: PUSH1 0x80 00001b1c: SHL 00001b1d: SUB 00001b1e: SWAP1 00001b1f: SWAP2 00001b20: AND 00001b21: PUSH1 0x01 00001b23: PUSH1 0x01 00001b25: PUSH1 0xb0 00001b27: SHL 00001b28: SUB 00001b29: NOT 00001b2a: SWAP1 00001b2b: SWAP5 00001b2c: AND 00001b2d: SWAP4 00001b2e: SWAP1 00001b2f: SWAP4 00001b30: OR 00001b31: PUSH1 0x01 00001b33: PUSH1 0x80 00001b35: SHL 00001b36: SWAP6 00001b37: DUP6 00001b38: AND 00001b39: SWAP6 00001b3a: SWAP1 00001b3b: SWAP6 00001b3c: MUL 00001b3d: SWAP5 00001b3e: SWAP1 00001b3f: SWAP5 00001b40: OR 00001b41: PUSH7 0xffffffffffffff 00001b49: PUSH1 0xb0 00001b4b: SHL 00001b4c: NOT 00001b4d: AND 00001b4e: PUSH1 0x01 00001b50: PUSH1 0xb0 00001b52: SHL 00001b53: SWAP2 00001b54: SWAP1 00001b55: SWAP4 00001b56: AND 00001b57: MUL 00001b58: PUSH1 0xff 00001b5a: PUSH1 0xe0 00001b5c: SHL 00001b5d: NOT 00001b5e: AND 00001b5f: SWAP2 00001b60: SWAP1 00001b61: SWAP2 00001b62: OR 00001b63: PUSH1 0x01 00001b65: PUSH1 0xe0 00001b67: SHL 00001b68: SWAP2 00001b69: ISZERO 00001b6a: ISZERO 00001b6b: SWAP2 00001b6c: SWAP1 00001b6d: SWAP2 00001b6e: MUL 00001b6f: OR 00001b70: SWAP1 00001b71: SSTORE 00001b72: POP 00001b73: POP 00001b74: POP 00001b75: POP 00001b76: POP 00001b77: POP 00001b78: POP 00001b79: POP 00001b7a: JUMPDEST 00001b7b: PUSH1 0x15 00001b7d: DUP1 00001b7e: SLOAD 00001b7f: PUSH1 0xff 00001b81: NOT 00001b82: AND 00001b83: PUSH1 0x01 00001b85: OR 00001b86: SWAP1 00001b87: SSTORE 00001b88: SWAP2 00001b89: SWAP1 00001b8a: POP 00001b8b: JUMP 00001b8c: JUMPDEST 00001b8d: PUSH0 00001b8e: DUP1 00001b8f: PUSH0 00001b90: ADDRESS 00001b91: PUSH1 0x01 00001b93: PUSH1 0x01 00001b95: PUSH1 0xa0 00001b97: SHL 00001b98: SUB 00001b99: AND 00001b9a: PUSH1 0x01 00001b9c: PUSH1 0x01 00001b9e: PUSH1 0xa0 00001ba0: SHL 00001ba1: SUB 00001ba2: AND 00001ba3: DUP2 00001ba4: MSTORE 00001ba5: PUSH1 0x20 00001ba7: ADD 00001ba8: SWAP1 00001ba9: DUP2 00001baa: MSTORE 00001bab: PUSH1 0x20 00001bad: ADD 00001bae: PUSH0 00001baf: KECCAK256 00001bb0: SLOAD 00001bb1: SWAP1 00001bb2: POP 00001bb3: PUSH1 0x40 00001bb5: MLOAD 00001bb6: PUSH4 0xf305d719 00001bbb: PUSH1 0xe0 00001bbd: SHL 00001bbe: DUP2 00001bbf: MSTORE 00001bc0: PUSH1 0x01 00001bc2: PUSH1 0x01 00001bc4: PUSH1 0xa0 00001bc6: SHL 00001bc7: SUB 00001bc8: ADDRESS 00001bc9: AND 00001bca: PUSH1 0x04 00001bcc: DUP3 00001bcd: ADD 00001bce: MSTORE 00001bcf: DUP2 00001bd0: PUSH1 0x24 00001bd2: DUP3 00001bd3: ADD 00001bd4: MSTORE 00001bd5: PUSH0 00001bd6: PUSH1 0x44 00001bd8: DUP3 00001bd9: ADD 00001bda: MSTORE 00001bdb: PUSH0 00001bdc: PUSH1 0x64 00001bde: DUP3 00001bdf: ADD 00001be0: MSTORE 00001be1: PUSH20 0xe58b33c813ac4077bd2519de90fccb189a19fa71 00001bf6: PUSH1 0x84 00001bf8: DUP3 00001bf9: ADD 00001bfa: MSTORE 00001bfb: TIMESTAMP 00001bfc: PUSH1 0xa4 00001bfe: DUP3 00001bff: ADD 00001c00: MSTORE 00001c01: PUSH0 00001c02: DUP1 00001c03: PUSH1 0xc4 00001c05: DUP4 00001c06: ADDRESS 00001c07: BALANCE 00001c08: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 00001c1d: GAS 00001c1e: CALL 00001c1f: SWAP1 00001c20: POP 00001c21: DUP1 00001c22: PUSH2 0x1c29 00001c25: JUMPI 00001c26: PUSH0 00001c27: DUP1 00001c28: REVERT 00001c29: JUMPDEST 00001c2a: POP 00001c2b: POP 00001c2c: JUMP 00001c2d: JUMPDEST 00001c2e: PUSH1 0x01 00001c30: PUSH1 0x01 00001c32: PUSH1 0xa0 00001c34: SHL 00001c35: SUB 00001c36: DUP4 00001c37: AND 00001c38: PUSH0 00001c39: SWAP1 00001c3a: DUP2 00001c3b: MSTORE 00001c3c: PUSH1 0x20 00001c3e: DUP2 00001c3f: SWAP1 00001c40: MSTORE 00001c41: PUSH1 0x40 00001c43: SWAP1 00001c44: KECCAK256 00001c45: SLOAD 00001c46: DUP2 00001c47: GT 00001c48: ISZERO 00001c49: PUSH2 0x1c65 00001c4c: JUMPI 00001c4d: PUSH1 0x40 00001c4f: MLOAD 00001c50: PUSH4 0x064c3927 00001c55: PUSH1 0xe2 00001c57: SHL 00001c58: DUP2 00001c59: MSTORE 00001c5a: PUSH1 0x04 00001c5c: ADD 00001c5d: PUSH1 0x40 00001c5f: MLOAD 00001c60: DUP1 00001c61: SWAP2 00001c62: SUB 00001c63: SWAP1 00001c64: REVERT 00001c65: JUMPDEST 00001c66: PUSH1 0x01 00001c68: PUSH1 0x01 00001c6a: PUSH1 0xa0 00001c6c: SHL 00001c6d: SUB 00001c6e: DUP3 00001c6f: AND 00001c70: PUSH0 00001c71: SWAP1 00001c72: DUP2 00001c73: MSTORE 00001c74: PUSH1 0x03 00001c76: PUSH1 0x20 00001c78: MSTORE 00001c79: PUSH1 0x40 00001c7b: DUP2 00001c7c: KECCAK256 00001c7d: SLOAD 00001c7e: PUSH1 0xff 00001c80: AND 00001c81: DUP1 00001c82: PUSH2 0x1ca2 00001c85: JUMPI 00001c86: POP 00001c87: PUSH1 0x01 00001c89: PUSH1 0x01 00001c8b: PUSH1 0xa0 00001c8d: SHL 00001c8e: SUB 00001c8f: DUP5 00001c90: AND 00001c91: PUSH0 00001c92: SWAP1 00001c93: DUP2 00001c94: MSTORE 00001c95: PUSH1 0x03 00001c97: PUSH1 0x20 00001c99: MSTORE 00001c9a: PUSH1 0x40 00001c9c: SWAP1 00001c9d: KECCAK256 00001c9e: SLOAD 00001c9f: PUSH1 0xff 00001ca1: AND 00001ca2: JUMPDEST 00001ca3: ISZERO 00001ca4: PUSH2 0x1cf4 00001ca7: JUMPI 00001ca8: PUSH1 0x01 00001caa: PUSH1 0x01 00001cac: PUSH1 0xa0 00001cae: SHL 00001caf: SUB 00001cb0: DUP4 00001cb1: AND 00001cb2: PUSH0 00001cb3: SWAP1 00001cb4: DUP2 00001cb5: MSTORE 00001cb6: PUSH1 0x02 00001cb8: PUSH1 0x20 00001cba: MSTORE 00001cbb: PUSH1 0x40 00001cbd: SWAP1 00001cbe: KECCAK256 00001cbf: SLOAD 00001cc0: PUSH1 0xff 00001cc2: AND 00001cc3: DUP1 00001cc4: PUSH2 0x1ce4 00001cc7: JUMPI 00001cc8: POP 00001cc9: PUSH1 0x01 00001ccb: PUSH1 0x01 00001ccd: PUSH1 0xa0 00001ccf: SHL 00001cd0: SUB 00001cd1: DUP5 00001cd2: AND 00001cd3: PUSH0 00001cd4: SWAP1 00001cd5: DUP2 00001cd6: MSTORE 00001cd7: PUSH1 0x02 00001cd9: PUSH1 0x20 00001cdb: MSTORE 00001cdc: PUSH1 0x40 00001cde: SWAP1 00001cdf: KECCAK256 00001ce0: SLOAD 00001ce1: PUSH1 0xff 00001ce3: AND 00001ce4: JUMPDEST 00001ce5: ISZERO 00001ce6: PUSH2 0x1cf0 00001ce9: JUMPI 00001cea: POP 00001ceb: PUSH0 00001cec: PUSH2 0x1cf4 00001cef: JUMP 00001cf0: JUMPDEST 00001cf1: POP 00001cf2: PUSH1 0x01 00001cf4: JUMPDEST 00001cf5: DUP1 00001cf6: ISZERO 00001cf7: PUSH2 0x1da1 00001cfa: JUMPI 00001cfb: PUSH0 00001cfc: PUSH2 0x03e8 00001cff: PUSH2 0x1d09 00001d02: PUSH1 0x32 00001d04: DUP6 00001d05: PUSH2 0x2dfb 00001d08: JUMP 00001d09: JUMPDEST 00001d0a: PUSH2 0x1d13 00001d0d: SWAP2 00001d0e: SWAP1 00001d0f: PUSH2 0x2e26 00001d12: JUMP 00001d13: JUMPDEST 00001d14: PUSH1 0x01 00001d16: PUSH1 0x01 00001d18: PUSH1 0xa0 00001d1a: SHL 00001d1b: SUB 00001d1c: DUP7 00001d1d: AND 00001d1e: PUSH0 00001d1f: SWAP1 00001d20: DUP2 00001d21: MSTORE 00001d22: PUSH1 0x20 00001d24: DUP2 00001d25: SWAP1 00001d26: MSTORE 00001d27: PUSH1 0x40 00001d29: DUP2 00001d2a: KECCAK256 00001d2b: DUP1 00001d2c: SLOAD 00001d2d: DUP7 00001d2e: SWAP1 00001d2f: SUB 00001d30: SWAP1 00001d31: SSTORE 00001d32: PUSH20 0xe58b33c813ac4077bd2519de90fccb189a19fa71 00001d47: SWAP1 00001d48: MSTORE 00001d49: PUSH32 0x1338836141591a3221ceb363e91a05d18b16e6fa044cb293d015e6c316402dc7 00001d6a: DUP1 00001d6b: SLOAD 00001d6c: DUP3 00001d6d: ADD 00001d6e: SWAP1 00001d6f: SSTORE 00001d70: SWAP1 00001d71: POP 00001d72: PUSH2 0x1d7b 00001d75: DUP2 00001d76: DUP5 00001d77: PUSH2 0x2de8 00001d7a: JUMP 00001d7b: JUMPDEST 00001d7c: PUSH1 0x01 00001d7e: PUSH1 0x01 00001d80: PUSH1 0xa0 00001d82: SHL 00001d83: SUB 00001d84: DUP6 00001d85: AND 00001d86: PUSH0 00001d87: SWAP1 00001d88: DUP2 00001d89: MSTORE 00001d8a: PUSH1 0x20 00001d8c: DUP2 00001d8d: SWAP1 00001d8e: MSTORE 00001d8f: PUSH1 0x40 00001d91: SWAP1 00001d92: KECCAK256 00001d93: DUP1 00001d94: SLOAD 00001d95: DUP3 00001d96: ADD 00001d97: SWAP1 00001d98: SSTORE 00001d99: SWAP3 00001d9a: POP 00001d9b: PUSH2 0x1dce 00001d9e: SWAP1 00001d9f: POP 00001da0: JUMP 00001da1: JUMPDEST 00001da2: PUSH1 0x01 00001da4: PUSH1 0x01 00001da6: PUSH1 0xa0 00001da8: SHL 00001da9: SUB 00001daa: DUP1 00001dab: DUP6 00001dac: AND 00001dad: PUSH0 00001dae: SWAP1 00001daf: DUP2 00001db0: MSTORE 00001db1: PUSH1 0x20 00001db3: DUP2 00001db4: SWAP1 00001db5: MSTORE 00001db6: PUSH1 0x40 00001db8: DUP1 00001db9: DUP3 00001dba: KECCAK256 00001dbb: DUP1 00001dbc: SLOAD 00001dbd: DUP7 00001dbe: SWAP1 00001dbf: SUB 00001dc0: SWAP1 00001dc1: SSTORE 00001dc2: SWAP2 00001dc3: DUP6 00001dc4: AND 00001dc5: DUP2 00001dc6: MSTORE 00001dc7: KECCAK256 00001dc8: DUP1 00001dc9: SLOAD 00001dca: DUP4 00001dcb: ADD 00001dcc: SWAP1 00001dcd: SSTORE 00001dce: JUMPDEST 00001dcf: DUP3 00001dd0: PUSH1 0x01 00001dd2: PUSH1 0x01 00001dd4: PUSH1 0xa0 00001dd6: SHL 00001dd7: SUB 00001dd8: AND 00001dd9: DUP5 00001dda: PUSH1 0x01 00001ddc: PUSH1 0x01 00001dde: PUSH1 0xa0 00001de0: SHL 00001de1: SUB 00001de2: AND 00001de3: PUSH0 00001de4: DUP1 00001de5: MLOAD 00001de6: PUSH1 0x20 00001de8: PUSH2 0x2fa7 00001deb: DUP4 00001dec: CODECOPY 00001ded: DUP2 00001dee: MLOAD 00001def: SWAP2 00001df0: MSTORE 00001df1: DUP5 00001df2: PUSH1 0x40 00001df4: MLOAD 00001df5: PUSH2 0x1e00 00001df8: SWAP2 00001df9: DUP2 00001dfa: MSTORE 00001dfb: PUSH1 0x20 00001dfd: ADD 00001dfe: SWAP1 00001dff: JUMP 00001e00: JUMPDEST 00001e01: PUSH1 0x40 00001e03: MLOAD 00001e04: DUP1 00001e05: SWAP2 00001e06: SUB 00001e07: SWAP1 00001e08: LOG3 00001e09: POP 00001e0a: POP 00001e0b: POP 00001e0c: POP 00001e0d: JUMP 00001e0e: JUMPDEST 00001e0f: PUSH1 0x01 00001e11: PUSH1 0x01 00001e13: PUSH1 0xa0 00001e15: SHL 00001e16: SUB 00001e17: DUP3 00001e18: AND 00001e19: PUSH0 00001e1a: SWAP1 00001e1b: DUP2 00001e1c: MSTORE 00001e1d: PUSH1 0x20 00001e1f: DUP2 00001e20: SWAP1 00001e21: MSTORE 00001e22: PUSH1 0x40 00001e24: SWAP1 00001e25: KECCAK256 00001e26: SLOAD 00001e27: DUP2 00001e28: GT 00001e29: ISZERO 00001e2a: PUSH2 0x1e46 00001e2d: JUMPI 00001e2e: PUSH1 0x40 00001e30: MLOAD 00001e31: PUSH4 0x064c3927 00001e36: PUSH1 0xe2 00001e38: SHL 00001e39: DUP2 00001e3a: MSTORE 00001e3b: PUSH1 0x04 00001e3d: ADD 00001e3e: PUSH1 0x40 00001e40: MLOAD 00001e41: DUP1 00001e42: SWAP2 00001e43: SUB 00001e44: SWAP1 00001e45: REVERT 00001e46: JUMPDEST 00001e47: PUSH1 0x01 00001e49: PUSH1 0x01 00001e4b: PUSH1 0xa0 00001e4d: SHL 00001e4e: SUB 00001e4f: DUP3 00001e50: AND 00001e51: PUSH0 00001e52: DUP2 00001e53: DUP2 00001e54: MSTORE 00001e55: PUSH1 0x20 00001e57: DUP2 00001e58: DUP2 00001e59: MSTORE 00001e5a: PUSH1 0x40 00001e5c: DUP1 00001e5d: DUP4 00001e5e: KECCAK256 00001e5f: DUP1 00001e60: SLOAD 00001e61: DUP7 00001e62: SWAP1 00001e63: SUB 00001e64: SWAP1 00001e65: SSTORE 00001e66: PUSH1 0x04 00001e68: DUP1 00001e69: SLOAD 00001e6a: DUP7 00001e6b: SWAP1 00001e6c: SUB 00001e6d: SWAP1 00001e6e: SSTORE 00001e6f: MLOAD 00001e70: DUP5 00001e71: DUP2 00001e72: MSTORE 00001e73: SWAP2 00001e74: SWAP3 00001e75: SWAP2 00001e76: PUSH0 00001e77: DUP1 00001e78: MLOAD 00001e79: PUSH1 0x20 00001e7b: PUSH2 0x2fa7 00001e7e: DUP4 00001e7f: CODECOPY 00001e80: DUP2 00001e81: MLOAD 00001e82: SWAP2 00001e83: MSTORE 00001e84: SWAP2 00001e85: ADD 00001e86: PUSH1 0x40 00001e88: MLOAD 00001e89: DUP1 00001e8a: SWAP2 00001e8b: SUB 00001e8c: SWAP1 00001e8d: LOG3 00001e8e: POP 00001e8f: POP 00001e90: JUMP 00001e91: JUMPDEST 00001e92: PUSH2 0x1e99 00001e95: PUSH2 0x2c63 00001e98: JUMP 00001e99: JUMPDEST 00001e9a: PUSH2 0x1ea1 00001e9d: PUSH2 0x2c63 00001ea0: JUMP 00001ea1: JUMPDEST 00001ea2: PUSH1 0x40 00001ea4: DUP1 00001ea5: MLOAD 00001ea6: DUP1 00001ea7: DUP3 00001ea8: ADD 00001ea9: DUP3 00001eaa: MSTORE 00001eab: PUSH0 00001eac: DUP1 00001ead: DUP3 00001eae: MSTORE 00001eaf: PUSH1 0x20 00001eb1: DUP1 00001eb2: DUP4 00001eb3: ADD 00001eb4: DUP3 00001eb5: SWAP1 00001eb6: MSTORE 00001eb7: DUP4 00001eb8: MLOAD 00001eb9: PUSH1 0x80 00001ebb: DUP2 00001ebc: ADD 00001ebd: DUP6 00001ebe: MSTORE 00001ebf: DUP3 00001ec0: DUP2 00001ec1: MSTORE 00001ec2: SWAP1 00001ec3: DUP2 00001ec4: ADD 00001ec5: DUP3 00001ec6: SWAP1 00001ec7: MSTORE 00001ec8: SWAP3 00001ec9: DUP4 00001eca: ADD 00001ecb: DUP2 00001ecc: SWAP1 00001ecd: MSTORE 00001ece: PUSH1 0x60 00001ed0: DUP4 00001ed1: ADD 00001ed2: MSTORE 00001ed3: SWAP1 00001ed4: TIMESTAMP 00001ed5: PUSH2 0x1ede 00001ed8: DUP10 00001ed9: DUP10 00001eda: PUSH2 0x2914 00001edd: JUMP 00001ede: JUMPDEST 00001edf: PUSH8 0xffffffffffffffff 00001ee8: AND 00001ee9: DUP9 00001eea: PUSH1 0x20 00001eec: ADD 00001eed: DUP2 00001eee: DUP2 00001eef: MLOAD 00001ef0: PUSH2 0x1ef9 00001ef3: SWAP2 00001ef4: SWAP1 00001ef5: PUSH2 0x2e39 00001ef8: JUMP 00001ef9: JUMPDEST 00001efa: PUSH1 0x01 00001efc: PUSH1 0x01 00001efe: PUSH1 0x60 00001f00: SHL 00001f01: SUB 00001f02: AND 00001f03: SWAP1 00001f04: MSTORE 00001f05: POP 00001f06: PUSH6 0xffffffffffff 00001f0d: DUP2 00001f0e: AND 00001f0f: PUSH1 0x20 00001f11: DUP11 00001f12: ADD 00001f13: MSTORE 00001f14: PUSH1 0x60 00001f16: DUP7 00001f17: ADD 00001f18: MLOAD 00001f19: ISZERO 00001f1a: PUSH2 0x1fa9 00001f1d: JUMPI 00001f1e: PUSH0 00001f1f: DUP1 00001f20: PUSH0 00001f21: PUSH2 0x1f29 00001f24: DUP10 00001f25: PUSH2 0x2956 00001f28: JUMP 00001f29: JUMPDEST 00001f2a: SWAP3 00001f2b: POP 00001f2c: SWAP3 00001f2d: POP 00001f2e: SWAP3 00001f2f: POP 00001f30: DUP3 00001f31: PUSH1 0x01 00001f33: PUSH1 0x01 00001f35: PUSH1 0x80 00001f37: SHL 00001f38: SUB 00001f39: AND 00001f3a: DUP11 00001f3b: PUSH1 0x20 00001f3d: ADD 00001f3e: DUP2 00001f3f: DUP2 00001f40: MLOAD 00001f41: PUSH2 0x1f4a 00001f44: SWAP2 00001f45: SWAP1 00001f46: PUSH2 0x2de8 00001f49: JUMP 00001f4a: JUMPDEST 00001f4b: SWAP1 00001f4c: MSTORE 00001f4d: POP 00001f4e: DUP1 00001f4f: ISZERO 00001f50: PUSH2 0x1f9e 00001f53: JUMPI 00001f54: DUP3 00001f55: DUP10 00001f56: PUSH0 00001f57: ADD 00001f58: DUP2 00001f59: DUP2 00001f5a: MLOAD 00001f5b: PUSH2 0x1f64 00001f5e: SWAP2 00001f5f: SWAP1 00001f60: PUSH2 0x2eb2 00001f63: JUMP 00001f64: JUMPDEST 00001f65: PUSH1 0x01 00001f67: PUSH1 0x01 00001f69: PUSH1 0x80 00001f6b: SHL 00001f6c: SUB 00001f6d: AND 00001f6e: SWAP1 00001f6f: MSTORE 00001f70: POP 00001f71: PUSH1 0x40 00001f73: DUP10 00001f74: ADD 00001f75: DUP1 00001f76: MLOAD 00001f77: DUP4 00001f78: SWAP2 00001f79: SWAP1 00001f7a: PUSH2 0x1f84 00001f7d: SWAP1 00001f7e: DUP4 00001f7f: SWAP1 00001f80: PUSH2 0x2ed2 00001f83: JUMP 00001f84: JUMPDEST 00001f85: PUSH6 0xffffffffffff 00001f8c: SWAP1 00001f8d: DUP2 00001f8e: AND 00001f8f: SWAP1 00001f90: SWAP2 00001f91: MSTORE 00001f92: DUP6 00001f93: AND 00001f94: PUSH1 0x20 00001f96: DUP12 00001f97: ADD 00001f98: MSTORE 00001f99: POP 00001f9a: PUSH2 0x1fa5 00001f9d: JUMP 00001f9e: JUMPDEST 00001f9f: PUSH0 00001fa0: PUSH1 0x60 00001fa2: DUP11 00001fa3: ADD 00001fa4: MSTORE 00001fa5: JUMPDEST 00001fa6: POP 00001fa7: POP 00001fa8: POP 00001fa9: JUMPDEST 00001faa: POP 00001fab: SWAP6 00001fac: SWAP8 00001fad: SWAP5 00001fae: SWAP6 00001faf: POP 00001fb0: SWAP3 00001fb1: SWAP4 00001fb2: SWAP3 00001fb3: POP 00001fb4: POP 00001fb5: POP 00001fb6: JUMP 00001fb7: JUMPDEST 00001fb8: PUSH0 00001fb9: PUSH8 0x0de0b6b3a7640000 00001fc2: PUSH2 0x1fcb 00001fc5: DUP5 00001fc6: DUP5 00001fc7: PUSH2 0x29e7 00001fca: JUMP 00001fcb: JUMPDEST 00001fcc: PUSH2 0x1fd5 00001fcf: SWAP1 00001fd0: DUP7 00001fd1: PUSH2 0x2dfb 00001fd4: JUMP 00001fd5: JUMPDEST 00001fd6: PUSH2 0x1fdf 00001fd9: SWAP2 00001fda: SWAP1 00001fdb: PUSH2 0x2e26 00001fde: JUMP 00001fdf: JUMPDEST 00001fe0: SWAP5 00001fe1: SWAP4 00001fe2: POP 00001fe3: POP 00001fe4: POP 00001fe5: POP 00001fe6: JUMP 00001fe7: JUMPDEST 00001fe8: ADDRESS 00001fe9: PUSH0 00001fea: SWAP1 00001feb: DUP2 00001fec: MSTORE 00001fed: PUSH1 0x20 00001fef: DUP2 00001ff0: SWAP1 00001ff1: MSTORE 00001ff2: PUSH1 0x40 00001ff4: DUP2 00001ff5: KECCAK256 00001ff6: SLOAD 00001ff7: DUP3 00001ff8: GT 00001ff9: ISZERO 00001ffa: PUSH2 0x2016 00001ffd: JUMPI 00001ffe: PUSH1 0x40 00002000: MLOAD 00002001: PUSH4 0x5e36b3df 00002006: PUSH1 0xe0 00002008: SHL 00002009: DUP2 0000200a: MSTORE 0000200b: PUSH1 0x04 0000200d: ADD 0000200e: PUSH1 0x40 00002010: MLOAD 00002011: DUP1 00002012: SWAP2 00002013: SUB 00002014: SWAP1 00002015: REVERT 00002016: JUMPDEST 00002017: POP 00002018: PUSH1 0x01 0000201a: PUSH1 0x01 0000201c: PUSH1 0xa0 0000201e: SHL 0000201f: SUB 00002020: DUP3 00002021: AND 00002022: PUSH0 00002023: DUP2 00002024: DUP2 00002025: MSTORE 00002026: PUSH1 0x20 00002028: DUP2 00002029: DUP2 0000202a: MSTORE 0000202b: PUSH1 0x40 0000202d: DUP1 0000202e: DUP4 0000202f: KECCAK256 00002030: DUP1 00002031: SLOAD 00002032: DUP7 00002033: ADD 00002034: SWAP1 00002035: SSTORE 00002036: ADDRESS 00002037: DUP1 00002038: DUP5 00002039: MSTORE 0000203a: SWAP3 0000203b: DUP2 0000203c: SWAP1 0000203d: KECCAK256 0000203e: DUP1 0000203f: SLOAD 00002040: DUP7 00002041: SWAP1 00002042: SUB 00002043: SWAP1 00002044: SSTORE 00002045: MLOAD 00002046: DUP5 00002047: DUP2 00002048: MSTORE 00002049: PUSH1 0x01 0000204b: SWAP4 0000204c: SWAP3 0000204d: SWAP2 0000204e: PUSH0 0000204f: DUP1 00002050: MLOAD 00002051: PUSH1 0x20 00002053: PUSH2 0x2fa7 00002056: DUP4 00002057: CODECOPY 00002058: DUP2 00002059: MLOAD 0000205a: SWAP2 0000205b: MSTORE 0000205c: SWAP2 0000205d: ADD 0000205e: PUSH1 0x40 00002060: MLOAD 00002061: DUP1 00002062: SWAP2 00002063: SUB 00002064: SWAP1 00002065: LOG3 00002066: SWAP3 00002067: SWAP2 00002068: POP 00002069: POP 0000206a: JUMP 0000206b: JUMPDEST 0000206c: PUSH2 0x2073 0000206f: PUSH2 0x2c63 00002072: JUMP 00002073: JUMPDEST 00002074: PUSH1 0x40 00002076: DUP1 00002077: MLOAD 00002078: DUP1 00002079: DUP3 0000207a: ADD 0000207b: SWAP1 0000207c: SWAP2 0000207d: MSTORE 0000207e: PUSH0 0000207f: DUP1 00002080: DUP3 00002081: MSTORE 00002082: PUSH1 0x20 00002084: DUP3 00002085: ADD 00002086: MSTORE 00002087: PUSH2 0x208e 0000208a: PUSH2 0x2c63 0000208d: JUMP 0000208e: JUMPDEST 0000208f: PUSH1 0x40 00002091: DUP1 00002092: MLOAD 00002093: PUSH1 0x80 00002095: DUP2 00002096: ADD 00002097: DUP3 00002098: MSTORE 00002099: PUSH0 0000209a: DUP1 0000209b: DUP3 0000209c: MSTORE 0000209d: PUSH1 0x20 0000209f: DUP3 000020a0: ADD 000020a1: DUP2 000020a2: SWAP1 000020a3: MSTORE 000020a4: SWAP2 000020a5: DUP2 000020a6: ADD 000020a7: DUP3 000020a8: SWAP1 000020a9: MSTORE 000020aa: PUSH1 0x60 000020ac: DUP2 000020ad: ADD 000020ae: SWAP2 000020af: SWAP1 000020b0: SWAP2 000020b1: MSTORE 000020b2: PUSH2 0x20de 000020b5: PUSH1 0x40 000020b7: MLOAD 000020b8: DUP1 000020b9: PUSH1 0xa0 000020bb: ADD 000020bc: PUSH1 0x40 000020be: MSTORE 000020bf: DUP1 000020c0: PUSH0 000020c1: DUP2 000020c2: MSTORE 000020c3: PUSH1 0x20 000020c5: ADD 000020c6: PUSH0 000020c7: DUP2 000020c8: MSTORE 000020c9: PUSH1 0x20 000020cb: ADD 000020cc: PUSH0 000020cd: DUP2 000020ce: MSTORE 000020cf: PUSH1 0x20 000020d1: ADD 000020d2: PUSH0 000020d3: DUP2 000020d4: MSTORE 000020d5: PUSH1 0x20 000020d7: ADD 000020d8: PUSH0 000020d9: DUP2 000020da: MSTORE 000020db: POP 000020dc: SWAP1 000020dd: JUMP 000020de: JUMPDEST 000020df: PUSH1 0x80 000020e1: DUP9 000020e2: ADD 000020e3: MLOAD 000020e4: DUP9 000020e5: MLOAD 000020e6: PUSH2 0x20ef 000020e9: SWAP2 000020ea: SWAP1 000020eb: PUSH2 0x2ef1 000020ee: JUMP 000020ef: JUMPDEST 000020f0: PUSH6 0xffffffffffff 000020f7: AND 000020f8: DUP12 000020f9: PUSH6 0xffffffffffff 00002100: AND 00002101: LT 00002102: PUSH2 0x225c 00002105: JUMPI 00002106: DUP9 00002107: MLOAD 00002108: PUSH2 0x2112 0000210b: SWAP1 0000210c: DUP13 0000210d: SWAP1 0000210e: PUSH2 0x2ed2 00002111: JUMP 00002112: JUMPDEST 00002113: PUSH6 0xffffffffffff 0000211a: AND 0000211b: DUP2 0000211c: MSTORE 0000211d: PUSH1 0x20 0000211f: DUP1 00002120: DUP11 00002121: ADD 00002122: MLOAD 00002123: SWAP1 00002124: DUP12 00002125: ADD 00002126: MLOAD 00002127: PUSH2 0x213a 0000212a: SWAP2 0000212b: SWAP1 0000212c: PUSH1 0x01 0000212e: PUSH1 0x01 00002130: PUSH1 0x60 00002132: SHL 00002133: SUB 00002134: AND 00002135: DUP9 00002136: PUSH2 0x1fb7 00002139: JUMP 0000213a: JUMPDEST 0000213b: PUSH1 0x20 0000213d: DUP3 0000213e: ADD 0000213f: MSTORE 00002140: DUP10 00002141: MLOAD 00002142: PUSH1 0x01 00002144: PUSH1 0x01 00002146: PUSH1 0x60 00002148: SHL 00002149: SUB 0000214a: AND 0000214b: PUSH1 0x40 0000214d: DUP3 0000214e: ADD 0000214f: DUP2 00002150: SWAP1 00002151: MSTORE 00002152: DUP2 00002153: MLOAD 00002154: PUSH1 0x60 00002156: DUP11 00002157: ADD 00002158: MLOAD 00002159: SWAP1 0000215a: SWAP2 0000215b: PUSH2 0x216c 0000215e: SWAP2 0000215f: PUSH6 0xffffffffffff 00002166: AND 00002167: SWAP1 00002168: PUSH2 0x2dfb 0000216b: JUMP 0000216c: JUMPDEST 0000216d: PUSH2 0x2176 00002170: SWAP2 00002171: SWAP1 00002172: PUSH2 0x2e26 00002175: JUMP 00002176: JUMPDEST 00002177: PUSH1 0x01 00002179: PUSH1 0x01 0000217b: PUSH1 0x60 0000217d: SHL 0000217e: SUB 0000217f: AND 00002180: PUSH1 0x40 00002182: DUP1 00002183: DUP13 00002184: ADD 00002185: SWAP2 00002186: SWAP1 00002187: SWAP2 00002188: MSTORE 00002189: DUP2 0000218a: MLOAD 0000218b: DUP10 0000218c: DUP3 0000218d: ADD 0000218e: MLOAD 0000218f: SWAP2 00002190: DUP4 00002191: ADD 00002192: MLOAD 00002193: SWAP1 00002194: SWAP2 00002195: PUSH2 0x21a8 00002198: SWAP2 00002199: PUSH6 0xffffffffffff 000021a0: SWAP1 000021a1: SWAP2 000021a2: AND 000021a3: SWAP1 000021a4: PUSH2 0x2dfb 000021a7: JUMP 000021a8: JUMPDEST 000021a9: PUSH2 0x21b2 000021ac: SWAP2 000021ad: SWAP1 000021ae: PUSH2 0x2e26 000021b1: JUMP 000021b2: JUMPDEST 000021b3: PUSH1 0x60 000021b5: DUP3 000021b6: ADD 000021b7: DUP2 000021b8: SWAP1 000021b9: MSTORE 000021ba: PUSH1 0x20 000021bc: DUP3 000021bd: ADD 000021be: MLOAD 000021bf: PUSH2 0x21c9 000021c2: SWAP1 000021c3: DUP9 000021c4: SWAP1 000021c5: PUSH2 0x2dfb 000021c8: JUMP 000021c9: JUMPDEST 000021ca: PUSH2 0x21d3 000021cd: SWAP2 000021ce: SWAP1 000021cf: PUSH2 0x2e26 000021d2: JUMP 000021d3: JUMPDEST 000021d4: PUSH1 0x80 000021d6: DUP3 000021d7: ADD 000021d8: DUP2 000021d9: SWAP1 000021da: MSTORE 000021db: PUSH1 0x20 000021dd: DUP11 000021de: ADD 000021df: MLOAD 000021e0: GT 000021e1: ISZERO 000021e2: PUSH2 0x2245 000021e5: JUMPI 000021e6: PUSH0 000021e7: DUP2 000021e8: PUSH1 0x80 000021ea: ADD 000021eb: MLOAD 000021ec: DUP11 000021ed: PUSH1 0x20 000021ef: ADD 000021f0: MLOAD 000021f1: PUSH2 0x21fa 000021f4: SWAP2 000021f5: SWAP1 000021f6: PUSH2 0x2de8 000021f9: JUMP 000021fa: JUMPDEST 000021fb: SWAP1 000021fc: POP 000021fd: PUSH1 0x40 000021ff: MLOAD 00002200: DUP1 00002201: PUSH1 0x80 00002203: ADD 00002204: PUSH1 0x40 00002206: MSTORE 00002207: DUP1 00002208: DUP3 00002209: PUSH1 0x01 0000220b: PUSH1 0x01 0000220d: PUSH1 0x80 0000220f: SHL 00002210: SUB 00002211: AND 00002212: DUP2 00002213: MSTORE 00002214: PUSH1 0x20 00002216: ADD 00002217: DUP14 00002218: PUSH6 0xffffffffffff 0000221f: AND 00002220: DUP2 00002221: MSTORE 00002222: PUSH1 0x20 00002224: ADD 00002225: DUP11 00002226: PUSH1 0x80 00002228: ADD 00002229: MLOAD 0000222a: PUSH6 0xffffffffffff 00002231: AND 00002232: DUP2 00002233: MSTORE 00002234: PUSH1 0x20 00002236: ADD 00002237: PUSH1 0x01 00002239: ISZERO 0000223a: ISZERO 0000223b: DUP2 0000223c: MSTORE 0000223d: POP 0000223e: SWAP8 0000223f: POP 00002240: POP 00002241: PUSH2 0x2250 00002244: JUMP 00002245: JUMPDEST 00002246: PUSH1 0x80 00002248: DUP2 00002249: ADD 0000224a: MLOAD 0000224b: PUSH1 0x20 0000224d: DUP11 0000224e: ADD 0000224f: MSTORE 00002250: JUMPDEST 00002251: PUSH6 0xffffffffffff 00002258: DUP12 00002259: AND 0000225a: DUP9 0000225b: MSTORE 0000225c: JUMPDEST 0000225d: POP 0000225e: SWAP8 0000225f: SWAP10 00002260: SWAP7 00002261: SWAP9 00002262: POP 00002263: SWAP5 00002264: SWAP7 00002265: POP 00002266: SWAP3 00002267: SWAP5 00002268: SWAP4 00002269: POP 0000226a: POP 0000226b: POP 0000226c: POP 0000226d: JUMP 0000226e: JUMPDEST 0000226f: PUSH0 00002270: DUP1 00002271: PUSH0 00002272: DUP1 00002273: PUSH0 00002274: DUP6 00002275: DUP8 00002276: GAS 00002277: CALL 00002278: SWAP1 00002279: POP 0000227a: DUP1 0000227b: PUSH2 0x22c0 0000227e: JUMPI 0000227f: PUSH1 0x40 00002281: MLOAD 00002282: PUSH3 0x461bcd 00002286: PUSH1 0xe5 00002288: SHL 00002289: DUP2 0000228a: MSTORE 0000228b: PUSH1 0x20 0000228d: PUSH1 0x04 0000228f: DUP3 00002290: ADD 00002291: MSTORE 00002292: PUSH1 0x13 00002294: PUSH1 0x24 00002296: DUP3 00002297: ADD 00002298: MSTORE 00002299: PUSH19 0x11551217d514905394d1915497d19052531151 000022ad: PUSH1 0x6a 000022af: SHL 000022b0: PUSH1 0x44 000022b2: DUP3 000022b3: ADD 000022b4: MSTORE 000022b5: PUSH1 0x64 000022b7: ADD 000022b8: PUSH1 0x40 000022ba: MLOAD 000022bb: DUP1 000022bc: SWAP2 000022bd: SUB 000022be: SWAP1 000022bf: REVERT 000022c0: JUMPDEST 000022c1: POP 000022c2: POP 000022c3: POP 000022c4: JUMP 000022c5: JUMPDEST 000022c6: PUSH0 000022c7: DUP2 000022c8: ISZERO 000022c9: PUSH2 0x235a 000022cc: JUMPI 000022cd: PUSH1 0x0b 000022cf: SLOAD 000022d0: PUSH1 0x40 000022d2: DUP1 000022d3: MLOAD 000022d4: PUSH1 0x80 000022d6: DUP2 000022d7: ADD 000022d8: DUP3 000022d9: MSTORE 000022da: PUSH1 0x05 000022dc: SLOAD 000022dd: PUSH1 0x01 000022df: PUSH1 0x01 000022e1: PUSH1 0x80 000022e3: SHL 000022e4: SUB 000022e5: DUP2 000022e6: AND 000022e7: DUP3 000022e8: MSTORE 000022e9: PUSH1 0x01 000022eb: PUSH1 0x80 000022ed: SHL 000022ee: DUP2 000022ef: DIV 000022f0: PUSH6 0xffffffffffff 000022f7: SWAP1 000022f8: DUP2 000022f9: AND 000022fa: PUSH1 0x20 000022fc: DUP5 000022fd: ADD 000022fe: MSTORE 000022ff: PUSH1 0x01 00002301: PUSH1 0xb0 00002303: SHL 00002304: DUP3 00002305: DIV 00002306: AND 00002307: SWAP3 00002308: DUP3 00002309: ADD 0000230a: SWAP3 0000230b: SWAP1 0000230c: SWAP3 0000230d: MSTORE 0000230e: PUSH1 0x01 00002310: PUSH1 0xe0 00002312: SHL 00002313: SWAP1 00002314: SWAP2 00002315: DIV 00002316: PUSH1 0xff 00002318: AND 00002319: ISZERO 0000231a: ISZERO 0000231b: PUSH1 0x60 0000231d: DUP3 0000231e: ADD 0000231f: MSTORE 00002320: PUSH2 0x071c 00002323: SWAP2 00002324: PUSH2 0x232c 00002327: SWAP2 00002328: PUSH2 0x2a05 0000232b: JUMP 0000232c: JUMPDEST 0000232d: PUSH1 0x07 0000232f: SLOAD 00002330: PUSH1 0x04 00002332: SLOAD 00002333: PUSH2 0x234c 00002336: SWAP2 00002337: PUSH1 0x01 00002339: PUSH1 0x60 0000233b: SHL 0000233c: SWAP1 0000233d: DIV 0000233e: PUSH1 0x01 00002340: PUSH1 0x01 00002342: PUSH1 0x60 00002344: SHL 00002345: SUB 00002346: AND 00002347: SWAP1 00002348: PUSH2 0x29e7 0000234b: JUMP 0000234c: JUMPDEST 0000234d: PUSH8 0x0de0b6b3a7640000 00002356: PUSH2 0x286a 00002359: JUMP 0000235a: JUMPDEST 0000235b: PUSH1 0x12 0000235d: SLOAD 0000235e: PUSH1 0x40 00002360: DUP1 00002361: MLOAD 00002362: PUSH1 0x80 00002364: DUP2 00002365: ADD 00002366: DUP3 00002367: MSTORE 00002368: PUSH1 0x0c 0000236a: SLOAD 0000236b: PUSH1 0x01 0000236d: PUSH1 0x01 0000236f: PUSH1 0x80 00002371: SHL 00002372: SUB 00002373: DUP2 00002374: AND 00002375: DUP3 00002376: MSTORE 00002377: PUSH1 0x01 00002379: PUSH1 0x80 0000237b: SHL 0000237c: DUP2 0000237d: DIV 0000237e: PUSH6 0xffffffffffff 00002385: SWAP1 00002386: DUP2 00002387: AND 00002388: PUSH1 0x20 0000238a: DUP5 0000238b: ADD 0000238c: MSTORE 0000238d: PUSH1 0x01 0000238f: PUSH1 0xb0 00002391: SHL 00002392: DUP3 00002393: DIV 00002394: AND 00002395: SWAP3 00002396: DUP3 00002397: ADD 00002398: SWAP3 00002399: SWAP1 0000239a: SWAP3 0000239b: MSTORE 0000239c: PUSH1 0x01 0000239e: PUSH1 0xe0 000023a0: SHL 000023a1: SWAP1 000023a2: SWAP2 000023a3: DIV 000023a4: PUSH1 0xff 000023a6: AND 000023a7: ISZERO 000023a8: ISZERO 000023a9: PUSH1 0x60 000023ab: DUP3 000023ac: ADD 000023ad: MSTORE 000023ae: PUSH2 0x071c 000023b1: SWAP2 000023b2: PUSH2 0x23ba 000023b5: SWAP2 000023b6: PUSH2 0x2a05 000023b9: JUMP 000023ba: JUMPDEST 000023bb: PUSH1 0x0e 000023bd: SLOAD 000023be: PUSH1 0x04 000023c0: SLOAD 000023c1: PUSH2 0x234c 000023c4: SWAP2 000023c5: PUSH1 0x01 000023c7: PUSH1 0x60 000023c9: SHL 000023ca: SWAP1 000023cb: DIV 000023cc: PUSH1 0x01 000023ce: PUSH1 0x01 000023d0: PUSH1 0x60 000023d2: SHL 000023d3: SUB 000023d4: AND 000023d5: SWAP1 000023d6: PUSH2 0x29e7 000023d9: JUMP 000023da: JUMPDEST 000023db: SWAP2 000023dc: SWAP1 000023dd: POP 000023de: JUMP 000023df: JUMPDEST 000023e0: PUSH1 0x13 000023e2: SLOAD 000023e3: DUP1 000023e4: ISZERO 000023e5: PUSH2 0x2619 000023e8: JUMPI 000023e9: PUSH0 000023ea: PUSH2 0x23f1 000023ed: PUSH2 0x2a27 000023f0: JUMP 000023f1: JUMPDEST 000023f2: SWAP1 000023f3: POP 000023f4: DUP2 000023f5: PUSH0 000023f6: PUSH3 0x093a80 000023fa: PUSH2 0x2406 000023fd: DUP4 000023fe: PUSH3 0x015180 00002402: PUSH2 0x2f10 00002405: JUMP 00002406: JUMPDEST 00002407: PUSH1 0x01 00002409: PUSH1 0x01 0000240b: PUSH1 0x60 0000240d: SHL 0000240e: SUB 0000240f: AND 00002410: PUSH2 0x2419 00002413: SWAP2 00002414: SWAP1 00002415: PUSH2 0x2e26 00002418: JUMP 00002419: JUMPDEST 0000241a: SWAP1 0000241b: POP 0000241c: PUSH0 0000241d: DUP5 0000241e: PUSH1 0x01 00002420: PUSH1 0x01 00002422: PUSH1 0x60 00002424: SHL 00002425: SUB 00002426: AND 00002427: PUSH1 0x04 00002429: SLOAD 0000242a: DUP6 0000242b: PUSH2 0x2434 0000242e: SWAP2 0000242f: SWAP1 00002430: PUSH2 0x2dfb 00002433: JUMP 00002434: JUMPDEST 00002435: PUSH2 0x243e 00002438: SWAP2 00002439: SWAP1 0000243a: PUSH2 0x2e26 0000243d: JUMP 0000243e: JUMPDEST 0000243f: SWAP1 00002440: POP 00002441: PUSH0 00002442: PUSH2 0x2454 00002445: DUP5 00002446: PUSH1 0x01 00002448: PUSH1 0x01 0000244a: PUSH1 0x60 0000244c: SHL 0000244d: SUB 0000244e: AND 0000244f: DUP7 00002450: PUSH2 0x2b01 00002453: JUMP 00002454: JUMPDEST 00002455: SWAP1 00002456: POP 00002457: PUSH0 00002458: PUSH2 0x2464 0000245b: PUSH3 0x093a80 0000245f: TIMESTAMP 00002460: PUSH2 0x2e80 00002463: JUMP 00002464: JUMPDEST 00002465: SWAP1 00002466: POP 00002467: DUP2 00002468: ISZERO 00002469: PUSH2 0x25c3 0000246c: JUMPI 0000246d: PUSH1 0x40 0000246f: DUP1 00002470: MLOAD 00002471: PUSH1 0xa0 00002473: DUP1 00002474: DUP3 00002475: ADD 00002476: DUP4 00002477: MSTORE 00002478: PUSH1 0x01 0000247a: PUSH1 0x01 0000247c: PUSH1 0x60 0000247e: SHL 0000247f: SUB 00002480: DUP9 00002481: DUP2 00002482: AND 00002483: DUP1 00002484: DUP5 00002485: MSTORE 00002486: DUP12 00002487: DUP3 00002488: AND 00002489: PUSH1 0x20 0000248b: DUP1 0000248c: DUP7 0000248d: ADD 0000248e: DUP3 0000248f: SWAP1 00002490: MSTORE 00002491: SWAP3 00002492: DUP11 00002493: AND 00002494: DUP6 00002495: DUP8 00002496: ADD 00002497: DUP2 00002498: SWAP1 00002499: MSTORE 0000249a: PUSH0 0000249b: PUSH1 0x60 0000249d: DUP1 0000249e: DUP9 0000249f: ADD 000024a0: DUP3 000024a1: SWAP1 000024a2: MSTORE 000024a3: PUSH1 0x80 000024a5: SWAP8 000024a6: DUP9 000024a7: ADD 000024a8: SWAP2 000024a9: SWAP1 000024aa: SWAP2 000024ab: MSTORE 000024ac: PUSH1 0x07 000024ae: DUP1 000024af: SLOAD 000024b0: PUSH1 0x01 000024b2: PUSH1 0x01 000024b4: PUSH1 0xc0 000024b6: SHL 000024b7: SUB 000024b8: NOT 000024b9: SWAP1 000024ba: DUP2 000024bb: AND 000024bc: DUP7 000024bd: OR 000024be: PUSH1 0x01 000024c0: PUSH1 0x60 000024c2: SHL 000024c3: SWAP1 000024c4: SWAP6 000024c5: MUL 000024c6: SWAP5 000024c7: SWAP1 000024c8: SWAP5 000024c9: OR 000024ca: SWAP1 000024cb: SSTORE 000024cc: PUSH1 0x08 000024ce: DUP1 000024cf: SLOAD 000024d0: SWAP1 000024d1: SWAP4 000024d2: AND 000024d3: SWAP1 000024d4: SWAP2 000024d5: OR 000024d6: SWAP1 000024d7: SWAP2 000024d8: SSTORE 000024d9: PUSH1 0x09 000024db: DUP1 000024dc: SLOAD 000024dd: PUSH1 0x01 000024df: PUSH1 0x01 000024e1: PUSH1 0x60 000024e3: SHL 000024e4: SUB 000024e5: NOT 000024e6: SWAP1 000024e7: DUP2 000024e8: AND 000024e9: SWAP1 000024ea: SWAP2 000024eb: SSTORE 000024ec: DUP7 000024ed: MLOAD 000024ee: DUP1 000024ef: DUP9 000024f0: ADD 000024f1: DUP9 000024f2: MSTORE 000024f3: PUSH6 0xffffffffffff 000024fa: DUP10 000024fb: DUP2 000024fc: AND 000024fd: DUP1 000024fe: DUP4 000024ff: MSTORE 00002500: SWAP2 00002501: DUP7 00002502: ADD 00002503: DUP13 00002504: SWAP1 00002505: MSTORE 00002506: PUSH1 0x0a 00002508: DUP1 00002509: SLOAD 0000250a: PUSH6 0xffffffffffff 00002511: NOT 00002512: AND 00002513: DUP4 00002514: OR 00002515: SWAP1 00002516: SSTORE 00002517: PUSH1 0x0b 00002519: DUP13 0000251a: SWAP1 0000251b: SSTORE 0000251c: DUP9 0000251d: MLOAD 0000251e: SWAP7 0000251f: DUP8 00002520: ADD 00002521: DUP10 00002522: MSTORE 00002523: TIMESTAMP 00002524: SWAP1 00002525: DUP2 00002526: AND 00002527: DUP1 00002528: DUP9 00002529: MSTORE 0000252a: DUP8 0000252b: DUP8 0000252c: ADD 0000252d: DUP2 0000252e: SWAP1 0000252f: MSTORE 00002530: PUSH3 0x093a80 00002534: DUP9 00002535: DUP12 00002536: ADD 00002537: MSTORE 00002538: PUSH3 0x015180 0000253c: DUP9 0000253d: DUP7 0000253e: ADD 0000253f: MSTORE 00002540: PUSH2 0x0708 00002543: SWAP8 00002544: SWAP1 00002545: SWAP9 00002546: ADD 00002547: SWAP7 00002548: SWAP1 00002549: SWAP7 0000254a: MSTORE 0000254b: PUSH1 0x06 0000254d: DUP1 0000254e: SLOAD 0000254f: SWAP1 00002550: SWAP3 00002551: AND 00002552: DUP8 00002553: OR 00002554: PUSH1 0x01 00002556: PUSH1 0x30 00002558: SHL 00002559: SWAP1 0000255a: SWAP8 0000255b: MUL 0000255c: SWAP7 0000255d: SWAP1 0000255e: SWAP7 0000255f: OR 00002560: PUSH1 0x01 00002562: PUSH1 0x60 00002564: SHL 00002565: PUSH1 0x01 00002567: PUSH1 0xf0 00002569: SHL 0000256a: SUB 0000256b: NOT 0000256c: AND 0000256d: PUSH13 0x0e1000000002a3000000001275 0000257b: PUSH1 0x67 0000257d: SHL 0000257e: OR 0000257f: SWAP1 00002580: SSTORE 00002581: DUP6 00002582: MLOAD 00002583: SWAP2 00002584: DUP3 00002585: MSTORE 00002586: SWAP2 00002587: DUP2 00002588: ADD 00002589: SWAP3 0000258a: SWAP1 0000258b: SWAP3 0000258c: MSTORE 0000258d: SWAP3 0000258e: DUP2 0000258f: ADD 00002590: SWAP2 00002591: SWAP1 00002592: SWAP2 00002593: MSTORE 00002594: PUSH32 0x035d6743050a54c5c545b7f45bddbd082bf97e098d81e6eb10045ab6a10ab510 000025b5: SWAP2 000025b6: ADD 000025b7: PUSH1 0x40 000025b9: MLOAD 000025ba: DUP1 000025bb: SWAP2 000025bc: SUB 000025bd: SWAP1 000025be: LOG1 000025bf: PUSH2 0x2612 000025c2: JUMP 000025c3: JUMPDEST 000025c4: PUSH2 0x25d6 000025c7: ADDRESS 000025c8: DUP7 000025c9: PUSH1 0x01 000025cb: PUSH1 0x01 000025cd: PUSH1 0x60 000025cf: SHL 000025d0: SUB 000025d1: AND 000025d2: PUSH2 0x1e0e 000025d5: JUMP 000025d6: JUMPDEST 000025d7: PUSH2 0x25e3 000025da: PUSH3 0x093a80 000025de: TIMESTAMP 000025df: PUSH2 0x2e80 000025e2: JUMP 000025e3: JUMPDEST 000025e4: PUSH1 0x0a 000025e6: DUP1 000025e7: SLOAD 000025e8: PUSH6 0xffffffffffff 000025ef: NOT 000025f0: AND 000025f1: PUSH6 0xffffffffffff 000025f8: SWAP3 000025f9: SWAP1 000025fa: SWAP3 000025fb: AND 000025fc: SWAP2 000025fd: SWAP1 000025fe: SWAP2 000025ff: OR 00002600: SWAP1 00002601: SSTORE 00002602: PUSH1 0x07 00002604: DUP1 00002605: SLOAD 00002606: PUSH1 0x01 00002608: PUSH1 0x01 0000260a: PUSH1 0x60 0000260c: SHL 0000260d: SUB 0000260e: NOT 0000260f: AND 00002610: SWAP1 00002611: SSTORE 00002612: JUMPDEST 00002613: POP 00002614: POP 00002615: POP 00002616: POP 00002617: POP 00002618: POP 00002619: JUMPDEST 0000261a: POP 0000261b: PUSH0 0000261c: PUSH1 0x13 0000261e: SSTORE 0000261f: JUMP 00002620: JUMPDEST 00002621: PUSH1 0x14 00002623: SLOAD 00002624: PUSH1 0x01 00002626: PUSH1 0x01 00002628: PUSH1 0x60 0000262a: SHL 0000262b: SUB 0000262c: DUP2 0000262d: AND 0000262e: ISZERO 0000262f: PUSH2 0x2863 00002632: JUMPI 00002633: PUSH0 00002634: PUSH2 0x263b 00002637: PUSH2 0x2b7e 0000263a: JUMP 0000263b: JUMPDEST 0000263c: SWAP1 0000263d: POP 0000263e: DUP2 0000263f: PUSH0 00002640: PUSH3 0x093a80 00002644: PUSH2 0x2650 00002647: DUP4 00002648: PUSH3 0x015180 0000264c: PUSH2 0x2f10 0000264f: JUMP 00002650: JUMPDEST 00002651: PUSH1 0x01 00002653: PUSH1 0x01 00002655: PUSH1 0x60 00002657: SHL 00002658: SUB 00002659: AND 0000265a: PUSH2 0x2663 0000265d: SWAP2 0000265e: SWAP1 0000265f: PUSH2 0x2e26 00002662: JUMP 00002663: JUMPDEST 00002664: SWAP1 00002665: POP 00002666: PUSH0 00002667: DUP5 00002668: PUSH1 0x01 0000266a: PUSH1 0x01 0000266c: PUSH1 0x60 0000266e: SHL 0000266f: SUB 00002670: AND 00002671: PUSH1 0x04 00002673: SLOAD 00002674: DUP6 00002675: PUSH2 0x267e 00002678: SWAP2 00002679: SWAP1 0000267a: PUSH2 0x2dfb 0000267d: JUMP 0000267e: JUMPDEST 0000267f: PUSH2 0x2688 00002682: SWAP2 00002683: SWAP1 00002684: PUSH2 0x2e26 00002687: JUMP 00002688: JUMPDEST 00002689: SWAP1 0000268a: POP 0000268b: PUSH0 0000268c: PUSH2 0x269e 0000268f: DUP5 00002690: PUSH1 0x01 00002692: PUSH1 0x01 00002694: PUSH1 0x60 00002696: SHL 00002697: SUB 00002698: AND 00002699: DUP7 0000269a: PUSH2 0x2b01 0000269d: JUMP 0000269e: JUMPDEST 0000269f: SWAP1 000026a0: POP 000026a1: PUSH0 000026a2: PUSH2 0x26ae 000026a5: PUSH3 0x093a80 000026a9: TIMESTAMP 000026aa: PUSH2 0x2e80 000026ad: JUMP 000026ae: JUMPDEST 000026af: SWAP1 000026b0: POP 000026b1: DUP2 000026b2: ISZERO 000026b3: PUSH2 0x280d 000026b6: JUMPI 000026b7: PUSH1 0x40 000026b9: DUP1 000026ba: MLOAD 000026bb: PUSH1 0xa0 000026bd: DUP1 000026be: DUP3 000026bf: ADD 000026c0: DUP4 000026c1: MSTORE 000026c2: PUSH1 0x01 000026c4: PUSH1 0x01 000026c6: PUSH1 0x60 000026c8: SHL 000026c9: SUB 000026ca: DUP9 000026cb: DUP2 000026cc: AND 000026cd: DUP1 000026ce: DUP5 000026cf: MSTORE 000026d0: DUP12 000026d1: DUP3 000026d2: AND 000026d3: PUSH1 0x20 000026d5: DUP1 000026d6: DUP7 000026d7: ADD 000026d8: DUP3 000026d9: SWAP1 000026da: MSTORE 000026db: SWAP3 000026dc: DUP11 000026dd: AND 000026de: DUP6 000026df: DUP8 000026e0: ADD 000026e1: DUP2 000026e2: SWAP1 000026e3: MSTORE 000026e4: PUSH0 000026e5: PUSH1 0x60 000026e7: DUP1 000026e8: DUP9 000026e9: ADD 000026ea: DUP3 000026eb: SWAP1 000026ec: MSTORE 000026ed: PUSH1 0x80 000026ef: SWAP8 000026f0: DUP9 000026f1: ADD 000026f2: SWAP2 000026f3: SWAP1 000026f4: SWAP2 000026f5: MSTORE 000026f6: PUSH1 0x0e 000026f8: DUP1 000026f9: SLOAD 000026fa: PUSH1 0x01 000026fc: PUSH1 0x01 000026fe: PUSH1 0xc0 00002700: SHL 00002701: SUB 00002702: NOT 00002703: SWAP1 00002704: DUP2 00002705: AND 00002706: DUP7 00002707: OR 00002708: PUSH1 0x01 0000270a: PUSH1 0x60 0000270c: SHL 0000270d: SWAP1 0000270e: SWAP6 0000270f: MUL 00002710: SWAP5 00002711: SWAP1 00002712: SWAP5 00002713: OR 00002714: SWAP1 00002715: SSTORE 00002716: PUSH1 0x0f 00002718: DUP1 00002719: SLOAD 0000271a: SWAP1 0000271b: SWAP4 0000271c: AND 0000271d: SWAP1 0000271e: SWAP2 0000271f: OR 00002720: SWAP1 00002721: SWAP2 00002722: SSTORE 00002723: PUSH1 0x10 00002725: DUP1 00002726: SLOAD 00002727: PUSH1 0x01 00002729: PUSH1 0x01 0000272b: PUSH1 0x60 0000272d: SHL 0000272e: SUB 0000272f: NOT 00002730: SWAP1 00002731: DUP2 00002732: AND 00002733: SWAP1 00002734: SWAP2 00002735: SSTORE 00002736: DUP7 00002737: MLOAD 00002738: DUP1 00002739: DUP9 0000273a: ADD 0000273b: DUP9 0000273c: MSTORE 0000273d: PUSH6 0xffffffffffff 00002744: DUP10 00002745: DUP2 00002746: AND 00002747: DUP1 00002748: DUP4 00002749: MSTORE 0000274a: SWAP2 0000274b: DUP7 0000274c: ADD 0000274d: DUP13 0000274e: SWAP1 0000274f: MSTORE 00002750: PUSH1 0x11 00002752: DUP1 00002753: SLOAD 00002754: PUSH6 0xffffffffffff 0000275b: NOT 0000275c: AND 0000275d: DUP4 0000275e: OR 0000275f: SWAP1 00002760: SSTORE 00002761: PUSH1 0x12 00002763: DUP13 00002764: SWAP1 00002765: SSTORE 00002766: DUP9 00002767: MLOAD 00002768: SWAP7 00002769: DUP8 0000276a: ADD 0000276b: DUP10 0000276c: MSTORE 0000276d: TIMESTAMP 0000276e: SWAP1 0000276f: DUP2 00002770: AND 00002771: DUP1 00002772: DUP9 00002773: MSTORE 00002774: DUP8 00002775: DUP8 00002776: ADD 00002777: DUP2 00002778: SWAP1 00002779: MSTORE 0000277a: PUSH3 0x093a80 0000277e: DUP9 0000277f: DUP12 00002780: ADD 00002781: MSTORE 00002782: PUSH3 0x015180 00002786: DUP9 00002787: DUP7 00002788: ADD 00002789: MSTORE 0000278a: PUSH2 0x0708 0000278d: SWAP8 0000278e: SWAP1 0000278f: SWAP9 00002790: ADD 00002791: SWAP7 00002792: SWAP1 00002793: SWAP7 00002794: MSTORE 00002795: PUSH1 0x0d 00002797: DUP1 00002798: SLOAD 00002799: SWAP1 0000279a: SWAP3 0000279b: AND 0000279c: DUP8 0000279d: OR 0000279e: PUSH1 0x01 000027a0: PUSH1 0x30 000027a2: SHL 000027a3: SWAP1 000027a4: SWAP8 000027a5: MUL 000027a6: SWAP7 000027a7: SWAP1 000027a8: SWAP7 000027a9: OR 000027aa: PUSH1 0x01 000027ac: PUSH1 0x60 000027ae: SHL 000027af: PUSH1 0x01 000027b1: PUSH1 0xf0 000027b3: SHL 000027b4: SUB 000027b5: NOT 000027b6: AND 000027b7: PUSH13 0x0e1000000002a3000000001275 000027c5: PUSH1 0x67 000027c7: SHL 000027c8: OR 000027c9: SWAP1 000027ca: SSTORE 000027cb: DUP6 000027cc: MLOAD 000027cd: SWAP2 000027ce: DUP3 000027cf: MSTORE 000027d0: SWAP2 000027d1: DUP2 000027d2: ADD 000027d3: SWAP3 000027d4: SWAP1 000027d5: SWAP3 000027d6: MSTORE 000027d7: SWAP3 000027d8: DUP2 000027d9: ADD 000027da: SWAP2 000027db: SWAP1 000027dc: SWAP2 000027dd: MSTORE 000027de: PUSH32 0x035d6743050a54c5c545b7f45bddbd082bf97e098d81e6eb10045ab6a10ab510 000027ff: SWAP2 00002800: ADD 00002801: PUSH1 0x40 00002803: MLOAD 00002804: DUP1 00002805: SWAP2 00002806: SUB 00002807: SWAP1 00002808: LOG1 00002809: PUSH2 0x285c 0000280c: JUMP 0000280d: JUMPDEST 0000280e: PUSH2 0x2820 00002811: ADDRESS 00002812: DUP7 00002813: PUSH1 0x01 00002815: PUSH1 0x01 00002817: PUSH1 0x60 00002819: SHL 0000281a: SUB 0000281b: AND 0000281c: PUSH2 0x1e0e 0000281f: JUMP 00002820: JUMPDEST 00002821: PUSH2 0x282d 00002824: PUSH3 0x093a80 00002828: TIMESTAMP 00002829: PUSH2 0x2e80 0000282c: JUMP 0000282d: JUMPDEST 0000282e: PUSH1 0x11 00002830: DUP1 00002831: SLOAD 00002832: PUSH6 0xffffffffffff 00002839: NOT 0000283a: AND 0000283b: PUSH6 0xffffffffffff 00002842: SWAP3 00002843: SWAP1 00002844: SWAP3 00002845: AND 00002846: SWAP2 00002847: SWAP1 00002848: SWAP2 00002849: OR 0000284a: SWAP1 0000284b: SSTORE 0000284c: PUSH1 0x0e 0000284e: DUP1 0000284f: SLOAD 00002850: PUSH1 0x01 00002852: PUSH1 0x01 00002854: PUSH1 0x60 00002856: SHL 00002857: SUB 00002858: NOT 00002859: AND 0000285a: SWAP1 0000285b: SSTORE 0000285c: JUMPDEST 0000285d: POP 0000285e: POP 0000285f: POP 00002860: POP 00002861: POP 00002862: POP 00002863: JUMPDEST 00002864: POP 00002865: PUSH0 00002866: PUSH1 0x14 00002868: SSTORE 00002869: JUMP 0000286a: JUMPDEST 0000286b: PUSH0 0000286c: DUP1 0000286d: DUP1 0000286e: PUSH0 0000286f: NOT 00002870: DUP6 00002871: DUP8 00002872: MULMOD 00002873: DUP6 00002874: DUP8 00002875: MUL 00002876: SWAP3 00002877: POP 00002878: DUP3 00002879: DUP2 0000287a: LT 0000287b: DUP4 0000287c: DUP3 0000287d: SUB 0000287e: SUB 0000287f: SWAP2 00002880: POP 00002881: POP 00002882: DUP1 00002883: PUSH0 00002884: SUB 00002885: PUSH2 0x289e 00002888: JUMPI 00002889: PUSH0 0000288a: DUP5 0000288b: GT 0000288c: PUSH2 0x2893 0000288f: JUMPI 00002890: PUSH0 00002891: DUP1 00002892: REVERT 00002893: JUMPDEST 00002894: POP 00002895: DUP3 00002896: SWAP1 00002897: DIV 00002898: SWAP1 00002899: POP 0000289a: PUSH2 0x07ef 0000289d: JUMP 0000289e: JUMPDEST 0000289f: DUP1 000028a0: DUP5 000028a1: GT 000028a2: PUSH2 0x28a9 000028a5: JUMPI 000028a6: PUSH0 000028a7: DUP1 000028a8: REVERT 000028a9: JUMPDEST 000028aa: PUSH0 000028ab: DUP5 000028ac: DUP7 000028ad: DUP9 000028ae: MULMOD 000028af: PUSH0 000028b0: DUP7 000028b1: DUP2 000028b2: SUB 000028b3: DUP8 000028b4: AND 000028b5: SWAP7 000028b6: DUP8 000028b7: SWAP1 000028b8: DIV 000028b9: SWAP7 000028ba: PUSH1 0x02 000028bc: PUSH1 0x03 000028be: DUP10 000028bf: MUL 000028c0: DUP2 000028c1: XOR 000028c2: DUP1 000028c3: DUP11 000028c4: MUL 000028c5: DUP3 000028c6: SUB 000028c7: MUL 000028c8: DUP1 000028c9: DUP11 000028ca: MUL 000028cb: DUP3 000028cc: SUB 000028cd: MUL 000028ce: DUP1 000028cf: DUP11 000028d0: MUL 000028d1: DUP3 000028d2: SUB 000028d3: MUL 000028d4: DUP1 000028d5: DUP11 000028d6: MUL 000028d7: DUP3 000028d8: SUB 000028d9: MUL 000028da: DUP1 000028db: DUP11 000028dc: MUL 000028dd: DUP3 000028de: SUB 000028df: MUL 000028e0: DUP1 000028e1: DUP11 000028e2: MUL 000028e3: SWAP1 000028e4: SWAP2 000028e5: SUB 000028e6: MUL 000028e7: SWAP2 000028e8: DUP2 000028e9: SWAP1 000028ea: SUB 000028eb: DUP2 000028ec: SWAP1 000028ed: DIV 000028ee: PUSH1 0x01 000028f0: ADD 000028f1: DUP7 000028f2: DUP5 000028f3: GT 000028f4: SWAP1 000028f5: SWAP6 000028f6: SUB 000028f7: SWAP5 000028f8: SWAP1 000028f9: SWAP5 000028fa: MUL 000028fb: SWAP2 000028fc: SWAP1 000028fd: SWAP5 000028fe: SUB 000028ff: SWAP3 00002900: SWAP1 00002901: SWAP3 00002902: DIV 00002903: SWAP2 00002904: SWAP1 00002905: SWAP2 00002906: OR 00002907: SWAP2 00002908: SWAP1 00002909: SWAP2 0000290a: MUL 0000290b: SWAP2 0000290c: POP 0000290d: POP 0000290e: SWAP4 0000290f: SWAP3 00002910: POP 00002911: POP 00002912: POP 00002913: JUMP 00002914: JUMPDEST 00002915: PUSH0 00002916: DUP1 00002917: DUP4 00002918: PUSH1 0x20 0000291a: ADD 0000291b: MLOAD 0000291c: PUSH6 0xffffffffffff 00002923: AND 00002924: TIMESTAMP 00002925: PUSH2 0x292e 00002928: SWAP2 00002929: SWAP1 0000292a: PUSH2 0x2de8 0000292d: JUMP 0000292e: JUMPDEST 0000292f: SWAP1 00002930: POP 00002931: DUP4 00002932: PUSH1 0x40 00002934: ADD 00002935: MLOAD 00002936: PUSH6 0xffffffffffff 0000293d: AND 0000293e: DUP2 0000293f: DUP5 00002940: PUSH1 0x20 00002942: ADD 00002943: MLOAD 00002944: PUSH1 0x01 00002946: PUSH1 0x01 00002948: PUSH1 0x60 0000294a: SHL 0000294b: SUB 0000294c: AND 0000294d: PUSH2 0x1fd5 00002950: SWAP2 00002951: SWAP1 00002952: PUSH2 0x2dfb 00002955: JUMP 00002956: JUMPDEST 00002957: PUSH0 00002958: DUP1 00002959: PUSH0 0000295a: DUP4 0000295b: PUSH1 0x60 0000295d: ADD 0000295e: MLOAD 0000295f: PUSH2 0x296f 00002962: JUMPI 00002963: POP 00002964: PUSH0 00002965: SWAP2 00002966: POP 00002967: DUP2 00002968: SWAP1 00002969: POP 0000296a: DUP1 0000296b: PUSH2 0x29e0 0000296e: JUMP 0000296f: JUMPDEST 00002970: PUSH0 00002971: DUP5 00002972: PUSH1 0x20 00002974: ADD 00002975: MLOAD 00002976: TIMESTAMP 00002977: PUSH2 0x2980 0000297a: SWAP2 0000297b: SWAP1 0000297c: PUSH2 0x2ed2 0000297f: JUMP 00002980: JUMPDEST 00002981: SWAP1 00002982: POP 00002983: PUSH0 00002984: DUP6 00002985: PUSH1 0x40 00002987: ADD 00002988: MLOAD 00002989: PUSH6 0xffffffffffff 00002990: AND 00002991: DUP3 00002992: PUSH6 0xffffffffffff 00002999: AND 0000299a: LT 0000299b: SWAP1 0000299c: POP 0000299d: PUSH0 0000299e: DUP2 0000299f: PUSH2 0x29a9 000029a2: JUMPI 000029a3: DUP7 000029a4: MLOAD 000029a5: PUSH2 0x29d7 000029a8: JUMP 000029a9: JUMPDEST 000029aa: DUP7 000029ab: PUSH1 0x40 000029ad: ADD 000029ae: MLOAD 000029af: PUSH6 0xffffffffffff 000029b6: AND 000029b7: DUP4 000029b8: PUSH6 0xffffffffffff 000029bf: AND 000029c0: DUP9 000029c1: PUSH0 000029c2: ADD 000029c3: MLOAD 000029c4: PUSH2 0x29cd 000029c7: SWAP2 000029c8: SWAP1 000029c9: PUSH2 0x2f3b 000029cc: JUMP 000029cd: JUMPDEST 000029ce: PUSH2 0x29d7 000029d1: SWAP2 000029d2: SWAP1 000029d3: PUSH2 0x2f5e 000029d6: JUMP 000029d7: JUMPDEST 000029d8: SWAP6 000029d9: POP 000029da: SWAP2 000029db: SWAP4 000029dc: POP 000029dd: SWAP2 000029de: POP 000029df: POP 000029e0: JUMPDEST 000029e1: SWAP2 000029e2: SWAP4 000029e3: SWAP1 000029e4: SWAP3 000029e5: POP 000029e6: JUMP 000029e7: JUMPDEST 000029e8: PUSH0 000029e9: DUP2 000029ea: PUSH2 0x29fb 000029ed: DUP5 000029ee: PUSH8 0x0de0b6b3a7640000 000029f7: PUSH2 0x2dfb 000029fa: JUMP 000029fb: JUMPDEST 000029fc: PUSH2 0x07ef 000029ff: SWAP2 00002a00: SWAP1 00002a01: PUSH2 0x2e26 00002a04: JUMP 00002a05: JUMPDEST 00002a06: PUSH0 00002a07: DUP1 00002a08: PUSH2 0x2a10 00002a0b: DUP4 00002a0c: PUSH2 0x2956 00002a0f: JUMP 00002a10: JUMPDEST 00002a11: POP 00002a12: POP 00002a13: PUSH1 0x01 00002a15: PUSH1 0x01 00002a17: PUSH1 0x80 00002a19: SHL 00002a1a: SUB 00002a1b: AND 00002a1c: SWAP1 00002a1d: POP 00002a1e: PUSH2 0x1fdf 00002a21: DUP2 00002a22: DUP6 00002a23: PUSH2 0x2de8 00002a26: JUMP 00002a27: JUMPDEST 00002a28: PUSH0 00002a29: DUP1 00002a2a: PUSH32 0x00000000000000000000000047287d8d7c1a5854aa11868e7d2186b138069f84 00002a4b: SWAP1 00002a4c: POP 00002a4d: PUSH0 00002a4e: DUP1 00002a4f: PUSH1 0x40 00002a51: MLOAD 00002a52: PUSH4 0x0240bc6b 00002a57: PUSH1 0xe2 00002a59: SHL 00002a5a: DUP2 00002a5b: MSTORE 00002a5c: PUSH0 00002a5d: DUP1 00002a5e: PUSH1 0x04 00002a60: DUP4 00002a61: DUP8 00002a62: GAS 00002a63: STATICCALL 00002a64: SWAP1 00002a65: POP 00002a66: DUP1 00002a67: PUSH2 0x2a6e 00002a6a: JUMPI 00002a6b: PUSH0 00002a6c: DUP1 00002a6d: REVERT 00002a6e: JUMPDEST 00002a6f: POP 00002a70: PUSH1 0x20 00002a72: PUSH0 00002a73: DUP1 00002a74: RETURNDATACOPY 00002a75: PUSH1 0x20 00002a77: DUP1 00002a78: PUSH1 0x20 00002a7a: RETURNDATACOPY 00002a7b: POP 00002a7c: POP 00002a7d: PUSH0 00002a7e: MLOAD 00002a7f: PUSH1 0x20 00002a81: MLOAD 00002a82: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 00002aa3: ISZERO 00002aa4: PUSH2 0x2ad3 00002aa7: JUMPI 00002aa8: PUSH2 0x2acc 00002aab: DUP2 00002aac: PUSH1 0x01 00002aae: PUSH1 0x01 00002ab0: PUSH1 0x70 00002ab2: SHL 00002ab3: SUB 00002ab4: AND 00002ab5: PUSH8 0x0de0b6b3a7640000 00002abe: DUP5 00002abf: PUSH1 0x01 00002ac1: PUSH1 0x01 00002ac3: PUSH1 0x70 00002ac5: SHL 00002ac6: SUB 00002ac7: AND 00002ac8: PUSH2 0x286a 00002acb: JUMP 00002acc: JUMPDEST 00002acd: SWAP4 00002ace: POP 00002acf: PUSH2 0x2afb 00002ad2: JUMP 00002ad3: JUMPDEST 00002ad4: PUSH2 0x2af8 00002ad7: DUP3 00002ad8: PUSH1 0x01 00002ada: PUSH1 0x01 00002adc: PUSH1 0x70 00002ade: SHL 00002adf: SUB 00002ae0: AND 00002ae1: PUSH8 0x0de0b6b3a7640000 00002aea: DUP4 00002aeb: PUSH1 0x01 00002aed: PUSH1 0x01 00002aef: PUSH1 0x70 00002af1: SHL 00002af2: SUB 00002af3: AND 00002af4: PUSH2 0x286a 00002af7: JUMP 00002af8: JUMPDEST 00002af9: SWAP4 00002afa: POP 00002afb: JUMPDEST 00002afc: POP 00002afd: POP 00002afe: POP 00002aff: SWAP1 00002b00: JUMP 00002b01: JUMPDEST 00002b02: PUSH1 0x04 00002b04: SLOAD 00002b05: PUSH0 00002b06: SWAP1 00002b07: DUP2 00002b08: PUSH2 0x2b11 00002b0b: DUP6 00002b0c: DUP4 00002b0d: PUSH2 0x2de8 00002b10: JUMP 00002b11: JUMPDEST 00002b12: PUSH2 0x2b23 00002b15: SELFBALANCE 00002b16: PUSH8 0x0de0b6b3a7640000 00002b1f: PUSH2 0x2dfb 00002b22: JUMP 00002b23: JUMPDEST 00002b24: PUSH2 0x2b2d 00002b27: SWAP2 00002b28: SWAP1 00002b29: PUSH2 0x2e26 00002b2c: JUMP 00002b2d: JUMPDEST 00002b2e: SWAP1 00002b2f: POP 00002b30: PUSH0 00002b31: DUP3 00002b32: PUSH2 0x2b3b 00002b35: DUP7 00002b36: DUP9 00002b37: PUSH2 0x2dfb 00002b3a: JUMP 00002b3b: JUMPDEST 00002b3c: PUSH2 0x2b4d 00002b3f: SELFBALANCE 00002b40: PUSH8 0x0de0b6b3a7640000 00002b49: PUSH2 0x2dfb 00002b4c: JUMP 00002b4d: JUMPDEST 00002b4e: PUSH2 0x2b57 00002b51: SWAP2 00002b52: SWAP1 00002b53: PUSH2 0x2e80 00002b56: JUMP 00002b57: JUMPDEST 00002b58: PUSH2 0x2b61 00002b5b: SWAP2 00002b5c: SWAP1 00002b5d: PUSH2 0x2e26 00002b60: JUMP 00002b61: JUMPDEST 00002b62: SWAP1 00002b63: POP 00002b64: DUP1 00002b65: DUP3 00002b66: LT 00002b67: ISZERO 00002b68: PUSH2 0x2b72 00002b6b: JUMPI 00002b6c: PUSH1 0x01 00002b6e: PUSH2 0x2b74 00002b71: JUMP 00002b72: JUMPDEST 00002b73: PUSH0 00002b74: JUMPDEST 00002b75: SWAP7 00002b76: SWAP6 00002b77: POP 00002b78: POP 00002b79: POP 00002b7a: POP 00002b7b: POP 00002b7c: POP 00002b7d: JUMP 00002b7e: JUMPDEST 00002b7f: PUSH0 00002b80: DUP1 00002b81: PUSH32 0x00000000000000000000000047287d8d7c1a5854aa11868e7d2186b138069f84 00002ba2: SWAP1 00002ba3: POP 00002ba4: PUSH0 00002ba5: DUP1 00002ba6: PUSH0 00002ba7: PUSH1 0x40 00002ba9: MLOAD 00002baa: PUSH4 0x0240bc6b 00002baf: PUSH1 0xe2 00002bb1: SHL 00002bb2: DUP2 00002bb3: MSTORE 00002bb4: PUSH0 00002bb5: DUP1 00002bb6: PUSH1 0x04 00002bb8: DUP4 00002bb9: DUP9 00002bba: GAS 00002bbb: STATICCALL 00002bbc: DUP1 00002bbd: PUSH2 0x2bc4 00002bc0: JUMPI 00002bc1: PUSH0 00002bc2: DUP1 00002bc3: REVERT 00002bc4: JUMPDEST 00002bc5: POP 00002bc6: PUSH1 0x20 00002bc8: PUSH0 00002bc9: DUP1 00002bca: RETURNDATACOPY 00002bcb: PUSH1 0x20 00002bcd: DUP1 00002bce: PUSH1 0x20 00002bd0: RETURNDATACOPY 00002bd1: PUSH0 00002bd2: MLOAD 00002bd3: SWAP4 00002bd4: POP 00002bd5: PUSH1 0x20 00002bd7: MLOAD 00002bd8: SWAP3 00002bd9: POP 00002bda: PUSH4 0x18160ddd 00002bdf: PUSH1 0xe0 00002be1: SHL 00002be2: PUSH1 0x20 00002be4: DUP3 00002be5: ADD 00002be6: MSTORE 00002be7: PUSH1 0x20 00002be9: PUSH0 00002bea: PUSH1 0x04 00002bec: PUSH1 0x20 00002bee: DUP5 00002bef: ADD 00002bf0: DUP9 00002bf1: GAS 00002bf2: STATICCALL 00002bf3: POP 00002bf4: POP 00002bf5: PUSH0 00002bf6: MLOAD 00002bf7: SWAP1 00002bf8: POP 00002bf9: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 00002c1a: ISZERO 00002c1b: PUSH2 0x2c4b 00002c1e: JUMPI 00002c1f: PUSH2 0x2c44 00002c22: PUSH2 0x2c2c 00002c25: DUP5 00002c26: PUSH1 0x02 00002c28: PUSH2 0x2f83 00002c2b: JUMP 00002c2c: JUMPDEST 00002c2d: PUSH1 0x01 00002c2f: PUSH1 0x01 00002c31: PUSH1 0x70 00002c33: SHL 00002c34: SUB 00002c35: AND 00002c36: PUSH8 0x0de0b6b3a7640000 00002c3f: DUP4 00002c40: PUSH2 0x286a 00002c43: JUMP 00002c44: JUMPDEST 00002c45: SWAP5 00002c46: POP 00002c47: PUSH2 0x2c5c 00002c4a: JUMP 00002c4b: JUMPDEST 00002c4c: PUSH2 0x2c59 00002c4f: PUSH2 0x2c2c 00002c52: DUP4 00002c53: PUSH1 0x02 00002c55: PUSH2 0x2f83 00002c58: JUMP 00002c59: JUMPDEST 00002c5a: SWAP5 00002c5b: POP 00002c5c: JUMPDEST 00002c5d: POP 00002c5e: POP 00002c5f: POP 00002c60: POP 00002c61: SWAP1 00002c62: JUMP 00002c63: JUMPDEST 00002c64: PUSH1 0x40 00002c66: DUP1 00002c67: MLOAD 00002c68: PUSH1 0xa0 00002c6a: DUP2 00002c6b: ADD 00002c6c: DUP3 00002c6d: MSTORE 00002c6e: PUSH0 00002c6f: DUP1 00002c70: DUP3 00002c71: MSTORE 00002c72: PUSH1 0x20 00002c74: DUP3 00002c75: ADD 00002c76: DUP2 00002c77: SWAP1 00002c78: MSTORE 00002c79: SWAP2 00002c7a: DUP2 00002c7b: ADD 00002c7c: DUP3 00002c7d: SWAP1 00002c7e: MSTORE 00002c7f: PUSH1 0x60 00002c81: DUP2 00002c82: ADD 00002c83: DUP3 00002c84: SWAP1 00002c85: MSTORE 00002c86: PUSH1 0x80 00002c88: DUP2 00002c89: ADD 00002c8a: SWAP2 00002c8b: SWAP1 00002c8c: SWAP2 00002c8d: MSTORE 00002c8e: SWAP1 00002c8f: JUMP 00002c90: JUMPDEST 00002c91: PUSH0 00002c92: PUSH1 0x20 00002c94: DUP1 00002c95: DUP4 00002c96: MSTORE 00002c97: DUP4 00002c98: MLOAD 00002c99: DUP1 00002c9a: PUSH1 0x20 00002c9c: DUP6 00002c9d: ADD 00002c9e: MSTORE 00002c9f: PUSH0 00002ca0: JUMPDEST 00002ca1: DUP2 00002ca2: DUP2 00002ca3: LT 00002ca4: ISZERO 00002ca5: PUSH2 0x2cbc 00002ca8: JUMPI 00002ca9: DUP6 00002caa: DUP2 00002cab: ADD 00002cac: DUP4 00002cad: ADD 00002cae: MLOAD 00002caf: DUP6 00002cb0: DUP3 00002cb1: ADD 00002cb2: PUSH1 0x40 00002cb4: ADD 00002cb5: MSTORE 00002cb6: DUP3 00002cb7: ADD 00002cb8: PUSH2 0x2ca0 00002cbb: JUMP 00002cbc: JUMPDEST 00002cbd: POP 00002cbe: PUSH0 00002cbf: PUSH1 0x40 00002cc1: DUP3 00002cc2: DUP7 00002cc3: ADD 00002cc4: ADD 00002cc5: MSTORE 00002cc6: PUSH1 0x40 00002cc8: PUSH1 0x1f 00002cca: NOT 00002ccb: PUSH1 0x1f 00002ccd: DUP4 00002cce: ADD 00002ccf: AND 00002cd0: DUP6 00002cd1: ADD 00002cd2: ADD 00002cd3: SWAP3 00002cd4: POP 00002cd5: POP 00002cd6: POP 00002cd7: SWAP3 00002cd8: SWAP2 00002cd9: POP 00002cda: POP 00002cdb: JUMP 00002cdc: JUMPDEST 00002cdd: DUP1 00002cde: CALLDATALOAD 00002cdf: PUSH1 0x01 00002ce1: PUSH1 0x01 00002ce3: PUSH1 0xa0 00002ce5: SHL 00002ce6: SUB 00002ce7: DUP2 00002ce8: AND 00002ce9: DUP2 00002cea: EQ 00002ceb: PUSH2 0x23da 00002cee: JUMPI 00002cef: PUSH0 00002cf0: DUP1 00002cf1: REVERT 00002cf2: JUMPDEST 00002cf3: PUSH0 00002cf4: DUP1 00002cf5: PUSH1 0x40 00002cf7: DUP4 00002cf8: DUP6 00002cf9: SUB 00002cfa: SLT 00002cfb: ISZERO 00002cfc: PUSH2 0x2d03 00002cff: JUMPI 00002d00: PUSH0 00002d01: DUP1 00002d02: REVERT 00002d03: JUMPDEST 00002d04: PUSH2 0x2d0c 00002d07: DUP4 00002d08: PUSH2 0x2cdc 00002d0b: JUMP 00002d0c: JUMPDEST 00002d0d: SWAP5 00002d0e: PUSH1 0x20 00002d10: SWAP4 00002d11: SWAP1 00002d12: SWAP4 00002d13: ADD 00002d14: CALLDATALOAD 00002d15: SWAP4 00002d16: POP 00002d17: POP 00002d18: POP 00002d19: JUMP 00002d1a: JUMPDEST 00002d1b: PUSH0 00002d1c: DUP1 00002d1d: PUSH0 00002d1e: PUSH1 0x60 00002d20: DUP5 00002d21: DUP7 00002d22: SUB 00002d23: SLT 00002d24: ISZERO 00002d25: PUSH2 0x2d2c 00002d28: JUMPI 00002d29: PUSH0 00002d2a: DUP1 00002d2b: REVERT 00002d2c: JUMPDEST 00002d2d: PUSH2 0x2d35 00002d30: DUP5 00002d31: PUSH2 0x2cdc 00002d34: JUMP 00002d35: JUMPDEST 00002d36: SWAP3 00002d37: POP 00002d38: PUSH2 0x2d43 00002d3b: PUSH1 0x20 00002d3d: DUP6 00002d3e: ADD 00002d3f: PUSH2 0x2cdc 00002d42: JUMP 00002d43: JUMPDEST 00002d44: SWAP2 00002d45: POP 00002d46: PUSH1 0x40 00002d48: DUP5 00002d49: ADD 00002d4a: CALLDATALOAD 00002d4b: SWAP1 00002d4c: POP 00002d4d: SWAP3 00002d4e: POP 00002d4f: SWAP3 00002d50: POP 00002d51: SWAP3 00002d52: JUMP 00002d53: JUMPDEST 00002d54: PUSH0 00002d55: PUSH1 0x20 00002d57: DUP3 00002d58: DUP5 00002d59: SUB 00002d5a: SLT 00002d5b: ISZERO 00002d5c: PUSH2 0x2d63 00002d5f: JUMPI 00002d60: PUSH0 00002d61: DUP1 00002d62: REVERT 00002d63: JUMPDEST 00002d64: POP 00002d65: CALLDATALOAD 00002d66: SWAP2 00002d67: SWAP1 00002d68: POP 00002d69: JUMP 00002d6a: JUMPDEST 00002d6b: PUSH0 00002d6c: PUSH1 0x20 00002d6e: DUP3 00002d6f: DUP5 00002d70: SUB 00002d71: SLT 00002d72: ISZERO 00002d73: PUSH2 0x2d7a 00002d76: JUMPI 00002d77: PUSH0 00002d78: DUP1 00002d79: REVERT 00002d7a: JUMPDEST 00002d7b: PUSH2 0x07ef 00002d7e: DUP3 00002d7f: PUSH2 0x2cdc 00002d82: JUMP 00002d83: JUMPDEST 00002d84: PUSH0 00002d85: DUP1 00002d86: PUSH1 0x40 00002d88: DUP4 00002d89: DUP6 00002d8a: SUB 00002d8b: SLT 00002d8c: ISZERO 00002d8d: PUSH2 0x2d94 00002d90: JUMPI 00002d91: PUSH0 00002d92: DUP1 00002d93: REVERT 00002d94: JUMPDEST 00002d95: POP 00002d96: POP 00002d97: DUP1 00002d98: CALLDATALOAD 00002d99: SWAP3 00002d9a: PUSH1 0x20 00002d9c: SWAP1 00002d9d: SWAP2 00002d9e: ADD 00002d9f: CALLDATALOAD 00002da0: SWAP2 00002da1: POP 00002da2: JUMP 00002da3: JUMPDEST 00002da4: PUSH0 00002da5: DUP1 00002da6: PUSH1 0x40 00002da8: DUP4 00002da9: DUP6 00002daa: SUB 00002dab: SLT 00002dac: ISZERO 00002dad: PUSH2 0x2db4 00002db0: JUMPI 00002db1: PUSH0 00002db2: DUP1 00002db3: REVERT 00002db4: JUMPDEST 00002db5: PUSH2 0x2dbd 00002db8: DUP4 00002db9: PUSH2 0x2cdc 00002dbc: JUMP 00002dbd: JUMPDEST 00002dbe: SWAP2 00002dbf: POP 00002dc0: PUSH2 0x2dcb 00002dc3: PUSH1 0x20 00002dc5: DUP5 00002dc6: ADD 00002dc7: PUSH2 0x2cdc 00002dca: JUMP 00002dcb: JUMPDEST 00002dcc: SWAP1 00002dcd: POP 00002dce: SWAP3 00002dcf: POP 00002dd0: SWAP3 00002dd1: SWAP1 00002dd2: POP 00002dd3: JUMP 00002dd4: JUMPDEST 00002dd5: PUSH4 0x4e487b71 00002dda: PUSH1 0xe0 00002ddc: SHL 00002ddd: PUSH0 00002dde: MSTORE 00002ddf: PUSH1 0x11 00002de1: PUSH1 0x04 00002de3: MSTORE 00002de4: PUSH1 0x24 00002de6: PUSH0 00002de7: REVERT 00002de8: JUMPDEST 00002de9: DUP2 00002dea: DUP2 00002deb: SUB 00002dec: DUP2 00002ded: DUP2 00002dee: GT 00002def: ISZERO 00002df0: PUSH2 0x071c 00002df3: JUMPI 00002df4: PUSH2 0x071c 00002df7: PUSH2 0x2dd4 00002dfa: JUMP 00002dfb: JUMPDEST 00002dfc: DUP1 00002dfd: DUP3 00002dfe: MUL 00002dff: DUP2 00002e00: ISZERO 00002e01: DUP3 00002e02: DUP3 00002e03: DIV 00002e04: DUP5 00002e05: EQ 00002e06: OR 00002e07: PUSH2 0x071c 00002e0a: JUMPI 00002e0b: PUSH2 0x071c 00002e0e: PUSH2 0x2dd4 00002e11: JUMP 00002e12: JUMPDEST 00002e13: PUSH4 0x4e487b71 00002e18: PUSH1 0xe0 00002e1a: SHL 00002e1b: PUSH0 00002e1c: MSTORE 00002e1d: PUSH1 0x12 00002e1f: PUSH1 0x04 00002e21: MSTORE 00002e22: PUSH1 0x24 00002e24: PUSH0 00002e25: REVERT 00002e26: JUMPDEST 00002e27: PUSH0 00002e28: DUP3 00002e29: PUSH2 0x2e34 00002e2c: JUMPI 00002e2d: PUSH2 0x2e34 00002e30: PUSH2 0x2e12 00002e33: JUMP 00002e34: JUMPDEST 00002e35: POP 00002e36: DIV 00002e37: SWAP1 00002e38: JUMP 00002e39: JUMPDEST 00002e3a: PUSH1 0x01 00002e3c: PUSH1 0x01 00002e3e: PUSH1 0x60 00002e40: SHL 00002e41: SUB 00002e42: DUP3 00002e43: DUP2 00002e44: AND 00002e45: DUP3 00002e46: DUP3 00002e47: AND 00002e48: SUB 00002e49: SWAP1 00002e4a: DUP1 00002e4b: DUP3 00002e4c: GT 00002e4d: ISZERO 00002e4e: PUSH2 0x2e59 00002e51: JUMPI 00002e52: PUSH2 0x2e59 00002e55: PUSH2 0x2dd4 00002e58: JUMP 00002e59: JUMPDEST 00002e5a: POP 00002e5b: SWAP3 00002e5c: SWAP2 00002e5d: POP 00002e5e: POP 00002e5f: JUMP 00002e60: JUMPDEST 00002e61: PUSH1 0x01 00002e63: PUSH1 0x01 00002e65: PUSH1 0x60 00002e67: SHL 00002e68: SUB 00002e69: DUP2 00002e6a: DUP2 00002e6b: AND 00002e6c: DUP4 00002e6d: DUP3 00002e6e: AND 00002e6f: ADD 00002e70: SWAP1 00002e71: DUP1 00002e72: DUP3 00002e73: GT 00002e74: ISZERO 00002e75: PUSH2 0x2e59 00002e78: JUMPI 00002e79: PUSH2 0x2e59 00002e7c: PUSH2 0x2dd4 00002e7f: JUMP 00002e80: JUMPDEST 00002e81: DUP1 00002e82: DUP3 00002e83: ADD 00002e84: DUP1 00002e85: DUP3 00002e86: GT 00002e87: ISZERO 00002e88: PUSH2 0x071c 00002e8b: JUMPI 00002e8c: PUSH2 0x071c 00002e8f: PUSH2 0x2dd4 00002e92: JUMP 00002e93: JUMPDEST 00002e94: PUSH0 00002e95: PUSH1 0x20 00002e97: DUP3 00002e98: DUP5 00002e99: SUB 00002e9a: SLT 00002e9b: ISZERO 00002e9c: PUSH2 0x2ea3 00002e9f: JUMPI 00002ea0: PUSH0 00002ea1: DUP1 00002ea2: REVERT 00002ea3: JUMPDEST 00002ea4: DUP2 00002ea5: MLOAD 00002ea6: DUP1 00002ea7: ISZERO 00002ea8: ISZERO 00002ea9: DUP2 00002eaa: EQ 00002eab: PUSH2 0x07ef 00002eae: JUMPI 00002eaf: PUSH0 00002eb0: DUP1 00002eb1: REVERT 00002eb2: JUMPDEST 00002eb3: PUSH1 0x01 00002eb5: PUSH1 0x01 00002eb7: PUSH1 0x80 00002eb9: SHL 00002eba: SUB 00002ebb: DUP3 00002ebc: DUP2 00002ebd: AND 00002ebe: DUP3 00002ebf: DUP3 00002ec0: AND 00002ec1: SUB 00002ec2: SWAP1 00002ec3: DUP1 00002ec4: DUP3 00002ec5: GT 00002ec6: ISZERO 00002ec7: PUSH2 0x2e59 00002eca: JUMPI 00002ecb: PUSH2 0x2e59 00002ece: PUSH2 0x2dd4 00002ed1: JUMP 00002ed2: JUMPDEST 00002ed3: PUSH6 0xffffffffffff 00002eda: DUP3 00002edb: DUP2 00002edc: AND 00002edd: DUP3 00002ede: DUP3 00002edf: AND 00002ee0: SUB 00002ee1: SWAP1 00002ee2: DUP1 00002ee3: DUP3 00002ee4: GT 00002ee5: ISZERO 00002ee6: PUSH2 0x2e59 00002ee9: JUMPI 00002eea: PUSH2 0x2e59 00002eed: PUSH2 0x2dd4 00002ef0: JUMP 00002ef1: JUMPDEST 00002ef2: PUSH6 0xffffffffffff 00002ef9: DUP2 00002efa: DUP2 00002efb: AND 00002efc: DUP4 00002efd: DUP3 00002efe: AND 00002eff: ADD 00002f00: SWAP1 00002f01: DUP1 00002f02: DUP3 00002f03: GT 00002f04: ISZERO 00002f05: PUSH2 0x2e59 00002f08: JUMPI 00002f09: PUSH2 0x2e59 00002f0c: PUSH2 0x2dd4 00002f0f: JUMP 00002f10: JUMPDEST 00002f11: PUSH1 0x01 00002f13: PUSH1 0x01 00002f15: PUSH1 0x60 00002f17: SHL 00002f18: SUB 00002f19: DUP2 00002f1a: DUP2 00002f1b: AND 00002f1c: DUP4 00002f1d: DUP3 00002f1e: AND 00002f1f: MUL 00002f20: DUP1 00002f21: DUP3 00002f22: AND 00002f23: SWAP2 00002f24: SWAP1 00002f25: DUP3 00002f26: DUP2 00002f27: EQ 00002f28: PUSH2 0x2f33 00002f2b: JUMPI 00002f2c: PUSH2 0x2f33 00002f2f: PUSH2 0x2dd4 00002f32: JUMP 00002f33: JUMPDEST 00002f34: POP 00002f35: POP 00002f36: SWAP3 00002f37: SWAP2 00002f38: POP 00002f39: POP 00002f3a: JUMP 00002f3b: JUMPDEST 00002f3c: PUSH1 0x01 00002f3e: PUSH1 0x01 00002f40: PUSH1 0x80 00002f42: SHL 00002f43: SUB 00002f44: DUP2 00002f45: DUP2 00002f46: AND 00002f47: DUP4 00002f48: DUP3 00002f49: AND 00002f4a: MUL 00002f4b: DUP1 00002f4c: DUP3 00002f4d: AND 00002f4e: SWAP2 00002f4f: SWAP1 00002f50: DUP3 00002f51: DUP2 00002f52: EQ 00002f53: PUSH2 0x2f33 00002f56: JUMPI 00002f57: PUSH2 0x2f33 00002f5a: PUSH2 0x2dd4 00002f5d: JUMP 00002f5e: JUMPDEST 00002f5f: PUSH0 00002f60: PUSH1 0x01 00002f62: PUSH1 0x01 00002f64: PUSH1 0x80 00002f66: SHL 00002f67: SUB 00002f68: DUP1 00002f69: DUP5 00002f6a: AND 00002f6b: DUP1 00002f6c: PUSH2 0x2f77 00002f6f: JUMPI 00002f70: PUSH2 0x2f77 00002f73: PUSH2 0x2e12 00002f76: JUMP 00002f77: JUMPDEST 00002f78: SWAP3 00002f79: AND 00002f7a: SWAP2 00002f7b: SWAP1 00002f7c: SWAP2 00002f7d: DIV 00002f7e: SWAP3 00002f7f: SWAP2 00002f80: POP 00002f81: POP 00002f82: JUMP 00002f83: JUMPDEST 00002f84: PUSH1 0x01 00002f86: PUSH1 0x01 00002f88: PUSH1 0x70 00002f8a: SHL 00002f8b: SUB 00002f8c: DUP2 00002f8d: DUP2 00002f8e: AND 00002f8f: DUP4 00002f90: DUP3 00002f91: AND 00002f92: MUL 00002f93: DUP1 00002f94: DUP3 00002f95: AND 00002f96: SWAP2 00002f97: SWAP1 00002f98: DUP3 00002f99: DUP2 00002f9a: EQ 00002f9b: PUSH2 0x2f33 00002f9e: JUMPI 00002f9f: PUSH2 0x2f33 00002fa2: PUSH2 0x2dd4 00002fa5: JUMP 00002fa6: INVALID 00002fa7: UNKNOWN(0xDD) 00002fa8: CALLCODE 00002fa9: MSTORE 00002faa: UNKNOWN(0xAD) 00002fab: SHL 00002fac: UNKNOWN(0xE2) 00002fad: UNKNOWN(0xC8) 00002fae: SWAP12 00002faf: PUSH10 0xc2b068fc378daa952ba7 00002fba: CALL 00002fbb: PUSH4 0xc4a11628 00002fc0: CREATE2 00002fc1: GAS 00002fc2: UNKNOWN(0x4D) 00002fc3: CREATE2 00002fc4: UNKNOWN(0x23) 00002fc5: UNKNOWN(0xB3) 00002fc6: UNKNOWN(0xEF) 00002fc7: LOG2 00002fc8: PUSH5 0x6970667358 00002fce: UNKNOWN(0x22) 00002fcf: SLT 00002fd0: KECCAK256 00002fd1: UNKNOWN(0xCA) 00002fd2: DELEGATECALL 00002fd3: UNKNOWN(0xE3) 00002fd4: UNKNOWN(0xB4) 00002fd5: UNKNOWN(0x22) 00002fd6: UNKNOWN(0x0F) 00002fd7: MOD 00002fd8: UNKNOWN(0xC0) 00002fd9: GT 00002fda: UNKNOWN(0xDE) 00002fdb: UNKNOWN(0xC8) 00002fdc: UNKNOWN(0x26) 00002fdd: SWAP14 00002fde: UNKNOWN(0xE8) 00002fdf: UNKNOWN(0xB0) 00002fe0: STOP 00002fe1: JUMPDEST 00002fe2: UNKNOWN(0xE1) 00002fe3: PUSH27
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0xf40ba1d4cf9cb8f48e44ef37dc76fcab61f84ccf2786669981111c390631b270
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0xf40ba1d4cf9cb8f48e44ef37dc76fcab61f84ccf2786669981111c390631b270",
"confirmed": false,
"trace_mode": "callTracer",
"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": "0xd926de1c",
"selector": "0xd926de1c",
"calldata_variants": [
"0xd926de1c",
"0xd926de1c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb006a75",
"selector": "0xdb006a75",
"calldata_variants": [
"0xdb006a75",
"0xdb006a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8980b3",
"selector": "0xdf8980b3",
"calldata_variants": [
"0xdf8980b3",
"0xdf8980b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedd12a5",
"selector": "0xbedd12a5",
"calldata_variants": [
"0xbedd12a5",
"0xbedd12a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc5b748c0",
"selector": "0xc5b748c0",
"calldata_variants": [
"0xc5b748c0",
"0xc5b748c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7ccfb0b",
"selector": "0xd7ccfb0b",
"calldata_variants": [
"0xd7ccfb0b",
"0xd7ccfb0b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x64c9ec6f",
"selector": "0x64c9ec6f",
"calldata_variants": [
"0x64c9ec6f",
"0x64c9ec6f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 12242,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1395,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 2350,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4372,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4403,
"type": "msg_sender_eq_const",
"value": 1.3104632009104606e+48
},
{
"pc": 4759,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 1373,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 2328,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4350,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4381,
"type": "msg_sender_eq_const",
"value": "0xe58b33c813ac4077bd2519de90fccb189a19fa71"
},
{
"pc": 4737,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
}
],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | slither | KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) ignores return value by IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164) | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "unchecked-transfer",
"elements": [
{
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
},
{
"name": "IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount)",
"type": "node",
"source_mapping": {
"lines": [
164
],
"start": 6824,
"length": 81,
"ending_column": 94,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
}
}
}
],
"locations": [
{
"file": "src/KotoV3.sol",
"name": "bondLp",
"type": "function",
"lines": [
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
]
},
{
"file": "src/KotoV3.sol",
"name": "IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount)",
"type": "node",
"lines": [
164
]
}
],
"description": "KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201) ignores return value by IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164)"
}
|
| medium | reentrancy | slither | Reentrancy in KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
},
{
"name": "IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount)",
"type": "node",
"source_mapping": {
"lines": [
164
],
"start": 6824,
"length": 81,
"ending_column": 94,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
}
}
},
{
"name": "lpMarket = _market",
"type": "node",
"source_mapping": {
"lines": [
196
],
"start": 8361,
"length": 18,
"ending_column": 31,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"additional_fields": {
"variable_name": "lpMarket",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
}
}
},
{
"name": "lpTerm = _term",
"type": "node",
"source_mapping": {
"lines": [
197
],
"start": 8393,
"length": 14,
"ending_column": 27,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"additional_fields": {
"variable_name": "lpTerm",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "bondLp",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6628,
"length": 1864,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
},
"type_specific_fields": {
"parent": {
"name": "KotoV3",
"type": "contract",
"source_mapping": {
"lines": [
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,
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,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635
],
"start": 936,
"length": 25720,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/KotoV3.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-mivjhbkt/src/KotoV3.sol",
"filename_relative": "src/KotoV3.sol"
}
},
"signature": "bondLp(uint256)"
}
}
}
}
],
"locations": [
{
"file": "src/KotoV3.sol",
"name": "bondLp",
"type": "function",
"lines": [
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
]
},
{
"file": "src/KotoV3.sol",
"name": "IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount)",
"type": "node",
"lines": [
164
]
},
{
"file": "src/KotoV3.sol",
"name": "lpMarket = _market",
"type": "node",
"lines": [
196
]
},
{
"file": "src/KotoV3.sol",
"name": "lpTerm = _term",
"type": "node",
"lines": [
197
]
}
],
"description": "Reentrancy in KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201):\n\tExternal calls:\n\t- IERC20Minimal(pair).transferFrom(msg.sender,address(BOND_DEPOSITORY),_lpAmount) (src/KotoV3.sol#164)\n\tState variables written after the call(s):\n\t- lpMarket = _market (src/KotoV3.sol#196)\n\tKotoV3.lpMarket (src/KotoV3.sol#41) can be used in cross function reentrancies:\n\t- KotoV3._createLpMarket() (src/KotoV3.sol#425-450)\n\t- KotoV3._currentMarketPrice(bool) (src/KotoV3.sol#605-623)\n\t- KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201)\n\t- KotoV3.lpMarketInfo() (src/KotoV3.sol#291-297)\n\t- lpTerm = _term (src/KotoV3.sol#197)\n\tKotoV3.lpTerm (src/KotoV3.sol#42) can be used in cross function reentrancies:\n\t- KotoV3._createLpMarket() (src/KotoV3.sol#425-450)\n\t- KotoV3._currentMarketPrice(bool) (src/KotoV3.sol#605-623)\n\t- KotoV3.bondLp(uint256) (src/KotoV3.sol#161-201)\n\t- KotoV3.lpMarketInfo() (src/KotoV3.sol#291-297)"
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x3732776aea93c09dba6cfe7e1a624fa858f863b566ca65fb862819645f8b62d8
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x3732776aea93c09dba6cfe7e1a624fa858f863b566ca65fb862819645f8b62d8",
"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": "0xd926de1c",
"selector": "0xd926de1c",
"calldata_variants": [
"0xd926de1c",
"0xd926de1c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb006a75",
"selector": "0xdb006a75",
"calldata_variants": [
"0xdb006a75",
"0xdb006a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8980b3",
"selector": "0xdf8980b3",
"calldata_variants": [
"0xdf8980b3",
"0xdf8980b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedd12a5",
"selector": "0xbedd12a5",
"calldata_variants": [
"0xbedd12a5",
"0xbedd12a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc5b748c0",
"selector": "0xc5b748c0",
"calldata_variants": [
"0xc5b748c0",
"0xc5b748c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7ccfb0b",
"selector": "0xd7ccfb0b",
"calldata_variants": [
"0xd7ccfb0b",
"0xd7ccfb0b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x64c9ec6f",
"selector": "0x64c9ec6f",
"calldata_variants": [
"0x64c9ec6f",
"0x64c9ec6f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | oracle | codex | Bond market parameters derived from manipulable Uniswap spot reserves | 75 | no | — |
viewevidence_json{
"evidence": "`_create`/`_createLpMarket` read `_getPrice`/`_getLpPrice`, which compute prices directly from `getReserves()` spot values.",
"locations": [
"src/KotoV3.sol:395",
"src/KotoV3.sol:424",
"src/KotoV3.sol:535",
"src/KotoV3.sol:559"
],
"recommendation": "Use a manipulation\u2011resistant price source (e.g., Uniswap TWAP or Chainlink), add price bounds and minimum liquidity checks, and/or delay market creation so spot price manipulation cannot influence `controlVariable` and policy decisions.",
"exploit_scenario": "An attacker can flash\u2011loan to skew the Uniswap V2 pair reserves immediately before an authorized `create` call. Because `_create`/`_createLpMarket` use `_getPrice`/`_getLpPrice` (spot reserves) to set `controlVariable` and `_policy`, the attacker can force an artificially low bond price and then buy bonds at a discount in the same block, capturing excess KOTO once price normalizes."
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x5dfd8a07e02f6b82dfa2fd4d0320347f0334f1dec1c8c7b97d45490b2fd3cd5b
call_targets:
0x64c7d8c8abf28daf9d441c507cfe9be678a0929c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x5dfd8a07e02f6b82dfa2fd4d0320347f0334f1dec1c8c7b97d45490b2fd3cd5b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x64c7d8c8abf28daf9d441c507cfe9be678a0929c"
],
"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": "0xd926de1c",
"selector": "0xd926de1c",
"calldata_variants": [
"0xd926de1c",
"0xd926de1c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb006a75",
"selector": "0xdb006a75",
"calldata_variants": [
"0xdb006a75",
"0xdb006a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8980b3",
"selector": "0xdf8980b3",
"calldata_variants": [
"0xdf8980b3",
"0xdf8980b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedd12a5",
"selector": "0xbedd12a5",
"calldata_variants": [
"0xbedd12a5",
"0xbedd12a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc5b748c0",
"selector": "0xc5b748c0",
"calldata_variants": [
"0xc5b748c0",
"0xc5b748c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7ccfb0b",
"selector": "0xd7ccfb0b",
"calldata_variants": [
"0xd7ccfb0b",
"0xd7ccfb0b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x64c9ec6f",
"selector": "0x64c9ec6f",
"calldata_variants": [
"0x64c9ec6f",
"0x64c9ec6f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5245,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7198,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8823,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [
{
"pc": 1395,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 2350,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4372,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4403,
"type": "msg_sender_eq_const",
"value": 1.3104632009104606e+48
},
{
"pc": 4759,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 1373,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 2328,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4350,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4381,
"type": "msg_sender_eq_const",
"value": "0xe58b33c813ac4077bd2519de90fccb189a19fa71"
},
{
"pc": 4737,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
}
],
"untrusted_call_count": 5
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x5dfd8a07e02f6b82dfa2fd4d0320347f0334f1dec1c8c7b97d45490b2fd3cd5b
call_targets:
0x64c7d8c8abf28daf9d441c507cfe9be678a0929c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x5dfd8a07e02f6b82dfa2fd4d0320347f0334f1dec1c8c7b97d45490b2fd3cd5b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x64c7d8c8abf28daf9d441c507cfe9be678a0929c"
],
"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": "0xd926de1c",
"selector": "0xd926de1c",
"calldata_variants": [
"0xd926de1c",
"0xd926de1c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdb006a75",
"selector": "0xdb006a75",
"calldata_variants": [
"0xdb006a75",
"0xdb006a750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdf8980b3",
"selector": "0xdf8980b3",
"calldata_variants": [
"0xdf8980b3",
"0xdf8980b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbedd12a5",
"selector": "0xbedd12a5",
"calldata_variants": [
"0xbedd12a5",
"0xbedd12a50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc5b748c0",
"selector": "0xc5b748c0",
"calldata_variants": [
"0xc5b748c0",
"0xc5b748c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7ccfb0b",
"selector": "0xd7ccfb0b",
"calldata_variants": [
"0xd7ccfb0b",
"0xd7ccfb0b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x64c9ec6f",
"selector": "0x64c9ec6f",
"calldata_variants": [
"0x64c9ec6f",
"0x64c9ec6f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5245,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7198,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8823,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": [
{
"pc": 1395,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 2350,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4372,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 4403,
"type": "msg_sender_eq_const",
"value": 1.3104632009104606e+48
},
{
"pc": 4759,
"type": "msg_sender_eq_const",
"value": 8.474049906444353e+47
},
{
"pc": 1373,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 2328,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4350,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
},
{
"pc": 4381,
"type": "msg_sender_eq_const",
"value": "0xe58b33c813ac4077bd2519de90fccb189a19fa71"
},
{
"pc": 4737,
"type": "msg_sender_eq_const",
"value": "0x946ef43867225695e29241813a8f41519634b36b"
}
]
}
|
| low | other | codex | LP bonding does not verify LP token transfer success | 65 | no | — |
viewevidence_json{
"evidence": "`IERC20Minimal(pair).transferFrom(...)` is invoked without a return\u2011value check before bond issuance.",
"locations": [
"src/KotoV3.sol:161"
],
"recommendation": "Use a safe transfer helper (e.g., `SafeTransferLib.safeTransferFrom`) or explicitly check the boolean return value and revert on failure.",
"exploit_scenario": "`bondLp` calls `pair.transferFrom` without checking its return value. If the LP token were non\u2011standard and returned `false` instead of reverting, the function would still mint KOTO bonds without receiving LP tokens, under\u2011collateralizing the market."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|