478c0b93-42fb-420f-976c-10c0f10515a8
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 |
|---|---|---|---|---|
| 30430 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 93979 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 93980 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 93981 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 93982 | capability.graph | complete | 1 / 3 | 1 week ago |
| 93983 | detector.run | complete | 1 / 3 | 1 week ago |
| 93984 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1241512] OpenAI Codex v0.77.0 (research preview)
[codex:1241512] --------
[codex:1241512] workdir: /tmp/codex-multi-phteds47
[codex:1241512] model: gpt-5.2-codex
[codex:1241512] provider: openai
[codex:1241512] approval: never
[codex:1241512] sandbox: read-only
[codex:1241512] reasoning effort: xhigh
[codex:1241512] reasoning summaries: auto
[codex:1241512] session id: 019b6885-155f-7363-be5d-d5f36ada44e1
[codex:1241512] --------
[codex:1241512] user
[codex:1241512] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1241512] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1241512] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1241512]
[codex:1241512] Scope rules:
[codex:1241512] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1241512] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1241512]
[codex:1241512] Output MUST be valid JSON matching the provided schema.
[codex:1241512] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1241512] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1241512]
[codex:1241512] Output constraints (IMPORTANT):
[codex:1241512] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1241512] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1241512] mcp startup: no servers
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Preparing to audit skills and read AGENTS**
[codex:1241512] exec
[codex:1241512] /bin/bash -lc ls in /tmp/codex-multi-phteds47 succeeded in 6ms:
[codex:1241512] AUDIT_BUNDLE.txt
[codex:1241512] codex-output-schema.json
[codex:1241512] contracts
[codex:1241512] exec
[codex:1241512] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phteds47 succeeded in 5ms:
[codex:1241512] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1241512]
[codex:1241512] ================================================================================
[codex:1241512] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1241512] ================================================================================
[codex:1241512] // SPDX-License-Identifier: MIT
[codex:1241512] // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
[codex:1241512]
[codex:1241512] pragma solidity ^0.8.0;
[codex:1241512]
[codex:1241512] import "../utils/Context.sol";
[codex:1241512]
[codex:1241512] /**
[codex:1241512] * @dev Contract module which provides a basic access control mechanism, where
[codex:1241512] * there is an account (an owner) that can be granted exclusive access to
[codex:1241512] * specific functions.
[codex:1241512] *
[codex:1241512] * By default, the owner account will be the one that deploys the contract. This
[codex:1241512] * can later be changed with {transferOwnership}.
[codex:1241512] *
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Scanning for first-party contracts**
[codex:1241512] exec
[codex:1241512] /bin/bash -lc "rg --line-number '"'^FILE:'"' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phteds47 succeeded in 6ms:
[codex:1241512] 4:FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1241512] 91:FILE: contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol
[codex:1241512] 172:FILE: contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol
[codex:1241512] 541:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1241512] 623:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
[codex:1241512] 655:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol
[codex:1241512] 749:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1241512] 896:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:1241512] 1144:FILE: contracts/@openzeppelin/contracts/utils/Context.sol
[codex:1241512] 1176:FILE: contracts/src/contracts/tokens/yTHOR.sol
[codex:1241512] 1219:FILE: contracts/src/contracts/tokens/yieldTHOR.sol
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Continuing to read file for full context**
[codex:1241512] exec
[codex:1241512] /bin/bash -lc "sed -n '1160,1400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phteds47 succeeded in 5ms:
[codex:1241512] */
[codex:1241512] abstract contract Context {
[codex:1241512] function _msgSender() internal view virtual returns (address) {
[codex:1241512] return msg.sender;
[codex:1241512] }
[codex:1241512]
[codex:1241512] function _msgData() internal view virtual returns (bytes calldata) {
[codex:1241512] return msg.data;
[codex:1241512] }
[codex:1241512]
[codex:1241512] function _contextSuffixLength() internal view virtual returns (uint256) {
[codex:1241512] return 0;
[codex:1241512] }
[codex:1241512] }
[codex:1241512]
[codex:1241512] ================================================================================
[codex:1241512] FILE: contracts/src/contracts/tokens/yTHOR.sol
[codex:1241512] ================================================================================
[codex:1241512] // SPDX-License-Identifier: MIT
[codex:1241512] pragma solidity ^0.8.17;
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Planning full file review**
[codex:1241512] exec
[codex:1241512] /bin/bash -lc "sed -n '200,1160p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phteds47 succeeded in 6ms:
[codex:1241512] * applications.
[codex:1241512] *
[codex:1241512] * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
[codex:1241512] * This allows applications to reconstruct the allowance for all accounts just
[codex:1241512] * by listening to said events. Other implementations of the EIP may not emit
[codex:1241512] * these events, as it isn't required by the specification.
[codex:1241512] *
[codex:1241512] * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
[codex:1241512] * functions have been added to mitigate the well-known issues around setting
[codex:1241512] * allowances. See {IERC20-approve}.
[codex:1241512] */
[codex:1241512] contract ERC20 is Context, IERC20, IERC20Metadata {
[codex:1241512] mapping(address => uint256) private _balances;
[codex:1241512]
[codex:1241512] mapping(address => mapping(address => uint256)) private _allowances;
[codex:1241512]
[codex:1241512] uint256 private _totalSupply;
[codex:1241512]
[codex:1241512] string private _name;
[codex:1241512] string private _symbol;
[codex:1241512]
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Analyzing potential vulnerabilities and accounting nuances**
[codex:1241512]
[codex:1241512] I'm auditing the contract for typical risks like reentrancy, access control, and accounting bugs. There's an intricate issue with rewardDebt's int256 rounding that can cause negative pending rewards, leading to claim reverts or denial-of-service for some users, mostly due to how floor rounding and transfers affect the balances. Also, depositRewards can be exploited for reward accounting manipulation if fee-on-transfer tokens are used. Overall, it's a detailed review balancing subtle edge cases and typical patterns.
[codex:1241512] thinking
[codex:1241512] **Identifying double nonReentrant bug and rounding issues**
[codex:1241512]
[codex:1241512] I'm uncovering a critical bug where yTHOR’s withdraw and redeem functions apply nonReentrant twice—both in the override and base—causing all withdrawals to revert and locking funds, which is quite serious. Additionally, repeated transfers can accumulate rounding errors in rewardDebt calculations, potentially blocking claims temporarily due to negative pending rewards. There are also noted accounting risks if fee-on-transfer tokens are used, but those are more design-related than exploitable bugs.
[codex:1241512] exec
[codex:1241512] /bin/bash -lc 'nl -ba contracts/src/contracts/tokens/yTHOR.sol' in /tmp/codex-multi-phteds47 succeeded in 6ms:
[codex:1241512] 1 // SPDX-License-Identifier: MIT
[codex:1241512] 2 pragma solidity ^0.8.17;
[codex:1241512] 3
[codex:1241512] 4 import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
[codex:1241512] 5 import {yieldTHOR} from "./yieldTHOR.sol";
[codex:1241512] 6
[codex:1241512] 7 contract yTHOR is yieldTHOR, Ownable {
[codex:1241512] 8 bool public canWithdraw = false;
[codex:1241512] 9
[codex:1241512] 10 constructor(
[codex:1241512] 11 address asset,
[codex:1241512] 12 address reward,
[codex:1241512] 13 address owner
[codex:1241512] 14 ) yieldTHOR("YieldTHOR", "yTHOR", asset, reward) {
[codex:1241512] 15 _transferOwnership(owner);
[codex:1241512] 16 }
[codex:1241512] 17
[codex:1241512] 18 function setCanWithdraw(bool _canWithdraw) external onlyOwner {
[codex:1241512] 19 canWithdraw = _canWithdraw;
[codex:1241512] 20 }
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Yielding line numbers for yieldTHOR**
[codex:1241512] exec
[codex:1241512] /bin/bash -lc 'nl -ba contracts/src/contracts/tokens/yieldTHOR.sol' in /tmp/codex-multi-phteds47 succeeded in 5ms:
[codex:1241512] 1 // SPDX-License-Identifier: MIT
[codex:1241512] 2 pragma solidity ^0.8.17;
[codex:1241512] 3
[codex:1241512] 4 import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1241512] 5 import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1241512] 6 import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1241512] 7 import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
[codex:1241512] 8
[codex:1241512] 9 contract yieldTHOR is ERC20, ReentrancyGuard {
[codex:1241512] 10 using SafeERC20 for IERC20;
[codex:1241512] 11
[codex:1241512] 12 uint256 private constant ACC_PRECISION = 1e24;
[codex:1241512] 13 IERC20 public immutable asset;
[codex:1241512] 14 IERC20 public immutable reward;
[codex:1241512] 15 uint256 public accRewardPerShare;
[codex:1241512] 16 mapping(address => int256) public rewardDebt;
[codex:1241512] 17
[codex:1241512] 18 event Deposit(
[codex:1241512] 19 address indexed caller,
[codex:1241512] 20 address indexed owner,
[codex:1241512]
[codex:1241512] thinking
[codex:1241512] **Summarizing audit findings into JSON**
[codex:1241512]
[codex:1241512] I’m organizing detailed audit findings into a structured JSON matching the codex-output-schema, covering a high-severity locked funds reentrancy bug and two lower-severity accounting issues involving reward debt rounding and fee-on-transfer token assumptions. I’m carefully crafting each finding with severity, category, exploit scenario, recommendation, evidence, and precise code locations to ensure clarity and accuracy.
[codex:1241512] codex
[codex:1241512] {"no_findings":false,"summary":"Found a high-severity withdrawal lock from double nonReentrant guards and two lower-severity accounting edge cases (reward debt rounding and fee-on-transfer token assumptions).","findings":[{"severity":"high","category":"reentrancy","title":"Withdraw/redeem always revert due to double nonReentrant in yTHOR overrides","exploit_scenario":"A user deposits assets into yTHOR. Even after the owner enables withdrawals, calling `withdraw` or `redeem` enters the nonReentrant guard in yTHOR and then calls `super.withdraw/super.redeem`, which are also nonReentrant. The second guard reverts with `ReentrancyGuard: reentrant call`, effectively locking all user funds permanently.","recommendation":"Apply the reentrancy guard only once on the call path. Remove `nonReentrant` from the yTHOR overrides or refactor to internal functions guarded by a single external `nonReentrant` entrypoint.","evidence":"`yTHOR.withdraw`/`redeem` are `nonReentrant` and call `super.withdraw`/`super.redeem`, which are also `nonReentrant` in `yieldTHOR`, triggering the guard twice.","locations":["contracts/src/contracts/tokens/yTHOR.sol:22","contracts/src/contracts/tokens/yTHOR.sol:31","contracts/src/contracts/tokens/yieldTHOR.sol:108","contracts/src/contracts/tokens/yieldTHOR.sol:126"]},{"severity":"low","category":"math","title":"Signed rewardDebt can exceed accumulated after rounding, causing negative pending and claim DoS","exploit_scenario":"An attacker can transfer dust to a victim when `accRewardPerShare` has a fractional component. Because `_beforeTokenTransfer` updates `rewardDebt` with a per-transfer floor while `accumulated` is recomputed from the post-transfer balance, rounding can make `rewardDebt` slightly larger than `accumulated`. `claimRewards` then casts a negative value to `uint256`, which reverts on transfer or makes `claimable` report a huge number, preventing claims until more rewards accrue.","recommendation":"Avoid signed-to-unsigned casts for pending rewards. Track `rewardDebt` as `uint256` and clamp pending to zero when `accumulated <= rewardDebt`, or recompute `rewardDebt` directly from the post-transfer balance to keep it consistent with `accumulated`.","evidence":"`claimable` and `claimRewards` cast `(accumulated - rewardDebt)` from `int256` to `uint256` without checking for negative values; `_beforeTokenTransfer` updates `rewardDebt` using per-transfer rounding that can diverge from `accumulated`.","locations":["contracts/src/contracts/tokens/yieldTHOR.sol:151","contracts/src/contracts/tokens/yieldTHOR.sol:156","contracts/src/contracts/tokens/yieldTHOR.sol:164"]},{"severity":"low","category":"math","title":"Accounting assumes asset/reward tokens transfer the full requested amount","exploit_scenario":"If the asset or reward token is fee-on-transfer or rebasing, the contract credits full `assets`/`amount` while receiving fewer tokens. Deposits can mint more shares than backing assets, and `depositRewards` can overstate rewards. Early claimers may drain available rewards while later withdrawals/claims revert due to insufficient balances.","recommendation":"For asset and reward transfers, measure actual received via balance-before/after and use that value for minting shares or updating `accRewardPerShare`, or explicitly restrict tokens to non-fee, non-rebasing ERC20s.","evidence":"`deposit`/`mint` and `depositRewards` use the input amount without checking actual received tokens.","locations":["contracts/src/contracts/tokens/yieldTHOR.sol:88","contracts/src/contracts/tokens/yieldTHOR.sol:98","contracts/src/contracts/tokens/yieldTHOR.sol:144"]}]}
[codex:1241512] tokens used
[codex:1241512] 59,570
[codex:1241512] {"no_findings":false,"summary":"Found a high-severity withdrawal lock from double nonReentrant guards and two lower-severity accounting edge cases (reward debt rounding and fee-on-transfer token assumptions).","findings":[{"severity":"high","category":"reentrancy","title":"Withdraw/redeem always revert due to double nonReentrant in yTHOR overrides","exploit_scenario":"A user deposits assets into yTHOR. Even after the owner enables withdrawals, calling `withdraw` or `redeem` enters the nonReentrant guard in yTHOR and then calls `super.withdraw/super.redeem`, which are also nonReentrant. The second guard reverts with `ReentrancyGuard: reentrant call`, effectively locking all user funds permanently.","recommendation":"Apply the reentrancy guard only once on the call path. Remove `nonReentrant` from the yTHOR overrides or refactor to internal functions guarded by a single external `nonReentrant` entrypoint.","evidence":"`yTHOR.withdraw`/`redeem` are `nonReentrant` and call `super.withdraw`/`super.redeem`, which are also `nonReentrant` in `yieldTHOR`, triggering the guard twice.","locations":["contracts/src/contracts/tokens/yTHOR.sol:22","contracts/src/contracts/tokens/yTHOR.sol:31","contracts/src/contracts/tokens/yieldTHOR.sol:108","contracts/src/contracts/tokens/yieldTHOR.sol:126"]},{"severity":"low","category":"math","title":"Signed rewardDebt can exceed accumulated after rounding, causing negative pending and claim DoS","exploit_scenario":"An attacker can transfer dust to a victim when `accRewardPerShare` has a fractional component. Because `_beforeTokenTransfer` updates `rewardDebt` with a per-transfer floor while `accumulated` is recomputed from the post-transfer balance, rounding can make `rewardDebt` slightly larger than `accumulated`. `claimRewards` then casts a negative value to `uint256`, which reverts on transfer or makes `claimable` report a huge number, preventing claims until more rewards accrue.","recommendation":"Avoid signed-to-unsigned casts for pending rewards. Track `rewardDebt` as `uint256` and clamp pending to zero when `accumulated <= rewardDebt`, or recompute `rewardDebt` directly from the post-transfer balance to keep it consistent with `accumulated`.","evidence":"`claimable` and `claimRewards` cast `(accumulated - rewardDebt)` from `int256` to `uint256` without checking for negative values; `_beforeTokenTransfer` updates `rewardDebt` using per-transfer rounding that can diverge from `accumulated`.","locations":["contracts/src/contracts/tokens/yieldTHOR.sol:151","contracts/src/contracts/tokens/yieldTHOR.sol:156","contracts/src/contracts/tokens/yieldTHOR.sol:164"]},{"severity":"low","category":"math","title":"Accounting assumes asset/reward tokens transfer the full requested amount","exploit_scenario":"If the asset or reward token is fee-on-transfer or rebasing, the contract credits full `assets`/`amount` while receiving fewer tokens. Deposits can mint more shares than backing assets, and `depositRewards` can overstate rewards. Early claimers may drain available rewards while later withdrawals/claims revert due to insufficient balances.","recommendation":"For asset and reward transfers, measure actual received via balance-before/after and use that value for minting shares or updating `accRewardPerShare`, or explicitly restrict tokens to non-fee, non-rebasing ERC20s.","evidence":"`deposit`/`mint` and `depositRewards` use the input amount without checking actual received tokens.","locations":["contracts/src/contracts/tokens/yieldTHOR.sol:88","contracts/src/contracts/tokens/yieldTHOR.sol:98","contracts/src/contracts/tokens/yieldTHOR.sol:144"]}]}
{
"codex": {
"ran_at": "2025-12-29T05:15:31.666014+00:00",
"returncode": 0
},
"summary": "Found a high-severity withdrawal lock from double nonReentrant guards and two lower-severity accounting edge cases (reward debt rounding and fee-on-transfer token assumptions).",
"raw_final": {
"summary": "Found a high-severity withdrawal lock from double nonReentrant guards and two lower-severity accounting edge cases (reward debt rounding and fee-on-transfer token assumptions).",
"findings": [
{
"title": "Withdraw/redeem always revert due to double nonReentrant in yTHOR overrides",
"category": "reentrancy",
"evidence": "`yTHOR.withdraw`/`redeem` are `nonReentrant` and call `super.withdraw`/`super.redeem`, which are also `nonReentrant` in `yieldTHOR`, triggering the guard twice.",
"severity": "high",
"locations": [
"contracts/src/contracts/tokens/yTHOR.sol:22",
"contracts/src/contracts/tokens/yTHOR.sol:31",
"contracts/src/contracts/tokens/yieldTHOR.sol:108",
"contracts/src/contracts/tokens/yieldTHOR.sol:126"
],
"recommendation": "Apply the reentrancy guard only once on the call path. Remove `nonReentrant` from the yTHOR overrides or refactor to internal functions guarded by a single external `nonReentrant` entrypoint.",
"exploit_scenario": "A user deposits assets into yTHOR. Even after the owner enables withdrawals, calling `withdraw` or `redeem` enters the nonReentrant guard in yTHOR and then calls `super.withdraw/super.redeem`, which are also nonReentrant. The second guard reverts with `ReentrancyGuard: reentrant call`, effectively locking all user funds permanently."
},
{
"title": "Signed rewardDebt can exceed accumulated after rounding, causing negative pending and claim DoS",
"category": "math",
"evidence": "`claimable` and `claimRewards` cast `(accumulated - rewardDebt)` from `int256` to `uint256` without checking for negative values; `_beforeTokenTransfer` updates `rewardDebt` using per-transfer rounding that can diverge from `accumulated`.",
"severity": "low",
"locations": [
"contracts/src/contracts/tokens/yieldTHOR.sol:151",
"contracts/src/contracts/tokens/yieldTHOR.sol:156",
"contracts/src/contracts/tokens/yieldTHOR.sol:164"
],
"recommendation": "Avoid signed-to-unsigned casts for pending rewards. Track `rewardDebt` as `uint256` and clamp pending to zero when `accumulated <= rewardDebt`, or recompute `rewardDebt` directly from the post-transfer balance to keep it consistent with `accumulated`.",
"exploit_scenario": "An attacker can transfer dust to a victim when `accRewardPerShare` has a fractional component. Because `_beforeTokenTransfer` updates `rewardDebt` with a per-transfer floor while `accumulated` is recomputed from the post-transfer balance, rounding can make `rewardDebt` slightly larger than `accumulated`. `claimRewards` then casts a negative value to `uint256`, which reverts on transfer or makes `claimable` report a huge number, preventing claims until more rewards accrue."
},
{
"title": "Accounting assumes asset/reward tokens transfer the full requested amount",
"category": "math",
"evidence": "`deposit`/`mint` and `depositRewards` use the input amount without checking actual received tokens.",
"severity": "low",
"locations": [
"contracts/src/contracts/tokens/yieldTHOR.sol:88",
"contracts/src/contracts/tokens/yieldTHOR.sol:98",
"contracts/src/contracts/tokens/yieldTHOR.sol:144"
],
"recommendation": "For asset and reward transfers, measure actual received via balance-before/after and use that value for minting shares or updating `accRewardPerShare`, or explicitly restrict tokens to non-fee, non-rebasing ERC20s.",
"exploit_scenario": "If the asset or reward token is fee-on-transfer or rebasing, the contract credits full `assets`/`amount` while receiving fewer tokens. Deposits can mint more shares than backing assets, and `depositRewards` can overstate rewards. Early claimers may drain available rewards while later withdrawals/claims revert due to insufficient balances."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: DUP2 00000005: DUP2 00000006: MSTORE 00000007: PUSH1 0x04 00000009: DUP1 0000000a: CALLDATASIZE 0000000b: LT 0000000c: ISZERO 0000000d: PUSH2 0x0015 00000010: JUMPI 00000011: PUSH1 0x00 00000013: DUP1 00000014: REVERT 00000015: JUMPDEST 00000016: PUSH1 0x00 00000018: SWAP3 00000019: DUP4 0000001a: CALLDATALOAD 0000001b: PUSH1 0xe0 0000001d: SHR 0000001e: SWAP1 0000001f: DUP2 00000020: PUSH4 0x01e1d114 00000025: EQ 00000026: PUSH2 0x0bfc 00000029: JUMPI 0000002a: POP 0000002b: DUP1 0000002c: PUSH4 0x06fdde03 00000031: EQ 00000032: PUSH2 0x0b06 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0x07a2d13a 0000003c: EQ 0000003d: PUSH2 0x0293 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0x095ea7b3 00000047: EQ 00000048: PUSH2 0x0adc 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0x0a28a477 00000052: EQ 00000053: PUSH2 0x0293 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0x18160ddd 0000005d: EQ 0000005e: PUSH2 0x0abd 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0x228cb733 00000068: EQ 00000069: PUSH2 0x0a79 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0x23b872dd 00000073: EQ 00000074: PUSH2 0x09af 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0x313ce567 0000007e: EQ 0000007f: PUSH2 0x0993 00000082: JUMPI 00000083: DUP1 00000084: PUSH4 0x326e5540 00000089: EQ 0000008a: PUSH2 0x094d 0000008d: JUMPI 0000008e: DUP1 0000008f: PUSH4 0x372500ab 00000094: EQ 00000095: PUSH2 0x0890 00000098: JUMPI 00000099: DUP1 0000009a: PUSH4 0x38d52e0f 0000009f: EQ 000000a0: PUSH2 0x084c 000000a3: JUMPI 000000a4: DUP1 000000a5: PUSH4 0x39509351 000000aa: EQ 000000ab: PUSH2 0x07fc 000000ae: JUMPI 000000af: DUP1 000000b0: PUSH4 0x402914f5 000000b5: EQ 000000b6: PUSH2 0x079e 000000b9: JUMPI 000000ba: DUP1 000000bb: PUSH4 0x402d267d 000000c0: EQ 000000c1: PUSH2 0x02ea 000000c4: JUMPI 000000c5: DUP1 000000c6: PUSH4 0x4cdad506 000000cb: EQ 000000cc: PUSH2 0x0293 000000cf: JUMPI 000000d0: DUP1 000000d1: PUSH4 0x5873eb9b 000000d6: EQ 000000d7: PUSH2 0x0766 000000da: JUMPI 000000db: DUP1 000000dc: PUSH4 0x6e553f65 000000e1: EQ 000000e2: PUSH2 0x053d 000000e5: JUMPI 000000e6: DUP1 000000e7: PUSH4 0x70a08231 000000ec: EQ 000000ed: PUSH2 0x0723 000000f0: JUMPI 000000f1: DUP1 000000f2: PUSH4 0x715018a6 000000f7: EQ 000000f8: PUSH2 0x06c6 000000fb: JUMPI 000000fc: DUP1 000000fd: PUSH4 0x8bdf67f2 00000102: EQ 00000103: PUSH2 0x05b5 00000106: JUMPI 00000107: DUP1 00000108: PUSH4 0x8da5cb5b 0000010d: EQ 0000010e: PUSH2 0x058c 00000111: JUMPI 00000112: DUP1 00000113: PUSH4 0x939d6237 00000118: EQ 00000119: PUSH2 0x056d 0000011c: JUMPI 0000011d: DUP1 0000011e: PUSH4 0x94bf804d 00000123: EQ 00000124: PUSH2 0x053d 00000127: JUMPI 00000128: DUP1 00000129: PUSH4 0x95d89b41 0000012e: EQ 0000012f: PUSH2 0x0437 00000132: JUMPI 00000133: DUP1 00000134: PUSH4 0xa457c2d7 00000139: EQ 0000013a: PUSH2 0x0390 0000013d: JUMPI 0000013e: DUP1 0000013f: PUSH4 0xa9059cbb 00000144: EQ 00000145: PUSH2 0x035f 00000148: JUMPI 00000149: DUP1 0000014a: PUSH4 0xb3d7f6b9 0000014f: EQ 00000150: PUSH2 0x0293 00000153: JUMPI 00000154: DUP1 00000155: PUSH4 0xb460af94 0000015a: EQ 0000015b: PUSH2 0x02ef 0000015e: JUMPI 0000015f: DUP1 00000160: PUSH4 0xb51459fe 00000165: EQ 00000166: PUSH2 0x0338 00000169: JUMPI 0000016a: DUP1 0000016b: PUSH4 0xba087652 00000170: EQ 00000171: PUSH2 0x02ef 00000174: JUMPI 00000175: DUP1 00000176: PUSH4 0xc63d75b6 0000017b: EQ 0000017c: PUSH2 0x02ea 0000017f: JUMPI 00000180: DUP1 00000181: PUSH4 0xc6e6f592 00000186: EQ 00000187: PUSH2 0x0293 0000018a: JUMPI 0000018b: DUP1 0000018c: PUSH4 0xce96cb77 00000191: EQ 00000192: PUSH2 0x02e5 00000195: JUMPI 00000196: DUP1 00000197: PUSH4 0xd905777e 0000019c: EQ 0000019d: PUSH2 0x02e5 000001a0: JUMPI 000001a1: DUP1 000001a2: PUSH4 0xdd62ed3e 000001a7: EQ 000001a8: PUSH2 0x0298 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0xef8b30f7 000001b2: EQ 000001b3: PUSH2 0x0293 000001b6: JUMPI 000001b7: PUSH4 0xf2fde38b 000001bc: EQ 000001bd: PUSH2 0x01c5 000001c0: JUMPI 000001c1: PUSH1 0x00 000001c3: DUP1 000001c4: REVERT 000001c5: JUMPDEST 000001c6: CALLVALUE 000001c7: PUSH2 0x028f 000001ca: JUMPI 000001cb: PUSH1 0x20 000001cd: CALLDATASIZE 000001ce: PUSH1 0x03 000001d0: NOT 000001d1: ADD 000001d2: SLT 000001d3: PUSH2 0x028f 000001d6: JUMPI 000001d7: PUSH2 0x01de 000001da: PUSH2 0x0c83 000001dd: JUMP 000001de: JUMPDEST 000001df: SWAP1 000001e0: PUSH2 0x01e7 000001e3: PUSH2 0x1236 000001e6: JUMP 000001e7: JUMPDEST 000001e8: PUSH1 0x01 000001ea: PUSH1 0x01 000001ec: PUSH1 0xa0 000001ee: SHL 000001ef: SUB 000001f0: SWAP2 000001f1: DUP3 000001f2: AND 000001f3: SWAP3 000001f4: DUP4 000001f5: ISZERO 000001f6: PUSH2 0x023d 000001f9: JUMPI 000001fa: POP 000001fb: POP 000001fc: PUSH1 0x08 000001fe: SLOAD 000001ff: DUP3 00000200: PUSH12 0xffffffffffffffffffffffff 0000020d: PUSH1 0xa0 0000020f: SHL 00000210: DUP3 00000211: AND 00000212: OR 00000213: PUSH1 0x08 00000215: SSTORE 00000216: AND 00000217: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000238: DUP4 00000239: DUP1 0000023a: LOG3 0000023b: DUP1 0000023c: RETURN 0000023d: JUMPDEST 0000023e: SWAP1 0000023f: PUSH1 0x20 00000241: PUSH1 0x84 00000243: SWAP3 00000244: MLOAD 00000245: SWAP2 00000246: PUSH3 0x461bcd 0000024a: PUSH1 0xe5 0000024c: SHL 0000024d: DUP4 0000024e: MSTORE 0000024f: DUP3 00000250: ADD 00000251: MSTORE 00000252: PUSH1 0x26 00000254: PUSH1 0x24 00000256: DUP3 00000257: ADD 00000258: MSTORE 00000259: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 0000027a: PUSH1 0x44 0000027c: DUP3 0000027d: ADD 0000027e: MSTORE 0000027f: PUSH6 0x646472657373 00000286: PUSH1 0xd0 00000288: SHL 00000289: PUSH1 0x64 0000028b: DUP3 0000028c: ADD 0000028d: MSTORE 0000028e: REVERT 0000028f: JUMPDEST 00000290: DUP3 00000291: DUP1 00000292: REVERT 00000293: JUMPDEST 00000294: PUSH2 0x0c61 00000297: JUMP 00000298: JUMPDEST 00000299: POP 0000029a: POP 0000029b: CALLVALUE 0000029c: PUSH2 0x02e1 0000029f: JUMPI 000002a0: DUP1 000002a1: PUSH1 0x03 000002a3: NOT 000002a4: CALLDATASIZE 000002a5: ADD 000002a6: SLT 000002a7: PUSH2 0x02e1 000002aa: JUMPI 000002ab: DUP1 000002ac: PUSH1 0x20 000002ae: SWAP3 000002af: PUSH2 0x02b6 000002b2: PUSH2 0x0c83 000002b5: JUMP 000002b6: JUMPDEST 000002b7: PUSH2 0x02be 000002ba: PUSH2 0x0c99 000002bd: JUMP 000002be: JUMPDEST 000002bf: PUSH1 0x01 000002c1: PUSH1 0x01 000002c3: PUSH1 0xa0 000002c5: SHL 000002c6: SUB 000002c7: SWAP2 000002c8: DUP3 000002c9: AND 000002ca: DUP4 000002cb: MSTORE 000002cc: PUSH1 0x01 000002ce: DUP7 000002cf: MSTORE 000002d0: DUP4 000002d1: DUP4 000002d2: KECCAK256 000002d3: SWAP2 000002d4: AND 000002d5: DUP3 000002d6: MSTORE 000002d7: DUP5 000002d8: MSTORE 000002d9: KECCAK256 000002da: SLOAD 000002db: SWAP1 000002dc: MLOAD 000002dd: SWAP1 000002de: DUP2 000002df: MSTORE 000002e0: RETURN 000002e1: JUMPDEST 000002e2: POP 000002e3: DUP1 000002e4: REVERT 000002e5: JUMPDEST 000002e6: PUSH2 0x0d0a 000002e9: JUMP 000002ea: JUMPDEST 000002eb: PUSH2 0x0caf 000002ee: JUMP 000002ef: JUMPDEST 000002f0: POP 000002f1: POP 000002f2: CALLVALUE 000002f3: PUSH2 0x02e1 000002f6: JUMPI 000002f7: PUSH1 0x20 000002f9: SWAP1 000002fa: PUSH2 0x032c 000002fd: PUSH2 0x0305 00000300: CALLDATASIZE 00000301: PUSH2 0x0cd5 00000304: JUMP 00000305: JUMPDEST 00000306: SWAP2 00000307: PUSH2 0x030e 0000030a: PUSH2 0x128e 0000030d: JUMP 0000030e: JUMPDEST 0000030f: PUSH2 0x031f 00000312: PUSH1 0xff 00000314: PUSH1 0x08 00000316: SLOAD 00000317: PUSH1 0xa0 00000319: SHR 0000031a: AND 0000031b: PUSH2 0x0f19 0000031e: JUMP 0000031f: JUMPDEST 00000320: PUSH2 0x0327 00000323: PUSH2 0x128e 00000326: JUMP 00000327: JUMPDEST 00000328: PUSH2 0x138f 0000032b: JUMP 0000032c: JUMPDEST 0000032d: SWAP1 0000032e: PUSH1 0x01 00000330: PUSH1 0x05 00000332: SSTORE 00000333: MLOAD 00000334: SWAP1 00000335: DUP2 00000336: MSTORE 00000337: RETURN 00000338: JUMPDEST 00000339: POP 0000033a: POP 0000033b: CALLVALUE 0000033c: PUSH2 0x02e1 0000033f: JUMPI 00000340: DUP2 00000341: PUSH1 0x03 00000343: NOT 00000344: CALLDATASIZE 00000345: ADD 00000346: SLT 00000347: PUSH2 0x02e1 0000034a: JUMPI 0000034b: PUSH1 0x20 0000034d: SWAP1 0000034e: PUSH1 0xff 00000350: PUSH1 0x08 00000352: SLOAD 00000353: PUSH1 0xa0 00000355: SHR 00000356: AND 00000357: SWAP1 00000358: MLOAD 00000359: SWAP1 0000035a: ISZERO 0000035b: ISZERO 0000035c: DUP2 0000035d: MSTORE 0000035e: RETURN 0000035f: JUMPDEST 00000360: POP 00000361: POP 00000362: CALLVALUE 00000363: PUSH2 0x02e1 00000366: JUMPI 00000367: DUP1 00000368: PUSH1 0x03 0000036a: NOT 0000036b: CALLDATASIZE 0000036c: ADD 0000036d: SLT 0000036e: PUSH2 0x02e1 00000371: JUMPI 00000372: PUSH1 0x20 00000374: SWAP1 00000375: PUSH2 0x0389 00000378: PUSH2 0x037f 0000037b: PUSH2 0x0c83 0000037e: JUMP 0000037f: JUMPDEST 00000380: PUSH1 0x24 00000382: CALLDATALOAD 00000383: SWAP1 00000384: CALLER 00000385: PUSH2 0x1057 00000388: JUMP 00000389: JUMPDEST 0000038a: MLOAD 0000038b: PUSH1 0x01 0000038d: DUP2 0000038e: MSTORE 0000038f: RETURN 00000390: JUMPDEST 00000391: POP 00000392: DUP3 00000393: CALLVALUE 00000394: PUSH2 0x0434 00000397: JUMPI 00000398: DUP3 00000399: PUSH1 0x03 0000039b: NOT 0000039c: CALLDATASIZE 0000039d: ADD 0000039e: SLT 0000039f: PUSH2 0x0434 000003a2: JUMPI 000003a3: PUSH2 0x03aa 000003a6: PUSH2 0x0c83 000003a9: JUMP 000003aa: JUMPDEST 000003ab: SWAP2 000003ac: DUP4 000003ad: PUSH1 0x24 000003af: CALLDATALOAD 000003b0: SWAP3 000003b1: CALLER 000003b2: DUP2 000003b3: MSTORE 000003b4: PUSH1 0x01 000003b6: PUSH1 0x20 000003b8: MSTORE 000003b9: DUP2 000003ba: DUP2 000003bb: KECCAK256 000003bc: PUSH1 0x01 000003be: DUP1 000003bf: PUSH1 0xa0 000003c1: SHL 000003c2: SUB 000003c3: DUP7 000003c4: AND 000003c5: DUP3 000003c6: MSTORE 000003c7: PUSH1 0x20 000003c9: MSTORE 000003ca: KECCAK256 000003cb: SLOAD 000003cc: SWAP1 000003cd: DUP3 000003ce: DUP3 000003cf: LT 000003d0: PUSH2 0x03e3 000003d3: JUMPI 000003d4: PUSH1 0x20 000003d6: DUP6 000003d7: PUSH2 0x0389 000003da: DUP6 000003db: DUP6 000003dc: SUB 000003dd: DUP8 000003de: CALLER 000003df: PUSH2 0x0f55 000003e2: JUMP 000003e3: JUMPDEST 000003e4: PUSH1 0x84 000003e6: SWAP1 000003e7: PUSH1 0x20 000003e9: DUP7 000003ea: MLOAD 000003eb: SWAP2 000003ec: PUSH3 0x461bcd 000003f0: PUSH1 0xe5 000003f2: SHL 000003f3: DUP4 000003f4: MSTORE 000003f5: DUP3 000003f6: ADD 000003f7: MSTORE 000003f8: PUSH1 0x25 000003fa: PUSH1 0x24 000003fc: DUP3 000003fd: ADD 000003fe: MSTORE 000003ff: PUSH32 0x45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77 00000420: PUSH1 0x44 00000422: DUP3 00000423: ADD 00000424: MSTORE 00000425: PUSH5 0x207a65726f 0000042b: PUSH1 0xd8 0000042d: SHL 0000042e: PUSH1 0x64 00000430: DUP3 00000431: ADD 00000432: MSTORE 00000433: REVERT 00000434: JUMPDEST 00000435: DUP1 00000436: REVERT 00000437: JUMPDEST 00000438: POP 00000439: SWAP2 0000043a: SWAP1 0000043b: CALLVALUE 0000043c: PUSH2 0x02e1 0000043f: JUMPI 00000440: DUP2 00000441: PUSH1 0x03 00000443: NOT 00000444: CALLDATASIZE 00000445: ADD 00000446: SLT 00000447: PUSH2 0x02e1 0000044a: JUMPI 0000044b: DUP1 0000044c: MLOAD 0000044d: SWAP2 0000044e: DUP1 0000044f: SWAP4 00000450: DUP1 00000451: SLOAD 00000452: SWAP2 00000453: PUSH1 0x01 00000455: SWAP1 00000456: DUP4 00000457: PUSH1 0x01 00000459: SHR 0000045a: SWAP3 0000045b: PUSH1 0x01 0000045d: DUP6 0000045e: AND 0000045f: SWAP5 00000460: DUP6 00000461: ISZERO 00000462: PUSH2 0x0533 00000465: JUMPI 00000466: JUMPDEST 00000467: PUSH1 0x20 00000469: SWAP6 0000046a: DUP7 0000046b: DUP7 0000046c: LT 0000046d: DUP2 0000046e: EQ 0000046f: PUSH2 0x0520 00000472: JUMPI 00000473: DUP6 00000474: DUP10 00000475: MSTORE 00000476: SWAP1 00000477: DUP2 00000478: ISZERO 00000479: PUSH2 0x04fc 0000047c: JUMPI 0000047d: POP 0000047e: PUSH1 0x01 00000480: EQ 00000481: PUSH2 0x04a4 00000484: JUMPI 00000485: JUMPDEST 00000486: PUSH2 0x04a0 00000489: DUP8 0000048a: DUP8 0000048b: PUSH2 0x0496 0000048e: DUP3 0000048f: DUP13 00000490: SUB 00000491: DUP4 00000492: PUSH2 0x0d30 00000495: JUMP 00000496: JUMPDEST 00000497: MLOAD 00000498: SWAP2 00000499: DUP3 0000049a: SWAP2 0000049b: DUP3 0000049c: PUSH2 0x0c18 0000049f: JUMP 000004a0: JUMPDEST 000004a1: SUB 000004a2: SWAP1 000004a3: RETURN 000004a4: JUMPDEST 000004a5: DUP2 000004a6: MSTORE 000004a7: SWAP3 000004a8: SWAP6 000004a9: POP 000004aa: PUSH32 0x8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b 000004cb: JUMPDEST 000004cc: DUP3 000004cd: DUP5 000004ce: LT 000004cf: PUSH2 0x04e9 000004d2: JUMPI 000004d3: POP 000004d4: POP 000004d5: POP 000004d6: DUP3 000004d7: PUSH2 0x04a0 000004da: SWAP5 000004db: PUSH2 0x0496 000004de: SWAP3 000004df: DUP3 000004e0: ADD 000004e1: ADD 000004e2: SWAP5 000004e3: CODESIZE 000004e4: DUP1 000004e5: PUSH2 0x0485 000004e8: JUMP 000004e9: JUMPDEST 000004ea: DUP1 000004eb: SLOAD 000004ec: DUP7 000004ed: DUP6 000004ee: ADD 000004ef: DUP9 000004f0: ADD 000004f1: MSTORE 000004f2: SWAP3 000004f3: DUP7 000004f4: ADD 000004f5: SWAP3 000004f6: DUP2 000004f7: ADD 000004f8: PUSH2 0x04cb 000004fb: JUMP 000004fc: JUMPDEST 000004fd: PUSH1 0xff 000004ff: NOT 00000500: AND 00000501: DUP9 00000502: DUP8 00000503: ADD 00000504: MSTORE 00000505: POP 00000506: POP 00000507: POP 00000508: POP 00000509: ISZERO 0000050a: ISZERO 0000050b: PUSH1 0x05 0000050d: SHL 0000050e: DUP4 0000050f: ADD 00000510: ADD 00000511: SWAP3 00000512: POP 00000513: PUSH2 0x0496 00000516: DUP3 00000517: PUSH2 0x04a0 0000051a: CODESIZE 0000051b: DUP1 0000051c: PUSH2 0x0485 0000051f: JUMP 00000520: JUMPDEST 00000521: PUSH4 0x4e487b71 00000526: PUSH1 0xe0 00000528: SHL 00000529: DUP5 0000052a: MSTORE 0000052b: PUSH1 0x22 0000052d: DUP4 0000052e: MSTORE 0000052f: PUSH1 0x24 00000531: DUP5 00000532: REVERT 00000533: JUMPDEST 00000534: SWAP4 00000535: PUSH1 0x7f 00000537: AND 00000538: SWAP4 00000539: PUSH2 0x0466 0000053c: JUMP 0000053d: JUMPDEST 0000053e: POP 0000053f: SWAP2 00000540: CALLVALUE 00000541: PUSH2 0x0434 00000544: JUMPI 00000545: DUP2 00000546: PUSH1 0x03 00000548: NOT 00000549: CALLDATASIZE 0000054a: ADD 0000054b: SLT 0000054c: PUSH2 0x0434 0000054f: JUMPI 00000550: POP 00000551: PUSH2 0x032c 00000554: PUSH1 0x20 00000556: SWAP3 00000557: PUSH2 0x055e 0000055a: PUSH2 0x0c99 0000055d: JUMP 0000055e: JUMPDEST 0000055f: SWAP1 00000560: PUSH2 0x0567 00000563: PUSH2 0x128e 00000566: JUMP 00000567: JUMPDEST 00000568: CALLDATALOAD 00000569: PUSH2 0x0db7 0000056c: JUMP 0000056d: JUMPDEST 0000056e: POP 0000056f: POP 00000570: CALLVALUE 00000571: PUSH2 0x02e1 00000574: JUMPI 00000575: DUP2 00000576: PUSH1 0x03 00000578: NOT 00000579: CALLDATASIZE 0000057a: ADD 0000057b: SLT 0000057c: PUSH2 0x02e1 0000057f: JUMPI 00000580: PUSH1 0x20 00000582: SWAP1 00000583: PUSH1 0x06 00000585: SLOAD 00000586: SWAP1 00000587: MLOAD 00000588: SWAP1 00000589: DUP2 0000058a: MSTORE 0000058b: RETURN 0000058c: JUMPDEST 0000058d: POP 0000058e: POP 0000058f: CALLVALUE 00000590: PUSH2 0x02e1 00000593: JUMPI 00000594: DUP2 00000595: PUSH1 0x03 00000597: NOT 00000598: CALLDATASIZE 00000599: ADD 0000059a: SLT 0000059b: PUSH2 0x02e1 0000059e: JUMPI 0000059f: PUSH1 0x08 000005a1: SLOAD 000005a2: SWAP1 000005a3: MLOAD 000005a4: PUSH1 0x01 000005a6: PUSH1 0x01 000005a8: PUSH1 0xa0 000005aa: SHL 000005ab: SUB 000005ac: SWAP1 000005ad: SWAP2 000005ae: AND 000005af: DUP2 000005b0: MSTORE 000005b1: PUSH1 0x20 000005b3: SWAP1 000005b4: RETURN 000005b5: JUMPDEST 000005b6: POP 000005b7: SWAP2 000005b8: SWAP1 000005b9: CALLVALUE 000005ba: PUSH2 0x02e1 000005bd: JUMPI 000005be: PUSH1 0x20 000005c0: CALLDATASIZE 000005c1: PUSH1 0x03 000005c3: NOT 000005c4: ADD 000005c5: SLT 000005c6: PUSH2 0x02e1 000005c9: JUMPI 000005ca: DUP3 000005cb: CALLDATALOAD 000005cc: SWAP1 000005cd: PUSH2 0x05d4 000005d0: PUSH2 0x128e 000005d3: JUMP 000005d4: JUMPDEST 000005d5: PUSH1 0x02 000005d7: SLOAD 000005d8: ISZERO 000005d9: PUSH2 0x0698 000005dc: JUMPI 000005dd: PUSH2 0x0608 000005e0: DUP3 000005e1: ADDRESS 000005e2: CALLER 000005e3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000604: PUSH2 0x1336 00000607: JUMP 00000608: JUMPDEST 00000609: PUSH1 0x06 0000060b: SLOAD 0000060c: PUSH10 0xd3c21bcecceda1000000 00000617: DUP1 00000618: DUP5 00000619: MUL 0000061a: SWAP1 0000061b: DUP5 0000061c: DUP3 0000061d: DIV 0000061e: EQ 0000061f: DUP5 00000620: ISZERO 00000621: OR 00000622: ISZERO 00000623: PUSH2 0x0685 00000626: JUMPI 00000627: PUSH1 0x02 00000629: SLOAD 0000062a: SWAP1 0000062b: DUP2 0000062c: ISZERO 0000062d: PUSH2 0x0672 00000630: JUMPI 00000631: PUSH32 0x4e9221f2cca6ca0397acc6004ea0b716798254f5abcf53924fab34f0373e5d4e 00000652: SWAP5 00000653: SWAP3 00000654: PUSH1 0x20 00000656: SWAP5 00000657: SWAP3 00000658: PUSH2 0x0662 0000065b: SWAP3 0000065c: DIV 0000065d: SWAP1 0000065e: PUSH2 0x0daa 00000661: JUMP 00000662: JUMPDEST 00000663: PUSH1 0x06 00000665: SSTORE 00000666: MLOAD 00000667: SWAP1 00000668: DUP2 00000669: MSTORE 0000066a: LOG1 0000066b: PUSH1 0x01 0000066d: PUSH1 0x05 0000066f: SSTORE 00000670: DUP1 00000671: RETURN 00000672: JUMPDEST 00000673: PUSH4 0x4e487b71 00000678: PUSH1 0xe0 0000067a: SHL 0000067b: DUP7 0000067c: MSTORE 0000067d: PUSH1 0x12 0000067f: DUP8 00000680: MSTORE 00000681: PUSH1 0x24 00000683: DUP7 00000684: REVERT 00000685: JUMPDEST 00000686: PUSH4 0x4e487b71 0000068b: PUSH1 0xe0 0000068d: SHL 0000068e: DUP6 0000068f: MSTORE 00000690: PUSH1 0x11 00000692: DUP7 00000693: MSTORE 00000694: PUSH1 0x24 00000696: DUP6 00000697: REVERT 00000698: JUMPDEST 00000699: MLOAD 0000069a: PUSH3 0x461bcd 0000069e: PUSH1 0xe5 000006a0: SHL 000006a1: DUP2 000006a2: MSTORE 000006a3: PUSH1 0x20 000006a5: DUP2 000006a6: DUP6 000006a7: ADD 000006a8: MSTORE 000006a9: PUSH1 0x09 000006ab: PUSH1 0x24 000006ad: DUP3 000006ae: ADD 000006af: MSTORE 000006b0: PUSH9 0x4e4f5f534841524553 000006ba: PUSH1 0xb8 000006bc: SHL 000006bd: PUSH1 0x44 000006bf: DUP3 000006c0: ADD 000006c1: MSTORE 000006c2: PUSH1 0x64 000006c4: SWAP1 000006c5: REVERT 000006c6: JUMPDEST 000006c7: DUP4 000006c8: CALLVALUE 000006c9: PUSH2 0x0434 000006cc: JUMPI 000006cd: DUP1 000006ce: PUSH1 0x03 000006d0: NOT 000006d1: CALLDATASIZE 000006d2: ADD 000006d3: SLT 000006d4: PUSH2 0x0434 000006d7: JUMPI 000006d8: PUSH2 0x06df 000006db: PUSH2 0x1236 000006de: JUMP 000006df: JUMPDEST 000006e0: PUSH1 0x08 000006e2: DUP1 000006e3: SLOAD 000006e4: PUSH1 0x01 000006e6: PUSH1 0x01 000006e8: PUSH1 0xa0 000006ea: SHL 000006eb: SUB 000006ec: NOT 000006ed: DUP2 000006ee: AND 000006ef: SWAP1 000006f0: SWAP2 000006f1: SSTORE 000006f2: DUP2 000006f3: SWAP1 000006f4: PUSH1 0x01 000006f6: PUSH1 0x01 000006f8: PUSH1 0xa0 000006fa: SHL 000006fb: SUB 000006fc: AND 000006fd: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 0000071e: DUP3 0000071f: DUP1 00000720: LOG3 00000721: DUP1 00000722: RETURN 00000723: JUMPDEST 00000724: POP 00000725: POP 00000726: CALLVALUE 00000727: PUSH2 0x02e1 0000072a: JUMPI 0000072b: PUSH1 0x20 0000072d: CALLDATASIZE 0000072e: PUSH1 0x03 00000730: NOT 00000731: ADD 00000732: SLT 00000733: PUSH2 0x02e1 00000736: JUMPI 00000737: PUSH1 0x20 00000739: SWAP1 0000073a: PUSH2 0x075f 0000073d: PUSH2 0x0744 00000740: PUSH2 0x0c83 00000743: JUMP 00000744: JUMPDEST 00000745: PUSH1 0x01 00000747: PUSH1 0x01 00000749: PUSH1 0xa0 0000074b: SHL 0000074c: SUB 0000074d: AND 0000074e: PUSH1 0x00 00000750: SWAP1 00000751: DUP2 00000752: MSTORE 00000753: PUSH1 0x20 00000755: DUP2 00000756: SWAP1 00000757: MSTORE 00000758: PUSH1 0x40 0000075a: SWAP1 0000075b: KECCAK256 0000075c: SLOAD 0000075d: SWAP1 0000075e: JUMP 0000075f: JUMPDEST 00000760: SWAP1 00000761: MLOAD 00000762: SWAP1 00000763: DUP2 00000764: MSTORE 00000765: RETURN 00000766: JUMPDEST 00000767: POP 00000768: POP 00000769: CALLVALUE 0000076a: PUSH2 0x02e1 0000076d: JUMPI 0000076e: PUSH1 0x20 00000770: CALLDATASIZE 00000771: PUSH1 0x03 00000773: NOT 00000774: ADD 00000775: SLT 00000776: PUSH2 0x02e1 00000779: JUMPI 0000077a: PUSH1 0x20 0000077c: SWAP2 0000077d: DUP2 0000077e: SWAP1 0000077f: PUSH1 0x01 00000781: PUSH1 0x01 00000783: PUSH1 0xa0 00000785: SHL 00000786: SUB 00000787: PUSH2 0x078e 0000078a: PUSH2 0x0c83 0000078d: JUMP 0000078e: JUMPDEST 0000078f: AND 00000790: DUP2 00000791: MSTORE 00000792: PUSH1 0x07 00000794: DUP5 00000795: MSTORE 00000796: KECCAK256 00000797: SLOAD 00000798: SWAP1 00000799: MLOAD 0000079a: SWAP1 0000079b: DUP2 0000079c: MSTORE 0000079d: RETURN 0000079e: JUMPDEST 0000079f: POP 000007a0: POP 000007a1: CALLVALUE 000007a2: PUSH2 0x02e1 000007a5: JUMPI 000007a6: PUSH1 0x20 000007a8: CALLDATASIZE 000007a9: PUSH1 0x03 000007ab: NOT 000007ac: ADD 000007ad: SLT 000007ae: PUSH2 0x02e1 000007b1: JUMPI 000007b2: PUSH1 0x20 000007b4: SWAP2 000007b5: PUSH2 0x075f 000007b8: SWAP1 000007b9: DUP3 000007ba: PUSH1 0x01 000007bc: PUSH1 0x01 000007be: PUSH1 0xa0 000007c0: SHL 000007c1: SUB 000007c2: PUSH2 0x07c9 000007c5: PUSH2 0x0c83 000007c8: JUMP 000007c9: JUMPDEST 000007ca: AND 000007cb: SWAP2 000007cc: DUP3 000007cd: DUP2 000007ce: MSTORE 000007cf: DUP1 000007d0: DUP7 000007d1: MSTORE 000007d2: PUSH10 0xd3c21bcecceda1000000 000007dd: PUSH2 0x07ec 000007e0: DUP4 000007e1: DUP4 000007e2: KECCAK256 000007e3: SLOAD 000007e4: PUSH1 0x06 000007e6: SLOAD 000007e7: SWAP1 000007e8: PUSH2 0x0d68 000007eb: JUMP 000007ec: JUMPDEST 000007ed: DIV 000007ee: SWAP3 000007ef: DUP2 000007f0: MSTORE 000007f1: PUSH1 0x07 000007f3: DUP7 000007f4: MSTORE 000007f5: KECCAK256 000007f6: SLOAD 000007f7: SWAP1 000007f8: PUSH2 0x0d91 000007fb: JUMP 000007fc: JUMPDEST 000007fd: POP 000007fe: POP 000007ff: CALLVALUE 00000800: PUSH2 0x02e1 00000803: JUMPI 00000804: DUP1 00000805: PUSH1 0x03 00000807: NOT 00000808: CALLDATASIZE 00000809: ADD 0000080a: SLT 0000080b: PUSH2 0x02e1 0000080e: JUMPI 0000080f: PUSH2 0x0389 00000812: PUSH1 0x20 00000814: SWAP3 00000815: PUSH2 0x0845 00000818: PUSH2 0x081f 0000081b: PUSH2 0x0c83 0000081e: JUMP 0000081f: JUMPDEST 00000820: CALLER 00000821: DUP4 00000822: MSTORE 00000823: PUSH1 0x01 00000825: DUP7 00000826: MSTORE 00000827: DUP5 00000828: DUP4 00000829: KECCAK256 0000082a: PUSH1 0x01 0000082c: PUSH1 0x01 0000082e: PUSH1 0xa0 00000830: SHL 00000831: SUB 00000832: DUP3 00000833: AND 00000834: DUP5 00000835: MSTORE 00000836: DUP7 00000837: MSTORE 00000838: SWAP2 00000839: DUP5 0000083a: SWAP1 0000083b: KECCAK256 0000083c: SLOAD 0000083d: PUSH1 0x24 0000083f: CALLDATALOAD 00000840: SWAP1 00000841: PUSH2 0x0daa 00000844: JUMP 00000845: JUMPDEST 00000846: SWAP1 00000847: CALLER 00000848: PUSH2 0x0f55 0000084b: JUMP 0000084c: JUMPDEST 0000084d: POP 0000084e: POP 0000084f: CALLVALUE 00000850: PUSH2 0x02e1 00000853: JUMPI 00000854: DUP2 00000855: PUSH1 0x03 00000857: NOT 00000858: CALLDATASIZE 00000859: ADD 0000085a: SLT 0000085b: PUSH2 0x02e1 0000085e: JUMPI 0000085f: MLOAD 00000860: PUSH32 0x000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044 00000881: PUSH1 0x01 00000883: PUSH1 0x01 00000885: PUSH1 0xa0 00000887: SHL 00000888: SUB 00000889: AND 0000088a: DUP2 0000088b: MSTORE 0000088c: PUSH1 0x20 0000088e: SWAP1 0000088f: RETURN 00000890: JUMPDEST 00000891: POP 00000892: POP 00000893: CALLVALUE 00000894: PUSH2 0x02e1 00000897: JUMPI 00000898: DUP2 00000899: PUSH1 0x03 0000089b: NOT 0000089c: CALLDATASIZE 0000089d: ADD 0000089e: SLT 0000089f: PUSH2 0x02e1 000008a2: JUMPI 000008a3: PUSH2 0x08aa 000008a6: PUSH2 0x128e 000008a9: JUMP 000008aa: JUMPDEST 000008ab: CALLER 000008ac: DUP3 000008ad: MSTORE 000008ae: DUP2 000008af: PUSH1 0x20 000008b1: MSTORE 000008b2: PUSH10 0xd3c21bcecceda1000000 000008bd: PUSH2 0x08cc 000008c0: DUP3 000008c1: DUP5 000008c2: KECCAK256 000008c3: SLOAD 000008c4: PUSH1 0x06 000008c6: SLOAD 000008c7: SWAP1 000008c8: PUSH2 0x0d68 000008cb: JUMP 000008cc: JUMPDEST 000008cd: DIV 000008ce: SWAP1 000008cf: CALLER 000008d0: DUP4 000008d1: MSTORE 000008d2: PUSH1 0x07 000008d4: PUSH1 0x20 000008d6: MSTORE 000008d7: PUSH2 0x08e3 000008da: DUP2 000008db: DUP5 000008dc: KECCAK256 000008dd: SLOAD 000008de: DUP4 000008df: PUSH2 0x0d91 000008e2: JUMP 000008e3: JUMPDEST 000008e4: SWAP2 000008e5: CALLER 000008e6: DUP5 000008e7: MSTORE 000008e8: PUSH1 0x07 000008ea: PUSH1 0x20 000008ec: MSTORE 000008ed: DUP2 000008ee: DUP5 000008ef: KECCAK256 000008f0: SSTORE 000008f1: PUSH2 0x091b 000008f4: DUP3 000008f5: CALLER 000008f6: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000917: PUSH2 0x12e4 0000091a: JUMP 0000091b: JUMPDEST 0000091c: MLOAD 0000091d: SWAP1 0000091e: DUP2 0000091f: MSTORE 00000920: PUSH32 0x106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241 00000941: PUSH1 0x20 00000943: CALLER 00000944: SWAP3 00000945: LOG2 00000946: PUSH1 0x01 00000948: PUSH1 0x05 0000094a: SSTORE 0000094b: DUP1 0000094c: RETURN 0000094d: JUMPDEST 0000094e: DUP4 0000094f: DUP3 00000950: CALLVALUE 00000951: PUSH2 0x02e1 00000954: JUMPI 00000955: PUSH1 0x20 00000957: CALLDATASIZE 00000958: PUSH1 0x03 0000095a: NOT 0000095b: ADD 0000095c: SLT 0000095d: PUSH2 0x02e1 00000960: JUMPI 00000961: CALLDATALOAD 00000962: DUP1 00000963: ISZERO 00000964: ISZERO 00000965: DUP1 00000966: SWAP2 00000967: SUB 00000968: PUSH2 0x02e1 0000096b: JUMPI 0000096c: PUSH2 0x0973 0000096f: PUSH2 0x1236 00000972: JUMP 00000973: JUMPDEST 00000974: PUSH1 0x08 00000976: DUP1 00000977: SLOAD 00000978: PUSH1 0xff 0000097a: PUSH1 0xa0 0000097c: SHL 0000097d: NOT 0000097e: AND 0000097f: PUSH1 0xa0 00000981: SWAP3 00000982: SWAP1 00000983: SWAP3 00000984: SHL 00000985: PUSH1 0xff 00000987: PUSH1 0xa0 00000989: SHL 0000098a: AND 0000098b: SWAP2 0000098c: SWAP1 0000098d: SWAP2 0000098e: OR 0000098f: SWAP1 00000990: SSTORE 00000991: DUP1 00000992: RETURN 00000993: JUMPDEST 00000994: POP 00000995: POP 00000996: CALLVALUE 00000997: PUSH2 0x02e1 0000099a: JUMPI 0000099b: DUP2 0000099c: PUSH1 0x03 0000099e: NOT 0000099f: CALLDATASIZE 000009a0: ADD 000009a1: SLT 000009a2: PUSH2 0x02e1 000009a5: JUMPI 000009a6: PUSH1 0x20 000009a8: SWAP1 000009a9: MLOAD 000009aa: PUSH1 0x12 000009ac: DUP2 000009ad: MSTORE 000009ae: RETURN 000009af: JUMPDEST 000009b0: POP 000009b1: DUP3 000009b2: SWAP1 000009b3: CALLVALUE 000009b4: PUSH2 0x02e1 000009b7: JUMPI 000009b8: PUSH1 0x60 000009ba: CALLDATASIZE 000009bb: PUSH1 0x03 000009bd: NOT 000009be: ADD 000009bf: SLT 000009c0: PUSH2 0x02e1 000009c3: JUMPI 000009c4: PUSH2 0x09cb 000009c7: PUSH2 0x0c83 000009ca: JUMP 000009cb: JUMPDEST 000009cc: PUSH2 0x09d3 000009cf: PUSH2 0x0c99 000009d2: JUMP 000009d3: JUMPDEST 000009d4: SWAP2 000009d5: DUP5 000009d6: PUSH1 0x44 000009d8: CALLDATALOAD 000009d9: SWAP5 000009da: PUSH1 0x01 000009dc: DUP1 000009dd: PUSH1 0xa0 000009df: SHL 000009e0: SUB 000009e1: DUP5 000009e2: AND 000009e3: DUP2 000009e4: MSTORE 000009e5: PUSH1 0x01 000009e7: PUSH1 0x20 000009e9: MSTORE 000009ea: DUP2 000009eb: DUP2 000009ec: KECCAK256 000009ed: CALLER 000009ee: DUP3 000009ef: MSTORE 000009f0: PUSH1 0x20 000009f2: MSTORE 000009f3: KECCAK256 000009f4: SLOAD 000009f5: SWAP1 000009f6: PUSH1 0x00 000009f8: NOT 000009f9: DUP3 000009fa: SUB 000009fb: PUSH2 0x0a0d 000009fe: JUMPI 000009ff: JUMPDEST 00000a00: PUSH1 0x20 00000a02: DUP7 00000a03: PUSH2 0x0389 00000a06: DUP8 00000a07: DUP8 00000a08: DUP8 00000a09: PUSH2 0x1057 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: DUP5 00000a0f: DUP3 00000a10: LT 00000a11: PUSH2 0x0a36 00000a14: JUMPI 00000a15: POP 00000a16: SWAP2 00000a17: DUP4 00000a18: SWAP2 00000a19: PUSH2 0x0a2b 00000a1c: PUSH1 0x20 00000a1e: SWAP7 00000a1f: SWAP6 00000a20: PUSH2 0x0389 00000a23: SWAP6 00000a24: SUB 00000a25: CALLER 00000a26: DUP4 00000a27: PUSH2 0x0f55 00000a2a: JUMP 00000a2b: JUMPDEST 00000a2c: SWAP2 00000a2d: SWAP4 00000a2e: SWAP5 00000a2f: DUP2 00000a30: SWAP4 00000a31: POP 00000a32: PUSH2 0x09ff 00000a35: JUMP 00000a36: JUMPDEST 00000a37: PUSH1 0x64 00000a39: SWAP1 00000a3a: PUSH1 0x20 00000a3c: DUP8 00000a3d: MLOAD 00000a3e: SWAP2 00000a3f: PUSH3 0x461bcd 00000a43: PUSH1 0xe5 00000a45: SHL 00000a46: DUP4 00000a47: MSTORE 00000a48: DUP3 00000a49: ADD 00000a4a: MSTORE 00000a4b: PUSH1 0x1d 00000a4d: PUSH1 0x24 00000a4f: DUP3 00000a50: ADD 00000a51: MSTORE 00000a52: PUSH32 0x45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000 00000a73: PUSH1 0x44 00000a75: DUP3 00000a76: ADD 00000a77: MSTORE 00000a78: REVERT 00000a79: JUMPDEST 00000a7a: POP 00000a7b: POP 00000a7c: CALLVALUE 00000a7d: PUSH2 0x02e1 00000a80: JUMPI 00000a81: DUP2 00000a82: PUSH1 0x03 00000a84: NOT 00000a85: CALLDATASIZE 00000a86: ADD 00000a87: SLT 00000a88: PUSH2 0x02e1 00000a8b: JUMPI 00000a8c: MLOAD 00000a8d: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000aae: PUSH1 0x01 00000ab0: PUSH1 0x01 00000ab2: PUSH1 0xa0 00000ab4: SHL 00000ab5: SUB 00000ab6: AND 00000ab7: DUP2 00000ab8: MSTORE 00000ab9: PUSH1 0x20 00000abb: SWAP1 00000abc: RETURN 00000abd: JUMPDEST 00000abe: POP 00000abf: POP 00000ac0: CALLVALUE 00000ac1: PUSH2 0x02e1 00000ac4: JUMPI 00000ac5: DUP2 00000ac6: PUSH1 0x03 00000ac8: NOT 00000ac9: CALLDATASIZE 00000aca: ADD 00000acb: SLT 00000acc: PUSH2 0x02e1 00000acf: JUMPI 00000ad0: PUSH1 0x20 00000ad2: SWAP1 00000ad3: PUSH1 0x02 00000ad5: SLOAD 00000ad6: SWAP1 00000ad7: MLOAD 00000ad8: SWAP1 00000ad9: DUP2 00000ada: MSTORE 00000adb: RETURN 00000adc: JUMPDEST 00000add: POP 00000ade: POP 00000adf: CALLVALUE 00000ae0: PUSH2 0x02e1 00000ae3: JUMPI 00000ae4: DUP1 00000ae5: PUSH1 0x03 00000ae7: NOT 00000ae8: CALLDATASIZE 00000ae9: ADD 00000aea: SLT 00000aeb: PUSH2 0x02e1 00000aee: JUMPI 00000aef: PUSH1 0x20 00000af1: SWAP1 00000af2: PUSH2 0x0389 00000af5: PUSH2 0x0afc 00000af8: PUSH2 0x0c83 00000afb: JUMP 00000afc: JUMPDEST 00000afd: PUSH1 0x24 00000aff: CALLDATALOAD 00000b00: SWAP1 00000b01: CALLER 00000b02: PUSH2 0x0f55 00000b05: JUMP 00000b06: JUMPDEST 00000b07: POP 00000b08: SWAP1 00000b09: CALLVALUE 00000b0a: PUSH2 0x028f 00000b0d: JUMPI 00000b0e: DUP3 00000b0f: PUSH1 0x03 00000b11: NOT 00000b12: CALLDATASIZE 00000b13: ADD 00000b14: SLT 00000b15: PUSH2 0x028f 00000b18: JUMPI 00000b19: DUP1 00000b1a: MLOAD 00000b1b: SWAP2 00000b1c: DUP4 00000b1d: PUSH1 0x03 00000b1f: SLOAD 00000b20: SWAP1 00000b21: PUSH1 0x01 00000b23: SWAP1 00000b24: DUP3 00000b25: PUSH1 0x01 00000b27: SHR 00000b28: SWAP3 00000b29: PUSH1 0x01 00000b2b: DUP2 00000b2c: AND 00000b2d: DUP1 00000b2e: ISZERO 00000b2f: PUSH2 0x0bf2 00000b32: JUMPI 00000b33: JUMPDEST 00000b34: PUSH1 0x20 00000b36: SWAP6 00000b37: DUP7 00000b38: DUP7 00000b39: LT 00000b3a: DUP3 00000b3b: EQ 00000b3c: PUSH2 0x0bdf 00000b3f: JUMPI 00000b40: POP 00000b41: DUP5 00000b42: DUP9 00000b43: MSTORE 00000b44: SWAP1 00000b45: DUP2 00000b46: ISZERO 00000b47: PUSH2 0x0bbd 00000b4a: JUMPI 00000b4b: POP 00000b4c: PUSH1 0x01 00000b4e: EQ 00000b4f: PUSH2 0x0b64 00000b52: JUMPI 00000b53: JUMPDEST 00000b54: PUSH2 0x04a0 00000b57: DUP7 00000b58: DUP7 00000b59: PUSH2 0x0496 00000b5c: DUP3 00000b5d: DUP12 00000b5e: SUB 00000b5f: DUP4 00000b60: PUSH2 0x0d30 00000b63: JUMP 00000b64: JUMPDEST 00000b65: SWAP3 00000b66: SWAP6 00000b67: POP 00000b68: PUSH1 0x03 00000b6a: DUP4 00000b6b: MSTORE 00000b6c: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b 00000b8d: JUMPDEST 00000b8e: DUP3 00000b8f: DUP5 00000b90: LT 00000b91: PUSH2 0x0baa 00000b94: JUMPI 00000b95: POP 00000b96: POP 00000b97: POP 00000b98: DUP3 00000b99: PUSH2 0x04a0 00000b9c: SWAP5 00000b9d: PUSH2 0x0496 00000ba0: SWAP3 00000ba1: DUP3 00000ba2: ADD 00000ba3: ADD 00000ba4: SWAP5 00000ba5: CODESIZE 00000ba6: PUSH2 0x0b53 00000ba9: JUMP 00000baa: JUMPDEST 00000bab: DUP1 00000bac: SLOAD 00000bad: DUP7 00000bae: DUP6 00000baf: ADD 00000bb0: DUP9 00000bb1: ADD 00000bb2: MSTORE 00000bb3: SWAP3 00000bb4: DUP7 00000bb5: ADD 00000bb6: SWAP3 00000bb7: DUP2 00000bb8: ADD 00000bb9: PUSH2 0x0b8d 00000bbc: JUMP 00000bbd: JUMPDEST 00000bbe: PUSH1 0xff 00000bc0: NOT 00000bc1: AND 00000bc2: DUP8 00000bc3: DUP7 00000bc4: ADD 00000bc5: MSTORE 00000bc6: POP 00000bc7: POP 00000bc8: POP 00000bc9: ISZERO 00000bca: ISZERO 00000bcb: PUSH1 0x05 00000bcd: SHL 00000bce: DUP4 00000bcf: ADD 00000bd0: ADD 00000bd1: SWAP3 00000bd2: POP 00000bd3: PUSH2 0x0496 00000bd6: DUP3 00000bd7: PUSH2 0x04a0 00000bda: CODESIZE 00000bdb: PUSH2 0x0b53 00000bde: JUMP 00000bdf: JUMPDEST 00000be0: PUSH4 0x4e487b71 00000be5: PUSH1 0xe0 00000be7: SHL 00000be8: DUP5 00000be9: MSTORE 00000bea: PUSH1 0x22 00000bec: SWAP1 00000bed: MSTORE 00000bee: PUSH1 0x24 00000bf0: DUP4 00000bf1: REVERT 00000bf2: JUMPDEST 00000bf3: SWAP4 00000bf4: PUSH1 0x7f 00000bf6: AND 00000bf7: SWAP4 00000bf8: PUSH2 0x0b33 00000bfb: JUMP 00000bfc: JUMPDEST 00000bfd: DUP5 00000bfe: SWAP1 00000bff: CALLVALUE 00000c00: PUSH2 0x02e1 00000c03: JUMPI 00000c04: DUP2 00000c05: PUSH1 0x03 00000c07: NOT 00000c08: CALLDATASIZE 00000c09: ADD 00000c0a: SLT 00000c0b: PUSH2 0x02e1 00000c0e: JUMPI 00000c0f: PUSH1 0x20 00000c11: SWAP1 00000c12: PUSH1 0x02 00000c14: SLOAD 00000c15: DUP2 00000c16: MSTORE 00000c17: RETURN 00000c18: JUMPDEST 00000c19: PUSH1 0x20 00000c1b: DUP1 00000c1c: DUP3 00000c1d: MSTORE 00000c1e: DUP3 00000c1f: MLOAD 00000c20: DUP2 00000c21: DUP4 00000c22: ADD 00000c23: DUP2 00000c24: SWAP1 00000c25: MSTORE 00000c26: SWAP1 00000c27: SWAP4 00000c28: SWAP3 00000c29: PUSH1 0x00 00000c2b: JUMPDEST 00000c2c: DUP3 00000c2d: DUP2 00000c2e: LT 00000c2f: PUSH2 0x0c4d 00000c32: JUMPI 00000c33: POP 00000c34: POP 00000c35: PUSH1 0x40 00000c37: SWAP3 00000c38: SWAP4 00000c39: POP 00000c3a: PUSH1 0x00 00000c3c: DUP4 00000c3d: DUP3 00000c3e: DUP5 00000c3f: ADD 00000c40: ADD 00000c41: MSTORE 00000c42: PUSH1 0x1f 00000c44: DUP1 00000c45: NOT 00000c46: SWAP2 00000c47: ADD 00000c48: AND 00000c49: ADD 00000c4a: ADD 00000c4b: SWAP1 00000c4c: JUMP 00000c4d: JUMPDEST 00000c4e: DUP2 00000c4f: DUP2 00000c50: ADD 00000c51: DUP7 00000c52: ADD 00000c53: MLOAD 00000c54: DUP5 00000c55: DUP3 00000c56: ADD 00000c57: PUSH1 0x40 00000c59: ADD 00000c5a: MSTORE 00000c5b: DUP6 00000c5c: ADD 00000c5d: PUSH2 0x0c2b 00000c60: JUMP 00000c61: JUMPDEST 00000c62: CALLVALUE 00000c63: PUSH2 0x0c7e 00000c66: JUMPI 00000c67: PUSH1 0x20 00000c69: CALLDATASIZE 00000c6a: PUSH1 0x03 00000c6c: NOT 00000c6d: ADD 00000c6e: SLT 00000c6f: PUSH2 0x0c7e 00000c72: JUMPI 00000c73: PUSH1 0x20 00000c75: PUSH1 0x40 00000c77: MLOAD 00000c78: PUSH1 0x04 00000c7a: CALLDATALOAD 00000c7b: DUP2 00000c7c: MSTORE 00000c7d: RETURN 00000c7e: JUMPDEST 00000c7f: PUSH1 0x00 00000c81: DUP1 00000c82: REVERT 00000c83: JUMPDEST 00000c84: PUSH1 0x04 00000c86: CALLDATALOAD 00000c87: SWAP1 00000c88: PUSH1 0x01 00000c8a: PUSH1 0x01 00000c8c: PUSH1 0xa0 00000c8e: SHL 00000c8f: SUB 00000c90: DUP3 00000c91: AND 00000c92: DUP3 00000c93: SUB 00000c94: PUSH2 0x0c7e 00000c97: JUMPI 00000c98: JUMP 00000c99: JUMPDEST 00000c9a: PUSH1 0x24 00000c9c: CALLDATALOAD 00000c9d: SWAP1 00000c9e: PUSH1 0x01 00000ca0: PUSH1 0x01 00000ca2: PUSH1 0xa0 00000ca4: SHL 00000ca5: SUB 00000ca6: DUP3 00000ca7: AND 00000ca8: DUP3 00000ca9: SUB 00000caa: PUSH2 0x0c7e 00000cad: JUMPI 00000cae: JUMP 00000caf: JUMPDEST 00000cb0: CALLVALUE 00000cb1: PUSH2 0x0c7e 00000cb4: JUMPI 00000cb5: PUSH1 0x20 00000cb7: CALLDATASIZE 00000cb8: PUSH1 0x03 00000cba: NOT 00000cbb: ADD 00000cbc: SLT 00000cbd: PUSH2 0x0c7e 00000cc0: JUMPI 00000cc1: PUSH2 0x0cc8 00000cc4: PUSH2 0x0c83 00000cc7: JUMP 00000cc8: JUMPDEST 00000cc9: POP 00000cca: PUSH1 0x20 00000ccc: PUSH1 0x40 00000cce: MLOAD 00000ccf: PUSH1 0x00 00000cd1: NOT 00000cd2: DUP2 00000cd3: MSTORE 00000cd4: RETURN 00000cd5: JUMPDEST 00000cd6: PUSH1 0x60 00000cd8: SWAP1 00000cd9: PUSH1 0x03 00000cdb: NOT 00000cdc: ADD 00000cdd: SLT 00000cde: PUSH2 0x0c7e 00000ce1: JUMPI 00000ce2: PUSH1 0x04 00000ce4: CALLDATALOAD 00000ce5: SWAP1 00000ce6: PUSH1 0x01 00000ce8: PUSH1 0x01 00000cea: PUSH1 0xa0 00000cec: SHL 00000ced: SUB 00000cee: SWAP1 00000cef: PUSH1 0x24 00000cf1: CALLDATALOAD 00000cf2: DUP3 00000cf3: DUP2 00000cf4: AND 00000cf5: DUP2 00000cf6: SUB 00000cf7: PUSH2 0x0c7e 00000cfa: JUMPI 00000cfb: SWAP2 00000cfc: PUSH1 0x44 00000cfe: CALLDATALOAD 00000cff: SWAP1 00000d00: DUP2 00000d01: AND 00000d02: DUP2 00000d03: SUB 00000d04: PUSH2 0x0c7e 00000d07: JUMPI 00000d08: SWAP1 00000d09: JUMP 00000d0a: JUMPDEST 00000d0b: CALLVALUE 00000d0c: PUSH2 0x0c7e 00000d0f: JUMPI 00000d10: PUSH1 0x20 00000d12: CALLDATASIZE 00000d13: PUSH1 0x03 00000d15: NOT 00000d16: ADD 00000d17: SLT 00000d18: PUSH2 0x0c7e 00000d1b: JUMPI 00000d1c: PUSH1 0x20 00000d1e: PUSH2 0x0d28 00000d21: PUSH2 0x0744 00000d24: PUSH2 0x0c83 00000d27: JUMP 00000d28: JUMPDEST 00000d29: PUSH1 0x40 00000d2b: MLOAD 00000d2c: SWAP1 00000d2d: DUP2 00000d2e: MSTORE 00000d2f: RETURN 00000d30: JUMPDEST 00000d31: SWAP1 00000d32: PUSH1 0x1f 00000d34: DUP1 00000d35: NOT 00000d36: SWAP2 00000d37: ADD 00000d38: AND 00000d39: DUP2 00000d3a: ADD 00000d3b: SWAP1 00000d3c: DUP2 00000d3d: LT 00000d3e: PUSH8 0xffffffffffffffff 00000d47: DUP3 00000d48: GT 00000d49: OR 00000d4a: PUSH2 0x0d52 00000d4d: JUMPI 00000d4e: PUSH1 0x40 00000d50: MSTORE 00000d51: JUMP 00000d52: JUMPDEST 00000d53: PUSH4 0x4e487b71 00000d58: PUSH1 0xe0 00000d5a: SHL 00000d5b: PUSH1 0x00 00000d5d: MSTORE 00000d5e: PUSH1 0x41 00000d60: PUSH1 0x04 00000d62: MSTORE 00000d63: PUSH1 0x24 00000d65: PUSH1 0x00 00000d67: REVERT 00000d68: JUMPDEST 00000d69: DUP2 00000d6a: DUP2 00000d6b: MUL 00000d6c: SWAP3 00000d6d: SWAP2 00000d6e: DUP2 00000d6f: ISZERO 00000d70: SWAP2 00000d71: DUP5 00000d72: DIV 00000d73: EQ 00000d74: OR 00000d75: ISZERO 00000d76: PUSH2 0x0d7b 00000d79: JUMPI 00000d7a: JUMP 00000d7b: JUMPDEST 00000d7c: PUSH4 0x4e487b71 00000d81: PUSH1 0xe0 00000d83: SHL 00000d84: PUSH1 0x00 00000d86: MSTORE 00000d87: PUSH1 0x11 00000d89: PUSH1 0x04 00000d8b: MSTORE 00000d8c: PUSH1 0x24 00000d8e: PUSH1 0x00 00000d90: REVERT 00000d91: JUMPDEST 00000d92: DUP2 00000d93: DUP2 00000d94: SUB 00000d95: SWAP3 00000d96: SWAP2 00000d97: PUSH1 0x00 00000d99: SGT 00000d9a: DUP1 00000d9b: ISZERO 00000d9c: DUP3 00000d9d: DUP6 00000d9e: SGT 00000d9f: AND 00000da0: SWAP2 00000da1: DUP5 00000da2: SLT 00000da3: AND 00000da4: OR 00000da5: PUSH2 0x0d7b 00000da8: JUMPI 00000da9: JUMP 00000daa: JUMPDEST 00000dab: SWAP2 00000dac: SWAP1 00000dad: DUP3 00000dae: ADD 00000daf: DUP1 00000db0: SWAP3 00000db1: GT 00000db2: PUSH2 0x0d7b 00000db5: JUMPI 00000db6: JUMP 00000db7: JUMPDEST 00000db8: SWAP2 00000db9: SWAP1 00000dba: DUP3 00000dbb: SWAP1 00000dbc: PUSH2 0x0de7 00000dbf: DUP3 00000dc0: ADDRESS 00000dc1: CALLER 00000dc2: PUSH32 0x000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044 00000de3: PUSH2 0x1336 00000de6: JUMP 00000de7: JUMPDEST 00000de8: PUSH1 0x01 00000dea: PUSH1 0x01 00000dec: PUSH1 0xa0 00000dee: SHL 00000def: SUB 00000df0: AND 00000df1: SWAP1 00000df2: DUP2 00000df3: ISZERO 00000df4: PUSH2 0x0ed4 00000df7: JUMPI 00000df8: PUSH1 0x00 00000dfa: DUP3 00000dfb: DUP2 00000dfc: MSTORE 00000dfd: PUSH1 0x07 00000dff: PUSH1 0x20 00000e01: MSTORE 00000e02: PUSH1 0x40 00000e04: SWAP1 00000e05: DUP2 00000e06: DUP2 00000e07: KECCAK256 00000e08: SLOAD 00000e09: PUSH10 0xd3c21bcecceda1000000 00000e14: PUSH2 0x0e1f 00000e17: PUSH1 0x06 00000e19: SLOAD 00000e1a: DUP7 00000e1b: PUSH2 0x0d68 00000e1e: JUMP 00000e1f: JUMPDEST 00000e20: DIV 00000e21: SWAP1 00000e22: DUP3 00000e23: DUP3 00000e24: DUP3 00000e25: ADD 00000e26: SWAP3 00000e27: DUP4 00000e28: SLT 00000e29: SWAP2 00000e2a: SLT 00000e2b: SWAP1 00000e2c: DUP1 00000e2d: ISZERO 00000e2e: DUP3 00000e2f: AND 00000e30: SWAP2 00000e31: ISZERO 00000e32: AND 00000e33: OR 00000e34: PUSH2 0x0ec0 00000e37: JUMPI 00000e38: DUP2 00000e39: DUP6 00000e3a: SWAP2 00000e3b: DUP3 00000e3c: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 00000e5d: SWAP6 00000e5e: SWAP5 00000e5f: MSTORE 00000e60: PUSH1 0x07 00000e62: PUSH1 0x20 00000e64: MSTORE 00000e65: DUP4 00000e66: DUP3 00000e67: KECCAK256 00000e68: SSTORE 00000e69: PUSH2 0x0e74 00000e6c: DUP6 00000e6d: PUSH1 0x02 00000e6f: SLOAD 00000e70: PUSH2 0x0daa 00000e73: JUMP 00000e74: JUMPDEST 00000e75: PUSH1 0x02 00000e77: SSTORE 00000e78: DUP2 00000e79: DUP2 00000e7a: MSTORE 00000e7b: DUP1 00000e7c: PUSH1 0x20 00000e7e: MSTORE 00000e7f: DUP3 00000e80: DUP2 00000e81: KECCAK256 00000e82: DUP6 00000e83: DUP2 00000e84: SLOAD 00000e85: ADD 00000e86: SWAP1 00000e87: SSTORE 00000e88: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000ea9: PUSH1 0x20 00000eab: DUP5 00000eac: MLOAD 00000ead: DUP8 00000eae: DUP2 00000eaf: MSTORE 00000eb0: LOG3 00000eb1: DUP1 00000eb2: MLOAD 00000eb3: SWAP3 00000eb4: DUP1 00000eb5: DUP5 00000eb6: MSTORE 00000eb7: PUSH1 0x20 00000eb9: DUP5 00000eba: ADD 00000ebb: MSTORE 00000ebc: CALLER 00000ebd: SWAP3 00000ebe: LOG3 00000ebf: JUMP 00000ec0: JUMPDEST 00000ec1: PUSH4 0x4e487b71 00000ec6: PUSH1 0xe0 00000ec8: SHL 00000ec9: DUP3 00000eca: MSTORE 00000ecb: PUSH1 0x11 00000ecd: PUSH1 0x04 00000ecf: MSTORE 00000ed0: PUSH1 0x24 00000ed2: DUP3 00000ed3: REVERT 00000ed4: JUMPDEST 00000ed5: PUSH1 0x40 00000ed7: MLOAD 00000ed8: PUSH3 0x461bcd 00000edc: PUSH1 0xe5 00000ede: SHL 00000edf: DUP2 00000ee0: MSTORE 00000ee1: PUSH1 0x20 00000ee3: PUSH1 0x04 00000ee5: DUP3 00000ee6: ADD 00000ee7: MSTORE 00000ee8: PUSH1 0x1f 00000eea: PUSH1 0x24 00000eec: DUP3 00000eed: ADD 00000eee: MSTORE 00000eef: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300 00000f10: PUSH1 0x44 00000f12: DUP3 00000f13: ADD 00000f14: MSTORE 00000f15: PUSH1 0x64 00000f17: SWAP1 00000f18: REVERT 00000f19: JUMPDEST 00000f1a: ISZERO 00000f1b: PUSH2 0x0f20 00000f1e: JUMPI 00000f1f: JUMP 00000f20: JUMPDEST 00000f21: PUSH1 0x40 00000f23: MLOAD 00000f24: PUSH3 0x461bcd 00000f28: PUSH1 0xe5 00000f2a: SHL 00000f2b: DUP2 00000f2c: MSTORE 00000f2d: PUSH1 0x20 00000f2f: PUSH1 0x04 00000f31: DUP3 00000f32: ADD 00000f33: MSTORE 00000f34: PUSH1 0x0d 00000f36: PUSH1 0x24 00000f38: DUP3 00000f39: ADD 00000f3a: MSTORE 00000f3b: PUSH13 0x1393d517d4d5541413d4951151 00000f49: PUSH1 0x9a 00000f4b: SHL 00000f4c: PUSH1 0x44 00000f4e: DUP3 00000f4f: ADD 00000f50: MSTORE 00000f51: PUSH1 0x64 00000f53: SWAP1 00000f54: REVERT 00000f55: JUMPDEST 00000f56: PUSH1 0x01 00000f58: PUSH1 0x01 00000f5a: PUSH1 0xa0 00000f5c: SHL 00000f5d: SUB 00000f5e: SWAP1 00000f5f: DUP2 00000f60: AND 00000f61: SWAP2 00000f62: DUP3 00000f63: ISZERO 00000f64: PUSH2 0x1006 00000f67: JUMPI 00000f68: AND 00000f69: SWAP2 00000f6a: DUP3 00000f6b: ISZERO 00000f6c: PUSH2 0x0fb6 00000f6f: JUMPI 00000f70: PUSH1 0x20 00000f72: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000f93: SWAP2 00000f94: DUP4 00000f95: PUSH1 0x00 00000f97: MSTORE 00000f98: PUSH1 0x01 00000f9a: DUP3 00000f9b: MSTORE 00000f9c: PUSH1 0x40 00000f9e: PUSH1 0x00 00000fa0: KECCAK256 00000fa1: DUP6 00000fa2: PUSH1 0x00 00000fa4: MSTORE 00000fa5: DUP3 00000fa6: MSTORE 00000fa7: DUP1 00000fa8: PUSH1 0x40 00000faa: PUSH1 0x00 00000fac: KECCAK256 00000fad: SSTORE 00000fae: PUSH1 0x40 00000fb0: MLOAD 00000fb1: SWAP1 00000fb2: DUP2 00000fb3: MSTORE 00000fb4: LOG3 00000fb5: JUMP 00000fb6: JUMPDEST 00000fb7: PUSH1 0x40 00000fb9: MLOAD 00000fba: PUSH3 0x461bcd 00000fbe: PUSH1 0xe5 00000fc0: SHL 00000fc1: DUP2 00000fc2: MSTORE 00000fc3: PUSH1 0x20 00000fc5: PUSH1 0x04 00000fc7: DUP3 00000fc8: ADD 00000fc9: MSTORE 00000fca: PUSH1 0x22 00000fcc: PUSH1 0x24 00000fce: DUP3 00000fcf: ADD 00000fd0: MSTORE 00000fd1: PUSH32 0x45524332303a20617070726f766520746f20746865207a65726f206164647265 00000ff2: PUSH1 0x44 00000ff4: DUP3 00000ff5: ADD 00000ff6: MSTORE 00000ff7: PUSH2 0x7373 00000ffa: PUSH1 0xf0 00000ffc: SHL 00000ffd: PUSH1 0x64 00000fff: DUP3 00001000: ADD 00001001: MSTORE 00001002: PUSH1 0x84 00001004: SWAP1 00001005: REVERT 00001006: JUMPDEST 00001007: PUSH1 0x40 00001009: MLOAD 0000100a: PUSH3 0x461bcd 0000100e: PUSH1 0xe5 00001010: SHL 00001011: DUP2 00001012: MSTORE 00001013: PUSH1 0x20 00001015: PUSH1 0x04 00001017: DUP3 00001018: ADD 00001019: MSTORE 0000101a: PUSH1 0x24 0000101c: DUP1 0000101d: DUP3 0000101e: ADD 0000101f: MSTORE 00001020: PUSH32 0x45524332303a20617070726f76652066726f6d20746865207a65726f20616464 00001041: PUSH1 0x44 00001043: DUP3 00001044: ADD 00001045: MSTORE 00001046: PUSH4 0x72657373 0000104b: PUSH1 0xe0 0000104d: SHL 0000104e: PUSH1 0x64 00001050: DUP3 00001051: ADD 00001052: MSTORE 00001053: PUSH1 0x84 00001055: SWAP1 00001056: REVERT 00001057: JUMPDEST 00001058: PUSH1 0x01 0000105a: PUSH1 0x01 0000105c: PUSH1 0xa0 0000105e: SHL 0000105f: SUB 00001060: SWAP1 00001061: DUP2 00001062: AND 00001063: SWAP2 00001064: DUP3 00001065: ISZERO 00001066: PUSH2 0x11e3 00001069: JUMPI 0000106a: AND 0000106b: SWAP2 0000106c: DUP3 0000106d: ISZERO 0000106e: PUSH2 0x1192 00001071: JUMPI 00001072: PUSH1 0x00 00001074: SWAP1 00001075: DUP3 00001076: DUP3 00001077: MSTORE 00001078: PUSH1 0x20 0000107a: SWAP2 0000107b: PUSH1 0x07 0000107d: DUP4 0000107e: MSTORE 0000107f: PUSH1 0x40 00001081: SWAP1 00001082: DUP2 00001083: DUP2 00001084: KECCAK256 00001085: SLOAD 00001086: PUSH2 0x10a8 00001089: PUSH10 0xd3c21bcecceda1000000 00001094: SWAP2 00001095: DUP3 00001096: PUSH2 0x10a1 00001099: PUSH1 0x06 0000109b: SLOAD 0000109c: DUP9 0000109d: PUSH2 0x0d68 000010a0: JUMP 000010a1: JUMPDEST 000010a2: DIV 000010a3: SWAP1 000010a4: PUSH2 0x0d91 000010a7: JUMP 000010a8: JUMPDEST 000010a9: DUP7 000010aa: DUP4 000010ab: MSTORE 000010ac: PUSH1 0x07 000010ae: DUP7 000010af: MSTORE 000010b0: DUP4 000010b1: DUP4 000010b2: KECCAK256 000010b3: SSTORE 000010b4: DUP7 000010b5: DUP3 000010b6: MSTORE 000010b7: DUP3 000010b8: DUP3 000010b9: KECCAK256 000010ba: SLOAD 000010bb: SWAP1 000010bc: PUSH2 0x10c7 000010bf: PUSH1 0x06 000010c1: SLOAD 000010c2: DUP7 000010c3: PUSH2 0x0d68 000010c6: JUMP 000010c7: JUMPDEST 000010c8: DIV 000010c9: SWAP1 000010ca: DUP3 000010cb: DUP3 000010cc: DUP3 000010cd: ADD 000010ce: SWAP3 000010cf: DUP4 000010d0: SLT 000010d1: SWAP2 000010d2: SLT 000010d3: SWAP1 000010d4: DUP1 000010d5: ISZERO 000010d6: DUP3 000010d7: AND 000010d8: SWAP2 000010d9: ISZERO 000010da: AND 000010db: OR 000010dc: PUSH2 0x0ec0 000010df: JUMPI 000010e0: DUP7 000010e1: DUP3 000010e2: MSTORE 000010e3: PUSH1 0x07 000010e5: DUP6 000010e6: MSTORE 000010e7: DUP3 000010e8: DUP3 000010e9: KECCAK256 000010ea: SSTORE 000010eb: DUP5 000010ec: DUP2 000010ed: MSTORE 000010ee: DUP1 000010ef: DUP5 000010f0: MSTORE 000010f1: DUP2 000010f2: DUP2 000010f3: KECCAK256 000010f4: SLOAD 000010f5: DUP4 000010f6: DUP2 000010f7: LT 000010f8: PUSH2 0x113f 000010fb: JUMPI 000010fc: SWAP2 000010fd: DUP2 000010fe: DUP5 000010ff: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001120: SWAP7 00001121: SWAP6 00001122: SWAP5 00001123: DUP9 00001124: DUP5 00001125: SWAP6 00001126: MSTORE 00001127: DUP3 00001128: DUP8 00001129: MSTORE 0000112a: SUB 0000112b: DUP3 0000112c: DUP3 0000112d: KECCAK256 0000112e: SSTORE 0000112f: DUP8 00001130: DUP2 00001131: MSTORE 00001132: KECCAK256 00001133: DUP3 00001134: DUP2 00001135: SLOAD 00001136: ADD 00001137: SWAP1 00001138: SSTORE 00001139: MLOAD 0000113a: SWAP1 0000113b: DUP2 0000113c: MSTORE 0000113d: LOG3 0000113e: JUMP 0000113f: JUMPDEST 00001140: DUP3 00001141: MLOAD 00001142: PUSH3 0x461bcd 00001146: PUSH1 0xe5 00001148: SHL 00001149: DUP2 0000114a: MSTORE 0000114b: PUSH1 0x04 0000114d: DUP2 0000114e: ADD 0000114f: DUP7 00001150: SWAP1 00001151: MSTORE 00001152: PUSH1 0x26 00001154: PUSH1 0x24 00001156: DUP3 00001157: ADD 00001158: MSTORE 00001159: PUSH32 0x45524332303a207472616e7366657220616d6f756e7420657863656564732062 0000117a: PUSH1 0x44 0000117c: DUP3 0000117d: ADD 0000117e: MSTORE 0000117f: PUSH6 0x616c616e6365 00001186: PUSH1 0xd0 00001188: SHL 00001189: PUSH1 0x64 0000118b: DUP3 0000118c: ADD 0000118d: MSTORE 0000118e: PUSH1 0x84 00001190: SWAP1 00001191: REVERT 00001192: JUMPDEST 00001193: PUSH1 0x40 00001195: MLOAD 00001196: PUSH3 0x461bcd 0000119a: PUSH1 0xe5 0000119c: SHL 0000119d: DUP2 0000119e: MSTORE 0000119f: PUSH1 0x20 000011a1: PUSH1 0x04 000011a3: DUP3 000011a4: ADD 000011a5: MSTORE 000011a6: PUSH1 0x23 000011a8: PUSH1 0x24 000011aa: DUP3 000011ab: ADD 000011ac: MSTORE 000011ad: PUSH32 0x45524332303a207472616e7366657220746f20746865207a65726f2061646472 000011ce: PUSH1 0x44 000011d0: DUP3 000011d1: ADD 000011d2: MSTORE 000011d3: PUSH3 0x657373 000011d7: PUSH1 0xe8 000011d9: SHL 000011da: PUSH1 0x64 000011dc: DUP3 000011dd: ADD 000011de: MSTORE 000011df: PUSH1 0x84 000011e1: SWAP1 000011e2: REVERT 000011e3: JUMPDEST 000011e4: PUSH1 0x40 000011e6: MLOAD 000011e7: PUSH3 0x461bcd 000011eb: PUSH1 0xe5 000011ed: SHL 000011ee: DUP2 000011ef: MSTORE 000011f0: PUSH1 0x20 000011f2: PUSH1 0x04 000011f4: DUP3 000011f5: ADD 000011f6: MSTORE 000011f7: PUSH1 0x25 000011f9: PUSH1 0x24 000011fb: DUP3 000011fc: ADD 000011fd: MSTORE 000011fe: PUSH32 0x45524332303a207472616e736665722066726f6d20746865207a65726f206164 0000121f: PUSH1 0x44 00001221: DUP3 00001222: ADD 00001223: MSTORE 00001224: PUSH5 0x6472657373 0000122a: PUSH1 0xd8 0000122c: SHL 0000122d: PUSH1 0x64 0000122f: DUP3 00001230: ADD 00001231: MSTORE 00001232: PUSH1 0x84 00001234: SWAP1 00001235: REVERT 00001236: JUMPDEST 00001237: PUSH1 0x08 00001239: SLOAD 0000123a: PUSH1 0x01 0000123c: PUSH1 0x01 0000123e: PUSH1 0xa0 00001240: SHL 00001241: SUB 00001242: AND 00001243: CALLER 00001244: SUB 00001245: PUSH2 0x124a 00001248: JUMPI 00001249: JUMP 0000124a: JUMPDEST 0000124b: PUSH1 0x64 0000124d: PUSH1 0x40 0000124f: MLOAD 00001250: PUSH3 0x461bcd 00001254: PUSH1 0xe5 00001256: SHL 00001257: DUP2 00001258: MSTORE 00001259: PUSH1 0x20 0000125b: PUSH1 0x04 0000125d: DUP3 0000125e: ADD 0000125f: MSTORE 00001260: PUSH1 0x20 00001262: PUSH1 0x24 00001264: DUP3 00001265: ADD 00001266: MSTORE 00001267: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001288: PUSH1 0x44 0000128a: DUP3 0000128b: ADD 0000128c: MSTORE 0000128d: REVERT 0000128e: JUMPDEST 0000128f: PUSH1 0x02 00001291: PUSH1 0x05 00001293: SLOAD 00001294: EQ 00001295: PUSH2 0x129f 00001298: JUMPI 00001299: PUSH1 0x02 0000129b: PUSH1 0x05 0000129d: SSTORE 0000129e: JUMP 0000129f: JUMPDEST 000012a0: PUSH1 0x40 000012a2: MLOAD 000012a3: PUSH3 0x461bcd 000012a7: PUSH1 0xe5 000012a9: SHL 000012aa: DUP2 000012ab: MSTORE 000012ac: PUSH1 0x20 000012ae: PUSH1 0x04 000012b0: DUP3 000012b1: ADD 000012b2: MSTORE 000012b3: PUSH1 0x1f 000012b5: PUSH1 0x24 000012b7: DUP3 000012b8: ADD 000012b9: MSTORE 000012ba: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000012db: PUSH1 0x44 000012dd: DUP3 000012de: ADD 000012df: MSTORE 000012e0: PUSH1 0x64 000012e2: SWAP1 000012e3: REVERT 000012e4: JUMPDEST 000012e5: PUSH1 0x40 000012e7: MLOAD 000012e8: PUSH4 0xa9059cbb 000012ed: PUSH1 0xe0 000012ef: SHL 000012f0: PUSH1 0x20 000012f2: DUP3 000012f3: ADD 000012f4: MSTORE 000012f5: PUSH1 0x01 000012f7: PUSH1 0x01 000012f9: PUSH1 0xa0 000012fb: SHL 000012fc: SUB 000012fd: SWAP1 000012fe: SWAP3 000012ff: AND 00001300: PUSH1 0x24 00001302: DUP4 00001303: ADD 00001304: MSTORE 00001305: PUSH1 0x44 00001307: DUP1 00001308: DUP4 00001309: ADD 0000130a: SWAP4 0000130b: SWAP1 0000130c: SWAP4 0000130d: MSTORE 0000130e: SWAP2 0000130f: DUP2 00001310: MSTORE 00001311: PUSH1 0x80 00001313: DUP2 00001314: ADD 00001315: SWAP2 00001316: PUSH8 0xffffffffffffffff 0000131f: DUP4 00001320: GT 00001321: DUP3 00001322: DUP5 00001323: LT 00001324: OR 00001325: PUSH2 0x0d52 00001328: JUMPI 00001329: PUSH2 0x1334 0000132c: SWAP3 0000132d: PUSH1 0x40 0000132f: MSTORE 00001330: PUSH2 0x15ce 00001333: JUMP 00001334: JUMPDEST 00001335: JUMP 00001336: JUMPDEST 00001337: PUSH1 0x40 00001339: MLOAD 0000133a: PUSH4 0x23b872dd 0000133f: PUSH1 0xe0 00001341: SHL 00001342: PUSH1 0x20 00001344: DUP3 00001345: ADD 00001346: MSTORE 00001347: PUSH1 0x01 00001349: PUSH1 0x01 0000134b: PUSH1 0xa0 0000134d: SHL 0000134e: SUB 0000134f: SWAP3 00001350: DUP4 00001351: AND 00001352: PUSH1 0x24 00001354: DUP3 00001355: ADD 00001356: MSTORE 00001357: SWAP3 00001358: SWAP1 00001359: SWAP2 0000135a: AND 0000135b: PUSH1 0x44 0000135d: DUP4 0000135e: ADD 0000135f: MSTORE 00001360: PUSH1 0x64 00001362: DUP1 00001363: DUP4 00001364: ADD 00001365: SWAP4 00001366: SWAP1 00001367: SWAP4 00001368: MSTORE 00001369: SWAP2 0000136a: DUP2 0000136b: MSTORE 0000136c: PUSH1 0xa0 0000136e: DUP2 0000136f: ADD 00001370: SWAP2 00001371: DUP2 00001372: DUP4 00001373: LT 00001374: PUSH8 0xffffffffffffffff 0000137d: DUP5 0000137e: GT 0000137f: OR 00001380: PUSH2 0x0d52 00001383: JUMPI 00001384: PUSH2 0x1334 00001387: SWAP3 00001388: PUSH1 0x40 0000138a: MSTORE 0000138b: PUSH2 0x15ce 0000138e: JUMP 0000138f: JUMPDEST 00001390: SWAP3 00001391: SWAP2 00001392: DUP4 00001393: PUSH1 0x01 00001395: DUP1 00001396: PUSH1 0xa0 00001398: SHL 00001399: SUB 0000139a: DUP1 0000139b: DUP4 0000139c: AND 0000139d: SWAP4 0000139e: PUSH1 0x00 000013a0: SWAP3 000013a1: DUP6 000013a2: DUP5 000013a3: MSTORE 000013a4: PUSH1 0x20 000013a6: SWAP4 000013a7: DUP1 000013a8: DUP6 000013a9: MSTORE 000013aa: PUSH1 0x40 000013ac: SWAP6 000013ad: DUP3 000013ae: DUP8 000013af: DUP4 000013b0: KECCAK256 000013b1: SLOAD 000013b2: LT 000013b3: PUSH2 0x1593 000013b6: JUMPI 000013b7: DUP8 000013b8: CALLER 000013b9: SUB 000013ba: PUSH2 0x153e 000013bd: JUMPI 000013be: JUMPDEST 000013bf: POP 000013c0: DUP7 000013c1: ISZERO 000013c2: PUSH2 0x14f0 000013c5: JUMPI 000013c6: DUP7 000013c7: DUP2 000013c8: MSTORE 000013c9: PUSH1 0x07 000013cb: DUP6 000013cc: MSTORE 000013cd: PUSH2 0x13ea 000013d0: DUP7 000013d1: DUP3 000013d2: KECCAK256 000013d3: SLOAD 000013d4: PUSH10 0xd3c21bcecceda1000000 000013df: PUSH2 0x10a1 000013e2: PUSH1 0x06 000013e4: SLOAD 000013e5: DUP7 000013e6: PUSH2 0x0d68 000013e9: JUMP 000013ea: JUMPDEST 000013eb: DUP8 000013ec: DUP3 000013ed: MSTORE 000013ee: PUSH1 0x07 000013f0: DUP7 000013f1: MSTORE 000013f2: DUP7 000013f3: DUP3 000013f4: KECCAK256 000013f5: SSTORE 000013f6: DUP1 000013f7: DUP6 000013f8: MSTORE 000013f9: DUP6 000013fa: DUP2 000013fb: KECCAK256 000013fc: SLOAD 000013fd: DUP3 000013fe: DUP2 000013ff: LT 00001400: PUSH2 0x14a1 00001403: JUMPI 00001404: SWAP1 00001405: DUP3 00001406: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db 00001427: SWAP6 00001428: SWAP5 00001429: SWAP4 0000142a: SWAP3 0000142b: DUP10 0000142c: DUP4 0000142d: MSTORE 0000142e: DUP3 0000142f: DUP9 00001430: MSTORE 00001431: SUB 00001432: DUP8 00001433: DUP3 00001434: KECCAK256 00001435: SSTORE 00001436: DUP2 00001437: PUSH1 0x02 00001439: SLOAD 0000143a: SUB 0000143b: PUSH1 0x02 0000143d: SSTORE 0000143e: DUP8 0000143f: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001460: DUP8 00001461: DUP10 00001462: MLOAD 00001463: DUP6 00001464: DUP2 00001465: MSTORE 00001466: LOG3 00001467: PUSH2 0x1491 0000146a: DUP2 0000146b: DUP4 0000146c: PUSH32 0x000000000000000000000000a5f2211b9b8170f694421f2046281775e8468044 0000148d: PUSH2 0x12e4 00001490: JUMP 00001491: JUMPDEST 00001492: DUP6 00001493: MLOAD 00001494: SWAP5 00001495: DUP2 00001496: DUP7 00001497: MSTORE 00001498: DUP6 00001499: ADD 0000149a: MSTORE 0000149b: AND 0000149c: SWAP3 0000149d: CALLER 0000149e: SWAP3 0000149f: LOG4 000014a0: JUMP 000014a1: JUMPDEST 000014a2: DUP7 000014a3: MLOAD 000014a4: PUSH3 0x461bcd 000014a8: PUSH1 0xe5 000014aa: SHL 000014ab: DUP2 000014ac: MSTORE 000014ad: PUSH1 0x04 000014af: DUP2 000014b0: ADD 000014b1: DUP8 000014b2: SWAP1 000014b3: MSTORE 000014b4: PUSH1 0x22 000014b6: PUSH1 0x24 000014b8: DUP3 000014b9: ADD 000014ba: MSTORE 000014bb: PUSH32 0x45524332303a206275726e20616d6f756e7420657863656564732062616c616e 000014dc: PUSH1 0x44 000014de: DUP3 000014df: ADD 000014e0: MSTORE 000014e1: PUSH2 0x6365 000014e4: PUSH1 0xf0 000014e6: SHL 000014e7: PUSH1 0x64 000014e9: DUP3 000014ea: ADD 000014eb: MSTORE 000014ec: PUSH1 0x84 000014ee: SWAP1 000014ef: REVERT 000014f0: JUMPDEST 000014f1: DUP6 000014f2: MLOAD 000014f3: PUSH3 0x461bcd 000014f7: PUSH1 0xe5 000014f9: SHL 000014fa: DUP2 000014fb: MSTORE 000014fc: PUSH1 0x04 000014fe: DUP2 000014ff: ADD 00001500: DUP7 00001501: SWAP1 00001502: MSTORE 00001503: PUSH1 0x21 00001505: PUSH1 0x24 00001507: DUP3 00001508: ADD 00001509: MSTORE 0000150a: PUSH32 0x45524332303a206275726e2066726f6d20746865207a65726f20616464726573 0000152b: PUSH1 0x44 0000152d: DUP3 0000152e: ADD 0000152f: MSTORE 00001530: PUSH1 0x73 00001532: PUSH1 0xf8 00001534: SHL 00001535: PUSH1 0x64 00001537: DUP3 00001538: ADD 00001539: MSTORE 0000153a: PUSH1 0x84 0000153c: SWAP1 0000153d: REVERT 0000153e: JUMPDEST 0000153f: DUP8 00001540: DUP3 00001541: MSTORE 00001542: PUSH1 0x01 00001544: DUP7 00001545: MSTORE 00001546: DUP7 00001547: DUP3 00001548: KECCAK256 00001549: CALLER 0000154a: DUP4 0000154b: MSTORE 0000154c: DUP7 0000154d: MSTORE 0000154e: DUP7 0000154f: DUP3 00001550: KECCAK256 00001551: SLOAD 00001552: SWAP1 00001553: PUSH1 0x00 00001555: NOT 00001556: DUP3 00001557: SUB 00001558: PUSH2 0x1562 0000155b: JUMPI 0000155c: JUMPDEST 0000155d: POP 0000155e: PUSH2 0x13be 00001561: JUMP 00001562: JUMPDEST 00001563: DUP4 00001564: DUP3 00001565: SUB 00001566: SWAP2 00001567: DUP3 00001568: GT 00001569: PUSH2 0x157f 0000156c: JUMPI 0000156d: SWAP1 0000156e: PUSH2 0x1578 00001571: SWAP2 00001572: CALLER 00001573: SWAP1 00001574: PUSH2 0x0f55 00001577: JUMP 00001578: JUMPDEST 00001579: CODESIZE 0000157a: DUP1 0000157b: PUSH2 0x155c 0000157e: JUMP 0000157f: JUMPDEST 00001580: PUSH4 0x4e487b71 00001585: PUSH1 0xe0 00001587: SHL 00001588: DUP4 00001589: MSTORE 0000158a: PUSH1 0x11 0000158c: PUSH1 0x04 0000158e: MSTORE 0000158f: PUSH1 0x24 00001591: DUP4 00001592: REVERT 00001593: JUMPDEST 00001594: DUP7 00001595: MLOAD 00001596: PUSH3 0x461bcd 0000159a: PUSH1 0xe5 0000159c: SHL 0000159d: DUP2 0000159e: MSTORE 0000159f: PUSH1 0x04 000015a1: DUP2 000015a2: ADD 000015a3: DUP8 000015a4: SWAP1 000015a5: MSTORE 000015a6: PUSH1 0x14 000015a8: PUSH1 0x24 000015aa: DUP3 000015ab: ADD 000015ac: MSTORE 000015ad: PUSH20 0x494e53554646494349454e545f42414c414e4345 000015c2: PUSH1 0x60 000015c4: SHL 000015c5: PUSH1 0x44 000015c7: DUP3 000015c8: ADD 000015c9: MSTORE 000015ca: PUSH1 0x64 000015cc: SWAP1 000015cd: REVERT 000015ce: JUMPDEST 000015cf: PUSH1 0x01 000015d1: DUP1 000015d2: PUSH1 0xa0 000015d4: SHL 000015d5: SUB 000015d6: AND 000015d7: SWAP1 000015d8: PUSH1 0x40 000015da: MLOAD 000015db: PUSH1 0x40 000015dd: DUP2 000015de: ADD 000015df: PUSH8 0xffffffffffffffff 000015e8: SWAP1 000015e9: DUP3 000015ea: DUP2 000015eb: LT 000015ec: DUP3 000015ed: DUP3 000015ee: GT 000015ef: OR 000015f0: PUSH2 0x0d52 000015f3: JUMPI 000015f4: PUSH1 0x40 000015f6: MSTORE 000015f7: PUSH1 0x20 000015f9: SWAP4 000015fa: DUP5 000015fb: DUP4 000015fc: MSTORE 000015fd: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 0000161e: DUP6 0000161f: DUP5 00001620: ADD 00001621: MSTORE 00001622: PUSH1 0x00 00001624: DUP1 00001625: DUP6 00001626: DUP8 00001627: DUP3 00001628: SWAP8 00001629: MLOAD 0000162a: SWAP2 0000162b: ADD 0000162c: DUP3 0000162d: DUP6 0000162e: GAS 0000162f: CALL 00001630: SWAP1 00001631: RETURNDATASIZE 00001632: ISZERO 00001633: PUSH2 0x1713 00001636: JUMPI 00001637: RETURNDATASIZE 00001638: SWAP3 00001639: DUP4 0000163a: GT 0000163b: PUSH2 0x16ff 0000163e: JUMPI 0000163f: SWAP1 00001640: PUSH2 0x1669 00001643: SWAP4 00001644: SWAP3 00001645: SWAP2 00001646: PUSH1 0x40 00001648: MLOAD 00001649: SWAP3 0000164a: PUSH2 0x165c 0000164d: DUP9 0000164e: PUSH1 0x1f 00001650: NOT 00001651: PUSH1 0x1f 00001653: DUP5 00001654: ADD 00001655: AND 00001656: ADD 00001657: DUP6 00001658: PUSH2 0x0d30 0000165b: JUMP 0000165c: JUMPDEST 0000165d: DUP4 0000165e: MSTORE 0000165f: RETURNDATASIZE 00001660: DUP7 00001661: DUP9 00001662: DUP6 00001663: ADD 00001664: RETURNDATACOPY 00001665: PUSH2 0x171e 00001668: JUMP 00001669: JUMPDEST 0000166a: DUP1 0000166b: MLOAD 0000166c: SWAP2 0000166d: DUP3 0000166e: ISZERO 0000166f: SWAP2 00001670: DUP5 00001671: DUP4 00001672: ISZERO 00001673: PUSH2 0x16db 00001676: JUMPI 00001677: JUMPDEST 00001678: POP 00001679: POP 0000167a: POP 0000167b: SWAP1 0000167c: POP 0000167d: ISZERO 0000167e: PUSH2 0x1684 00001681: JUMPI 00001682: POP 00001683: JUMP 00001684: JUMPDEST 00001685: PUSH1 0x84 00001687: SWAP1 00001688: PUSH1 0x40 0000168a: MLOAD 0000168b: SWAP1 0000168c: PUSH3 0x461bcd 00001690: PUSH1 0xe5 00001692: SHL 00001693: DUP3 00001694: MSTORE 00001695: PUSH1 0x04 00001697: DUP3 00001698: ADD 00001699: MSTORE 0000169a: PUSH1 0x2a 0000169c: PUSH1 0x24 0000169e: DUP3 0000169f: ADD 000016a0: MSTORE 000016a1: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 000016c2: PUSH1 0x44 000016c4: DUP3 000016c5: ADD 000016c6: MSTORE 000016c7: PUSH10 0x1bdd081cdd58d8d95959 000016d2: PUSH1 0xb2 000016d4: SHL 000016d5: PUSH1 0x64 000016d7: DUP3 000016d8: ADD 000016d9: MSTORE 000016da: REVERT 000016db: JUMPDEST 000016dc: SWAP2 000016dd: SWAP4 000016de: DUP2 000016df: DUP1 000016e0: SWAP5 000016e1: POP 000016e2: ADD 000016e3: SUB 000016e4: SLT 000016e5: PUSH2 0x02e1 000016e8: JUMPI 000016e9: DUP3 000016ea: ADD 000016eb: MLOAD 000016ec: SWAP1 000016ed: DUP2 000016ee: ISZERO 000016ef: ISZERO 000016f0: DUP3 000016f1: SUB 000016f2: PUSH2 0x0434 000016f5: JUMPI 000016f6: POP 000016f7: DUP1 000016f8: CODESIZE 000016f9: DUP1 000016fa: DUP5 000016fb: PUSH2 0x1677 000016fe: JUMP 000016ff: JUMPDEST 00001700: PUSH4 0x4e487b71 00001705: PUSH1 0xe0 00001707: SHL 00001708: DUP6 00001709: MSTORE 0000170a: PUSH1 0x41 0000170c: PUSH1 0x04 0000170e: MSTORE 0000170f: PUSH1 0x24 00001711: DUP6 00001712: REVERT 00001713: JUMPDEST 00001714: SWAP1 00001715: PUSH2 0x1669 00001718: SWAP4 00001719: SWAP3 0000171a: POP 0000171b: PUSH1 0x60 0000171d: SWAP2 0000171e: JUMPDEST 0000171f: SWAP2 00001720: SWAP3 00001721: SWAP1 00001722: ISZERO 00001723: PUSH2 0x1780 00001726: JUMPI 00001727: POP 00001728: DUP2 00001729: MLOAD 0000172a: ISZERO 0000172b: PUSH2 0x1732 0000172e: JUMPI 0000172f: POP 00001730: SWAP1 00001731: JUMP 00001732: JUMPDEST 00001733: EXTCODESIZE 00001734: ISZERO 00001735: PUSH2 0x173b 00001738: JUMPI 00001739: SWAP1 0000173a: JUMP 0000173b: JUMPDEST 0000173c: PUSH1 0x40 0000173e: MLOAD 0000173f: PUSH3 0x461bcd 00001743: PUSH1 0xe5 00001745: SHL 00001746: DUP2 00001747: MSTORE 00001748: PUSH1 0x20 0000174a: PUSH1 0x04 0000174c: DUP3 0000174d: ADD 0000174e: MSTORE 0000174f: PUSH1 0x1d 00001751: PUSH1 0x24 00001753: DUP3 00001754: ADD 00001755: MSTORE 00001756: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00001777: PUSH1 0x44 00001779: DUP3 0000177a: ADD 0000177b: MSTORE 0000177c: PUSH1 0x64 0000177e: SWAP1 0000177f: REVERT 00001780: JUMPDEST 00001781: DUP3 00001782: MLOAD 00001783: SWAP1 00001784: SWAP2 00001785: POP 00001786: ISZERO 00001787: PUSH2 0x1793 0000178a: JUMPI 0000178b: POP 0000178c: DUP1 0000178d: MLOAD 0000178e: SWAP1 0000178f: PUSH1 0x20 00001791: ADD 00001792: REVERT 00001793: JUMPDEST 00001794: PUSH1 0x40 00001796: MLOAD 00001797: PUSH3 0x461bcd 0000179b: PUSH1 0xe5 0000179d: SHL 0000179e: DUP2 0000179f: MSTORE 000017a0: SWAP1 000017a1: DUP2 000017a2: SWAP1 000017a3: PUSH2 0x17af 000017a6: SWAP1 000017a7: PUSH1 0x04 000017a9: DUP4 000017aa: ADD 000017ab: PUSH2 0x0c18 000017ae: JUMP 000017af: JUMPDEST 000017b0: SUB 000017b1: SWAP1 000017b2: REVERT 000017b3: INVALID 000017b4: LOG2 000017b5: PUSH5 0x6970667358 000017bb: UNKNOWN(0x22) 000017bc: SLT 000017bd: KECCAK256 000017be: BLOCKHASH 000017bf: SHL 000017c0: UNKNOWN(0xC8) 000017c1: UNKNOWN(0x4D) 000017c2: PUSH20 0xfe6be3a1f85aee8dba0730333f6be8b505635d4c 000017d7: CHAINID 000017d8: UNKNOWN(0xCF) 000017d9: TLOAD 000017da: UNKNOWN(0xFB) 000017db: UNKNOWN(0x4B) 000017dc: PUSH21
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | reentrancy | codex | Withdraw/redeem always revert due to double nonReentrant in yTHOR overrides | 85 | no | — |
viewevidence_json{
"evidence": "`yTHOR.withdraw`/`redeem` are `nonReentrant` and call `super.withdraw`/`super.redeem`, which are also `nonReentrant` in `yieldTHOR`, triggering the guard twice.",
"locations": [
"contracts/src/contracts/tokens/yTHOR.sol:22",
"contracts/src/contracts/tokens/yTHOR.sol:31",
"contracts/src/contracts/tokens/yieldTHOR.sol:108",
"contracts/src/contracts/tokens/yieldTHOR.sol:126"
],
"recommendation": "Apply the reentrancy guard only once on the call path. Remove `nonReentrant` from the yTHOR overrides or refactor to internal functions guarded by a single external `nonReentrant` entrypoint.",
"exploit_scenario": "A user deposits assets into yTHOR. Even after the owner enables withdrawals, calling `withdraw` or `redeem` enters the nonReentrant guard in yTHOR and then calls `super.withdraw/super.redeem`, which are also nonReentrant. The second guard reverts with `ReentrancyGuard: reentrant call`, effectively locking all user funds permanently."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x16b9db044d8c88c935d09d2e6bd746d19f8101c2d58a3eecf640a56e0042f509
call_targets:
0x8793cd69895c45b2d2474236b3cb28fc5c764775
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x16b9db044d8c88c935d09d2e6bd746d19f8101c2d58a3eecf640a56e0042f509",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8793cd69895c45b2d2474236b3cb28fc5c764775"
],
"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": "0x01e1d114",
"selector": "0x01e1d114",
"calldata_variants": [
"0x01e1d114",
"0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07a2d13a",
"selector": "0x07a2d13a",
"calldata_variants": [
"0x07a2d13a",
"0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a28a477",
"selector": "0x0a28a477",
"calldata_variants": [
"0x0a28a477",
"0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x228cb733",
"selector": "0x228cb733",
"calldata_variants": [
"0x228cb733",
"0x228cb7330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5679,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x16b9db044d8c88c935d09d2e6bd746d19f8101c2d58a3eecf640a56e0042f509
call_targets:
0x8793cd69895c45b2d2474236b3cb28fc5c764775
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x16b9db044d8c88c935d09d2e6bd746d19f8101c2d58a3eecf640a56e0042f509",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8793cd69895c45b2d2474236b3cb28fc5c764775"
],
"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": "0x01e1d114",
"selector": "0x01e1d114",
"calldata_variants": [
"0x01e1d114",
"0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07a2d13a",
"selector": "0x07a2d13a",
"calldata_variants": [
"0x07a2d13a",
"0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a28a477",
"selector": "0x0a28a477",
"calldata_variants": [
"0x0a28a477",
"0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x228cb733",
"selector": "0x228cb733",
"calldata_variants": [
"0x228cb733",
"0x228cb7330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5679,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| low | math | codex | Signed rewardDebt can exceed accumulated after rounding, causing negative pending and claim DoS | 65 | no | — |
viewevidence_json{
"evidence": "`claimable` and `claimRewards` cast `(accumulated - rewardDebt)` from `int256` to `uint256` without checking for negative values; `_beforeTokenTransfer` updates `rewardDebt` using per-transfer rounding that can diverge from `accumulated`.",
"locations": [
"contracts/src/contracts/tokens/yieldTHOR.sol:151",
"contracts/src/contracts/tokens/yieldTHOR.sol:156",
"contracts/src/contracts/tokens/yieldTHOR.sol:164"
],
"recommendation": "Avoid signed-to-unsigned casts for pending rewards. Track `rewardDebt` as `uint256` and clamp pending to zero when `accumulated <= rewardDebt`, or recompute `rewardDebt` directly from the post-transfer balance to keep it consistent with `accumulated`.",
"exploit_scenario": "An attacker can transfer dust to a victim when `accRewardPerShare` has a fractional component. Because `_beforeTokenTransfer` updates `rewardDebt` with a per-transfer floor while `accumulated` is recomputed from the post-transfer balance, rounding can make `rewardDebt` slightly larger than `accumulated`. `claimRewards` then casts a negative value to `uint256`, which reverts on transfer or makes `claimable` report a huge number, preventing claims until more rewards accrue."
}
|
| low | math | codex | Accounting assumes asset/reward tokens transfer the full requested amount | 65 | no | — |
viewevidence_json{
"evidence": "`deposit`/`mint` and `depositRewards` use the input amount without checking actual received tokens.",
"locations": [
"contracts/src/contracts/tokens/yieldTHOR.sol:88",
"contracts/src/contracts/tokens/yieldTHOR.sol:98",
"contracts/src/contracts/tokens/yieldTHOR.sol:144"
],
"recommendation": "For asset and reward transfers, measure actual received via balance-before/after and use that value for minting shares or updating `accRewardPerShare`, or explicitly restrict tokens to non-fee, non-rebasing ERC20s.",
"exploit_scenario": "If the asset or reward token is fee-on-transfer or rebasing, the contract credits full `assets`/`amount` while receiving fewer tokens. Deposits can mint more shares than backing assets, and `depositRewards` can overstate rewards. Early claimers may drain available rewards while later withdrawals/claims revert due to insufficient balances."
}
|