019bab3b-ab84-72af-bef3-c28e12418fef
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 |
|---|---|---|---|---|
| 38569 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38570 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38571 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38572 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38573 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38574 | detector.run | complete | 1 / 3 | 3 months ago |
| 38575 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39070 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39071 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-srasxypo) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-srasxypo) Plague.feeWithdraw() (contracts/Contract.sol#553-571) sends eth to arbitrary user Dangerous calls: - receiver.transfer(_total.sub(_withdrawed)) (contracts/Contract.sol#566-570) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations Plague.isHuman(address) (contracts/Contract.sol#217-226) is declared view but contains assembly code Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code Plague.buyKeys(address) (contracts/Contract.sol#228-386) performs a multiplication on the result of a division: - _ethUse = (((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(5 * 10 ** 16)).add((5 * 10 ** 16)) (contracts/Contract.sol#331-336) Plague.buyKeys(address) (contracts/Contract.sol#228-386) performs a multiplication on the result of a division: - _exAwardPercent = ((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(developmentAwardPercent).add(developmentAwardPercent) (contracts/Contract.sol#354-358) Plague.buyKeys(address) (contracts/Contract.sol#228-386) performs a multiplication on the result of a division: - lastAwardEth = lastAwardEth.add(nextPlayersAward.mul(_totalAward.mul(4) / 100)) (contracts/Contract.sol#258-259) Plague.buyKeys(address) (contracts/Contract.sol#228-386) performs a multiplication on the result of a division: - lastAwardEth = lastAwardEth.add(nextPlayersAward.mul(_totalAward.mul(3) / 100)) (contracts/Contract.sol#256-257) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) performs a multiplication on the result of a division: - _totalWithdraw = round_m[_rndNo].eth.mul(51) / 100 (contracts/Contract.sol#430-431) - _totalWithdraw = (_totalWithdraw.mul(playerRound_m[_rndNo][msg.sender].keys)) (contracts/Contract.sol#433-434) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#418-423) - _getAward = _getAward.add(_totalAward.mul(4) / 100) (contracts/Contract.sol#470-471) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#418-423) - _getAward = _getAward.add(_totalAward.mul(3) / 100) (contracts/Contract.sol#468-469) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#418-423) - _getAward = _getAward.add(_totalAward.mul(60) / 100) (contracts/Contract.sol#452-455) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#418-423) - _getAward = _getAward.add(_totalAward.mul(10) / 100) (contracts/Contract.sol#447-448) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) performs a multiplication on the result of a division: - _totalWithdraw = round_m[_rndNo].eth.mul(51) / 100 (contracts/Contract.sol#507) - _totalWithdraw = (_totalWithdraw.mul(playerRound_m[_rndNo][_playAddr].keys)) (contracts/Contract.sol#508-510) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#513-514) - _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(4) / 100) (contracts/Contract.sol#542-545) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#513-514) - _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(3) / 100) (contracts/Contract.sol#539-541) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#513-514) - _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(60) / 100) (contracts/Contract.sol#527-528) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) performs a multiplication on the result of a division: - _totalAward = round_m[_rndNo].eth.mul(30) / 100 (contracts/Contract.sol#513-514) - _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(10) / 100) (contracts/Contract.sol#523-524) Plague.getBuyPrice() (contracts/Contract.sol#630-659) performs a multiplication on the result of a division: - currentPrice = (((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(5 * 10 ** 16)).add((5 * 10 ** 16)) (contracts/Contract.sol#653-658) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply Plague.changeReceiver(address).newReceiver (contracts/Contract.sol#585) lacks a zero-check on : - receiver = newReceiver (contracts/Contract.sol#588-589) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation Plague.buyKeys(address) (contracts/Contract.sol#228-386) uses timestamp for comparisons Dangerous comparisons: - _now > round_m[_rndNo].endTime (contracts/Contract.sol#237-238) - require(bool,string)(round_m[_rndNo].endTime + rndDevelopmentReadyTime_ < _now,we should wait some time) (contracts/Contract.sol#240-243) - _eth > _ethUse (contracts/Contract.sol#284) - require(bool,string)(round_m[_rndNo].infectiveEndTime < _now,The virus is being prepared...) (contracts/Contract.sol#325-328) - require(bool,string)(_eth >= _ethUse,Ether amount is wrong) (contracts/Contract.sol#338-339) - _eth > _ethUse (contracts/Contract.sol#339) - _exAwardPercent >= 410 (contracts/Contract.sol#358) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) uses timestamp for comparisons Dangerous comparisons: - now > round_m[_rndNo].endTime (contracts/Contract.sol#449-450) Plague.getPlayerAwardByRndNo(uint256,address) (contracts/Contract.sol#495-551) uses timestamp for comparisons Dangerous comparisons: - now > round_m[_rndNo].endTime (contracts/Contract.sol#524-526) Plague.getBuyPrice() (contracts/Contract.sol#630-659) uses timestamp for comparisons Dangerous comparisons: - _now > round_m[_rndNo].endTime (contracts/Contract.sol#632) - round_m[_rndNo].keys >= allKeys_ && round_m[_rndNo].infectiveEndTime != 0 && round_m[_rndNo].infectLastPlayer != address(0) && _now < round_m[_rndNo].infectiveEndTime (contracts/Contract.sol#638-643) - round_m[_rndNo].keys >= allKeys_ && _now > round_m[_rndNo].infectiveEndTime (contracts/Contract.sol#647-651) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp Plague.isHuman(address) (contracts/Contract.sol#217-226) uses assembly - INLINE ASM (contracts/Contract.sol#221-226) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage Plague.buyKeyByAddr(address) (contracts/Contract.sol#387-390) compares to a boolean constant: -require(bool,string)(isStartGame == true,The game hasn't started yet.) (contracts/Contract.sol#389-390) Plague.fallback() (contracts/Contract.sol#392-400) compares to a boolean constant: -require(bool,string)(isStartGame == true,The game hasn't started yet.) (contracts/Contract.sol#396-399) Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482) compares to a boolean constant: -require(bool,string)(isStartGame == true,The game hasn't started yet.) (contracts/Contract.sol#413-415) Plague.feeWithdraw() (contracts/Contract.sol#553-571) compares to a boolean constant: -require(bool,string)(isStartGame == true,The game hasn't started yet.) (contracts/Contract.sol#554-556) Plague.startGame() (contracts/Contract.sol#572-581) compares to a boolean constant: -require(bool,string)(isStartGame == false,The game has already started!) (contracts/Contract.sol#576-578) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality Version constraint ^0.4.24 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching - EmptyByteArrayCopy - DynamicArrayCleanup - ImplicitConstructorCallvalueCheck - TupleAssignmentMultiStackSlotComponents - MemoryArrayCreationOverflow - privateCanBeOverridden - SignedArrayStorageCopy - ABIEncoderV2StorageArrayWithMultiSlotElement - DynamicConstructorArgumentsClippedABIV2 - UninitializedFunctionPointerInConstructor_0.4.x - IncorrectEventSignatureInLibraries_0.4.x - ABIEncoderV2PackedStorage_0.4.x - ExpExponentCleanup - EventStructWrongData. It is used by: - ^0.4.24 (contracts/Contract.sol#1) solc-0.4.24 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Event PlagueEvents.onInfectiveStage(address,uint256,uint256,uint256,uint256,address) (contracts/Contract.sol#99-111) is not in CapWords Event PlagueEvents.onDevelopmentStage(address,uint256,uint256,uint256,address) (contracts/Contract.sol#113-121) is not in CapWords Event PlagueEvents.onAward(address,uint256,uint256,uint256) (contracts/Contract.sol#122-129) is not in CapWords Parameter Plague.buyKeys(address)._inveter (contracts/Contract.sol#228-230) is not in mixedCase Parameter Plague.buyKeyByAddr(address)._inveter (contracts/Contract.sol#389) is not in mixedCase Parameter Plague.awardByRndNo(uint256)._rndNo (contracts/Contract.sol#409) is not in mixedCase Parameter Plague.getPlayerAwardByRndNo(uint256,address)._rndNo (contracts/Contract.sol#497-498) is not in mixedCase Parameter Plague.getPlayerAwardByRndNo(uint256,address)._playAddr (contracts/Contract.sol#498) is not in mixedCase Constant Plague.rndInfectiveStage_ (contracts/Contract.sol#167) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.rndInfectiveReadyTime_ (contracts/Contract.sol#168-170) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.rndDevelopmentStage_ (contracts/Contract.sol#170-171) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.rndDevelopmentReadyTime_ (contracts/Contract.sol#171-172) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.allKeys_ (contracts/Contract.sol#172-173) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.allEths_ (contracts/Contract.sol#173) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.rndIncreaseTime_ (contracts/Contract.sol#173-174) is not in UPPER_CASE_WITH_UNDERSCORES Constant Plague.developmentAwardPercent (contracts/Contract.sol#175) is not in UPPER_CASE_WITH_UNDERSCORES Variable Plague.round_m (contracts/Contract.sol#176) is not in mixedCase Variable Plague.playerRound_m (contracts/Contract.sol#177) is not in mixedCase Parameter KeysCalc.keysRec(uint256,uint256)._curEth (contracts/Contract.sol#667) is not in mixedCase Parameter KeysCalc.keysRec(uint256,uint256)._newEth (contracts/Contract.sol#667) is not in mixedCase Parameter KeysCalc.ethRec(uint256,uint256)._curKeys (contracts/Contract.sol#680) is not in mixedCase Parameter KeysCalc.ethRec(uint256,uint256)._sellKeys (contracts/Contract.sol#680-682) is not in mixedCase Parameter KeysCalc.keys(uint256)._eth (contracts/Contract.sol#692) is not in mixedCase Parameter KeysCalc.eth(uint256)._keys (contracts/Contract.sol#707-709) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Reentrancy in Plague.awardByRndNo(uint256) (contracts/Contract.sol#405-482): External calls: - msg.sender.transfer(_ethOut) (contracts/Contract.sol#478-479) Event emitted after the call(s): - PlagueEvents.onAward(msg.sender,_rndNo,_ethOut,now) (contracts/Contract.sol#479-482) Reentrancy in Plague.buyKeys(address) (contracts/Contract.sol#228-386): External calls: - msg.sender.transfer(_eth.sub(_ethUse)) (contracts/Contract.sol#286-288) State variables written after the call(s): - playerRound_m[_rndNo][msg.sender].keys = _keys.add(playerRound_m[_rndNo][msg.sender].keys) (contracts/Contract.sol#307-310) - playerRound_m[_rndNo][msg.sender].eth = _ethUse.add(playerRound_m[_rndNo][msg.sender].eth) (contracts/Contract.sol#310-312) - round_m[_rndNo].infectiveEndTime = _now.add(rndInfectiveReadyTime_) (contracts/Contract.sol#295-297) - round_m[_rndNo].endTime = _now.add(rndDevelopmentStage_).add(rndInfectiveReadyTime_) (contracts/Contract.sol#297-300) - round_m[_rndNo].infectLastPlayer = msg.sender (contracts/Contract.sol#301-303) - round_m[_rndNo].leader = msg.sender (contracts/Contract.sol#305-306) - round_m[_rndNo].keys = _keys.add(round_m[_rndNo].keys) (contracts/Contract.sol#314-316) - round_m[_rndNo].eth = _ethUse.add(round_m[_rndNo].eth) (contracts/Contract.sol#317) - totalEth = _ethUse.add(totalEth) (contracts/Contract.sol#318) Event emitted after the call(s): - PlagueEvents.onInfectiveStage(msg.sender,_rndNo,_keys,_ethUse,_now,_inveter) (contracts/Contract.sol#318-322) Reentrancy in Plague.buyKeys(address) (contracts/Contract.sol#228-386): External calls: - msg.sender.transfer(_eth.sub(_ethUse)) (contracts/Contract.sol#340-341) State variables written after the call(s): - playerRound_m[_rndNo][msg.sender].eth = _ethUse.add(playerRound_m[_rndNo][msg.sender].eth) (contracts/Contract.sol#344-346) - round_m[_rndNo].endTime = _now + rndDevelopmentStage_ (contracts/Contract.sol#342) - round_m[_rndNo].leader = msg.sender (contracts/Contract.sol#342) - round_m[_rndNo].eth = _ethUse.add(round_m[_rndNo].eth) (contracts/Contract.sol#348-351) - round_m[_rndNo].exAward = (_exAwardPercent.mul(_ethUse) / 1000).add(round_m[_rndNo].exAward) (contracts/Contract.sol#361-364) - totalEth = _ethUse.add(totalEth) (contracts/Contract.sol#351-352) Event emitted after the call(s): - PlagueEvents.onDevelopmentStage(msg.sender,_rndNo,_ethUse,_now,_inveter) (contracts/Contract.sol#364-367) Reentrancy in Plague.buyKeys(address) (contracts/Contract.sol#228-386): External calls: - msg.sender.transfer(_eth.sub(_ethUse)) (contracts/Contract.sol#286-288) - msg.sender.transfer(_eth.sub(_ethUse)) (contracts/Contract.sol#340-341) State variables written after the call(s): - playerRound_m[_rndNo][_inveter].getInveterAmount = playerRound_m[_rndNo][_inveter].getInveterAmount.add(_ethUse.mul(10) / 100) (contracts/Contract.sol#369-374) - round_m[_rndNo].inveterAmount = round_m[_rndNo].inveterAmount.add(_ethUse.mul(10) / 100) (contracts/Contract.sol#375-379) - round_m[_rndNo].loseInfective[round_m[_rndNo].totalInfective % 4] = round_m[_rndNo].lastInfective[round_m[_rndNo].totalInfective % 11] (contracts/Contract.sol#381-385) - round_m[_rndNo].lastInfective[round_m[_rndNo].totalInfective % 11] = msg.sender (contracts/Contract.sol#385) - round_m[_rndNo].totalInfective = round_m[_rndNo].totalInfective.add(1) (contracts/Contract.sol#385-386) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4 Plague.getBuyPrice() (contracts/Contract.sol#630-659) uses literals with too many digits: - ((round_m[_rndNo].keys.add(10000000000000000000)).ethRec(10000000000000000000)) (contracts/Contract.sol#633-635) Plague.slitherConstructorConstantVariables() (contracts/Contract.sol#129-659) uses literals with too many digits: - allKeys_ = 15000000 * (10 ** 18) (contracts/Contract.sol#172-173) Plague.slitherConstructorConstantVariables() (contracts/Contract.sol#129-659) uses literals with too many digits: - allEths_ = 18703123828125000000000 (contracts/Contract.sol#173) KeysCalc.keys(uint256) (contracts/Contract.sol#691-699) uses literals with too many digits: - ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000) (contracts/Contract.sol#696-699) KeysCalc.eth(uint256) (contracts/Contract.sol#706-715) uses literals with too many digits: - ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq()) (contracts/Contract.sol#710-714) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits . analyzed (4 contracts with 100 detectors), 63 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.4.24",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.4.24",
"install_stderr": null,
"install_stdout": "Installing solc '0.4.24'...\nVersion '0.4.24' installed."
},
"solc_args": "--base-path /tmp/slither-srasxypo --allow-paths /tmp/slither-srasxypo,/tmp/slither-srasxypo/lib,/tmp/slither-srasxypo/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 63,
"workspace_hash": "e186157dee74d6e12463d7df09cdaf02b9fa32160af53c58d67f843811768691",
"duration_seconds": 2.176600933074951,
"solc_version_requested": "0.4.24"
}
{"no_findings":false,"summary":"Found two low-severity issues: the anti-contract access control can be bypassed, and round timing/pricing relies on manipulable block timestamps.","findings":[{"severity":"low","category":"access_control","title":"`onlyHuman` contract check is bypassable via constructor calls","exploit_scenario":"An attacker deploys a contract that calls `buyKeyByAddr` or the fallback during its constructor. During construction, `extcodesize(msg.sender)` is 0, so the `onlyHuman` check passes, allowing automated/contract interaction despite the intended restriction. This can be used by bots for faster buys or coordinated actions that the design tries to prevent.","recommendation":"Do not rely on `extcodesize` to block contracts. If contract interaction must be restricted, use explicit allowlists or redesign the game rules to be contract-agnostic.","evidence":"`onlyHuman` relies on `extcodesize(msg.sender)` being 0 to allow calls.","locations":["contracts/Contract.sol:196","contracts/Contract.sol:198","contracts/Contract.sol:201","contracts/Contract.sol:398","contracts/Contract.sol:411"]},{"severity":"low","category":"oracle","title":"Game timing and price logic depend on block.timestamp manipulation","exploit_scenario":"Miners can slightly skew `now` to extend or shorten rounds, influence when the infection/development stages end, and affect who becomes the final leader or the price paid in the second stage. This can be exploited near round boundaries to gain a payout advantage.","recommendation":"Avoid using `block.timestamp` as a strict boundary for payout-critical logic. Consider using larger time buffers, block.number-based windows, or commit/reveal mechanisms for finalization-sensitive outcomes.","evidence":"Round transitions, leader selection timing, and second-stage pricing are all driven by `now` comparisons and arithmetic.","locations":["contracts/Contract.sol:243","contracts/Contract.sol:247","contracts/Contract.sol:304","contracts/Contract.sol:351","contracts/Contract.sol:460","contracts/Contract.sol:649","contracts/Contract.sol:667"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-0p_pfdr7
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019babae-8271-7f60-8850-877667d58387
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-0p_pfdr7 succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.24;
//================================================================================
// Plague Inc. <Grand prize>
// WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!!
// This game is easy for you to get rich.
// Please prepare enough ETH.
// If you have HEART DISEASE, PLEASE DON'T PLAY.
// If you are Chinese or American, please don't play. YOU ARE TOO RICH.
//
// Plague Inc. , which is abbreviated as PIC by players.
// is developed by a well-known games company who put a lot of effort into R&D.
// One evening, our producer had a hands-on experience on FOMO3D.
// and he was really annoyed by the "unreasonable" numerical settings in FOMO3D.
// He said: "We can make a better one!"
thinking
**Analyzing potential vulnerabilities in Plague contract**
I'm carefully reviewing security aspects of a Solidity 0.4.24 contract named Plague, focusing on payable functions and withdrawal logic. I found possible DoS issues from division by zero when no keys exist in a round, nuanced reentrancy protections relying on transfer's 2300 gas stipend, and the limits of onlyHuman checks against contracts in construction. There's also timestamp manipulation risk typical in games and subtle award calculation edge cases that could cause revert or stuck states. Overall, the contract seems cautiously designed but with some areas worth flagging for low-to-medium risks.
thinking
**Identifying logic edge cases and design quirks**
I'm weighing several subtle issues like potential underflows causing award function reverts when rounds have no participants, partial fund carryover that may leave some rewards locked, and inconsistencies in key-to-ETH calculations during final buys. The onlyHuman check is bypassable during contract construction allowing unintended calls, and timestamp reliance offers miner manipulation opportunities. While many findings are low severity or quirks in game design, these behaviors highlight interesting edge cases worth noting.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-0p_pfdr7 succeeded in 5ms:
1 pragma solidity ^0.4.24;
2 //================================================================================
3 // Plague Inc. <Grand prize>
4 // WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!! WARNING!!!
5 // This game is easy for you to get rich.
6 // Please prepare enough ETH.
7 // If you have HEART DISEASE, PLEASE DON'T PLAY.
8 // If you are Chinese or American, please don't play. YOU ARE TOO RICH.
9 //
10 // Plague Inc. , which is abbreviated as PIC by players.
11 // is developed by a well-known games company who put a lot of effort into R&D.
12 // One evening, our producer had a hands-on experience on FOMO3D.
13 // and he was really annoyed by the "unreasonable" numerical settings in FOMO3D.
14 // He said: "We can make a better one!"
15 // So we made a better one. ^v^
16 //
17 // # It takes less time for investors to get back their capital, while making more
18 // profit (51% for investor dividends).
19 // # Introducers can get a high return of 10% (effective in the long term).
20 // # A lot of investors suffered losses in FOMO3D Quick, which is solved perfectly
thinking
**Assembling categorized security findings**
I'm organizing the findings into meaningful security categories—mainly access control for the onlyHuman bypass and oracle for timestamp manipulation—while carefully evaluating severity and exploitability. I'll craft a concise JSON summary with specific findings, evidence snippets, recommendations, and source locations.
codex
{"no_findings":false,"summary":"Found two low-severity issues: the anti-contract access control can be bypassed, and round timing/pricing relies on manipulable block timestamps.","findings":[{"severity":"low","category":"access_control","title":"`onlyHuman` contract check is bypassable via constructor calls","exploit_scenario":"An attacker deploys a contract that calls `buyKeyByAddr` or the fallback during its constructor. During construction, `extcodesize(msg.sender)` is 0, so the `onlyHuman` check passes, allowing automated/contract interaction despite the intended restriction. This can be used by bots for faster buys or coordinated actions that the design tries to prevent.","recommendation":"Do not rely on `extcodesize` to block contracts. If contract interaction must be restricted, use explicit allowlists or redesign the game rules to be contract-agnostic.","evidence":"`onlyHuman` relies on `extcodesize(msg.sender)` being 0 to allow calls.","locations":["contracts/Contract.sol:196","contracts/Contract.sol:198","contracts/Contract.sol:201","contracts/Contract.sol:398","contracts/Contract.sol:411"]},{"severity":"low","category":"oracle","title":"Game timing and price logic depend on block.timestamp manipulation","exploit_scenario":"Miners can slightly skew `now` to extend or shorten rounds, influence when the infection/development stages end, and affect who becomes the final leader or the price paid in the second stage. This can be exploited near round boundaries to gain a payout advantage.","recommendation":"Avoid using `block.timestamp` as a strict boundary for payout-critical logic. Consider using larger time buffers, block.number-based windows, or commit/reveal mechanisms for finalization-sensitive outcomes.","evidence":"Round transitions, leader selection timing, and second-stage pricing are all driven by `now` comparisons and arithmetic.","locations":["contracts/Contract.sol:243","contracts/Contract.sol:247","contracts/Contract.sol:304","contracts/Contract.sol:351","contracts/Contract.sol:460","contracts/Contract.sol:649","contracts/Contract.sol:667"]}]}
tokens used
29,248
{
"codex": {
"ran_at": "2026-01-11T06:14:07.319653+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found two low-severity issues: the anti-contract access control can be bypassed, and round timing/pricing relies on manipulable block timestamps.",
"raw_final": {
"summary": "Found two low-severity issues: the anti-contract access control can be bypassed, and round timing/pricing relies on manipulable block timestamps.",
"findings": [
{
"title": "`onlyHuman` contract check is bypassable via constructor calls",
"category": "access_control",
"evidence": "`onlyHuman` relies on `extcodesize(msg.sender)` being 0 to allow calls.",
"severity": "low",
"locations": [
"contracts/Contract.sol:196",
"contracts/Contract.sol:198",
"contracts/Contract.sol:201",
"contracts/Contract.sol:398",
"contracts/Contract.sol:411"
],
"recommendation": "Do not rely on `extcodesize` to block contracts. If contract interaction must be restricted, use explicit allowlists or redesign the game rules to be contract-agnostic.",
"exploit_scenario": "An attacker deploys a contract that calls `buyKeyByAddr` or the fallback during its constructor. During construction, `extcodesize(msg.sender)` is 0, so the `onlyHuman` check passes, allowing automated/contract interaction despite the intended restriction. This can be used by bots for faster buys or coordinated actions that the design tries to prevent."
},
{
"title": "Game timing and price logic depend on block.timestamp manipulation",
"category": "oracle",
"evidence": "Round transitions, leader selection timing, and second-stage pricing are all driven by `now` comparisons and arithmetic.",
"severity": "low",
"locations": [
"contracts/Contract.sol:243",
"contracts/Contract.sol:247",
"contracts/Contract.sol:304",
"contracts/Contract.sol:351",
"contracts/Contract.sol:460",
"contracts/Contract.sol:649",
"contracts/Contract.sol:667"
],
"recommendation": "Avoid using `block.timestamp` as a strict boundary for payout-critical logic. Consider using larger time buffers, block.number-based windows, or commit/reveal mechanisms for finalization-sensitive outcomes.",
"exploit_scenario": "Miners can slightly skew `now` to extend or shorten rounds, influence when the infection/development stages end, and affect who becomes the final leader or the price paid in the second stage. This can be exploited near round boundaries to gain a payout advantage."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00e5 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000030: PUSH1 0x00 00000032: CALLDATALOAD 00000033: DIV 00000034: AND 00000035: PUSH4 0x018a25e8 0000003a: DUP2 0000003b: EQ 0000003c: PUSH2 0x026d 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x3c28308a 00000046: EQ 00000047: PUSH2 0x0294 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x3c3c9c23 00000051: EQ 00000052: PUSH2 0x02a9 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x4311de8f 0000005c: EQ 0000005d: PUSH2 0x02be 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x547e3f06 00000067: EQ 00000068: PUSH2 0x02d3 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x6561e6ba 00000072: EQ 00000073: PUSH2 0x02f6 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x747dff42 0000007d: EQ 0000007e: PUSH2 0x030b 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x7e8ac590 00000088: EQ 00000089: PUSH2 0x043e 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0x80ec35ff 00000093: EQ 00000094: PUSH2 0x04b6 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x8da5cb5b 0000009e: EQ 0000009f: PUSH2 0x04ce 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xa05ce940 000000a9: EQ 000000aa: PUSH2 0x04ff 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xc5960c29 000000b4: EQ 000000b5: PUSH2 0x054e 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xd65ab5f2 000000bf: EQ 000000c0: PUSH2 0x0562 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xd982466d 000000ca: EQ 000000cb: PUSH2 0x0577 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0xe3aae11b 000000d5: EQ 000000d6: PUSH2 0x05c1 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0xf7260d3e 000000e0: EQ 000000e1: PUSH2 0x05ea 000000e4: JUMPI 000000e5: JUMPDEST 000000e6: CALLER 000000e7: DUP1 000000e8: EXTCODESIZE 000000e9: DUP1 000000ea: ISZERO 000000eb: PUSH2 0x012c 000000ee: JUMPI 000000ef: PUSH1 0x40 000000f1: DUP1 000000f2: MLOAD 000000f3: PUSH1 0xe5 000000f5: PUSH1 0x02 000000f7: EXP 000000f8: PUSH3 0x461bcd 000000fc: MUL 000000fd: DUP2 000000fe: MSTORE 000000ff: PUSH1 0x20 00000101: PUSH1 0x04 00000103: DUP3 00000104: ADD 00000105: MSTORE 00000106: PUSH1 0x11 00000108: PUSH1 0x24 0000010a: DUP3 0000010b: ADD 0000010c: MSTORE 0000010d: PUSH1 0x00 0000010f: DUP1 00000110: MLOAD 00000111: PUSH1 0x20 00000113: PUSH2 0x2806 00000116: DUP4 00000117: CODECOPY 00000118: DUP2 00000119: MLOAD 0000011a: SWAP2 0000011b: MSTORE 0000011c: PUSH1 0x44 0000011e: DUP3 0000011f: ADD 00000120: MSTORE 00000121: SWAP1 00000122: MLOAD 00000123: SWAP1 00000124: DUP2 00000125: SWAP1 00000126: SUB 00000127: PUSH1 0x64 00000129: ADD 0000012a: SWAP1 0000012b: REVERT 0000012c: JUMPDEST 0000012d: CALLVALUE 0000012e: PUSH4 0x3b9aca00 00000133: DUP2 00000134: LT 00000135: ISZERO 00000136: PUSH2 0x01af 00000139: JUMPI 0000013a: PUSH1 0x40 0000013c: DUP1 0000013d: MLOAD 0000013e: PUSH1 0xe5 00000140: PUSH1 0x02 00000142: EXP 00000143: PUSH3 0x461bcd 00000147: MUL 00000148: DUP2 00000149: MSTORE 0000014a: PUSH1 0x20 0000014c: PUSH1 0x04 0000014e: DUP3 0000014f: ADD 00000150: MSTORE 00000151: PUSH1 0x21 00000153: PUSH1 0x24 00000155: DUP3 00000156: ADD 00000157: MSTORE 00000158: PUSH32 0x706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63 00000179: PUSH1 0x44 0000017b: DUP3 0000017c: ADD 0000017d: MSTORE 0000017e: PUSH32 0x7900000000000000000000000000000000000000000000000000000000000000 0000019f: PUSH1 0x64 000001a1: DUP3 000001a2: ADD 000001a3: MSTORE 000001a4: SWAP1 000001a5: MLOAD 000001a6: SWAP1 000001a7: DUP2 000001a8: SWAP1 000001a9: SUB 000001aa: PUSH1 0x84 000001ac: ADD 000001ad: SWAP1 000001ae: REVERT 000001af: JUMPDEST 000001b0: PUSH10 0x152d02c7e14af6800000 000001bb: DUP2 000001bc: GT 000001bd: ISZERO 000001be: PUSH2 0x0211 000001c1: JUMPI 000001c2: PUSH1 0x40 000001c4: DUP1 000001c5: MLOAD 000001c6: PUSH1 0xe5 000001c8: PUSH1 0x02 000001ca: EXP 000001cb: PUSH3 0x461bcd 000001cf: MUL 000001d0: DUP2 000001d1: MSTORE 000001d2: PUSH1 0x20 000001d4: PUSH1 0x04 000001d6: DUP3 000001d7: ADD 000001d8: MSTORE 000001d9: PUSH1 0x0e 000001db: PUSH1 0x24 000001dd: DUP3 000001de: ADD 000001df: MSTORE 000001e0: PUSH32 0x6e6f20766974616c696b2c206e6f000000000000000000000000000000000000 00000201: PUSH1 0x44 00000203: DUP3 00000204: ADD 00000205: MSTORE 00000206: SWAP1 00000207: MLOAD 00000208: SWAP1 00000209: DUP2 0000020a: SWAP1 0000020b: SUB 0000020c: PUSH1 0x64 0000020e: ADD 0000020f: SWAP1 00000210: REVERT 00000211: JUMPDEST 00000212: PUSH1 0x07 00000214: SLOAD 00000215: PUSH1 0xff 00000217: AND 00000218: ISZERO 00000219: ISZERO 0000021a: PUSH1 0x01 0000021c: EQ 0000021d: PUSH2 0x025e 00000220: JUMPI 00000221: PUSH1 0x40 00000223: DUP1 00000224: MLOAD 00000225: PUSH1 0xe5 00000227: PUSH1 0x02 00000229: EXP 0000022a: PUSH3 0x461bcd 0000022e: MUL 0000022f: DUP2 00000230: MSTORE 00000231: PUSH1 0x20 00000233: PUSH1 0x04 00000235: DUP3 00000236: ADD 00000237: MSTORE 00000238: PUSH1 0x1c 0000023a: PUSH1 0x24 0000023c: DUP3 0000023d: ADD 0000023e: MSTORE 0000023f: PUSH1 0x00 00000241: DUP1 00000242: MLOAD 00000243: PUSH1 0x20 00000245: PUSH2 0x27e6 00000248: DUP4 00000249: CODECOPY 0000024a: DUP2 0000024b: MLOAD 0000024c: SWAP2 0000024d: MSTORE 0000024e: PUSH1 0x44 00000250: DUP3 00000251: ADD 00000252: MSTORE 00000253: SWAP1 00000254: MLOAD 00000255: SWAP1 00000256: DUP2 00000257: SWAP1 00000258: SUB 00000259: PUSH1 0x64 0000025b: ADD 0000025c: SWAP1 0000025d: REVERT 0000025e: JUMPDEST 0000025f: PUSH2 0x0268 00000262: PUSH1 0x00 00000264: PUSH2 0x05ff 00000267: JUMP 00000268: JUMPDEST 00000269: POP 0000026a: POP 0000026b: POP 0000026c: STOP 0000026d: JUMPDEST 0000026e: CALLVALUE 0000026f: DUP1 00000270: ISZERO 00000271: PUSH2 0x0279 00000274: JUMPI 00000275: PUSH1 0x00 00000277: DUP1 00000278: REVERT 00000279: JUMPDEST 0000027a: POP 0000027b: PUSH2 0x0282 0000027e: PUSH2 0x1120 00000281: JUMP 00000282: JUMPDEST 00000283: PUSH1 0x40 00000285: DUP1 00000286: MLOAD 00000287: SWAP2 00000288: DUP3 00000289: MSTORE 0000028a: MLOAD 0000028b: SWAP1 0000028c: DUP2 0000028d: SWAP1 0000028e: SUB 0000028f: PUSH1 0x20 00000291: ADD 00000292: SWAP1 00000293: RETURN 00000294: JUMPDEST 00000295: CALLVALUE 00000296: DUP1 00000297: ISZERO 00000298: PUSH2 0x02a0 0000029b: JUMPI 0000029c: PUSH1 0x00 0000029e: DUP1 0000029f: REVERT 000002a0: JUMPDEST 000002a1: POP 000002a2: PUSH2 0x0282 000002a5: PUSH2 0x12de 000002a8: JUMP 000002a9: JUMPDEST 000002aa: CALLVALUE 000002ab: DUP1 000002ac: ISZERO 000002ad: PUSH2 0x02b5 000002b0: JUMPI 000002b1: PUSH1 0x00 000002b3: DUP1 000002b4: REVERT 000002b5: JUMPDEST 000002b6: POP 000002b7: PUSH2 0x0282 000002ba: PUSH2 0x12e4 000002bd: JUMP 000002be: JUMPDEST 000002bf: CALLVALUE 000002c0: DUP1 000002c1: ISZERO 000002c2: PUSH2 0x02ca 000002c5: JUMPI 000002c6: PUSH1 0x00 000002c8: DUP1 000002c9: REVERT 000002ca: JUMPDEST 000002cb: POP 000002cc: PUSH2 0x0282 000002cf: PUSH2 0x12ea 000002d2: JUMP 000002d3: JUMPDEST 000002d4: CALLVALUE 000002d5: DUP1 000002d6: ISZERO 000002d7: PUSH2 0x02df 000002da: JUMPI 000002db: PUSH1 0x00 000002dd: DUP1 000002de: REVERT 000002df: JUMPDEST 000002e0: POP 000002e1: PUSH2 0x02f4 000002e4: PUSH1 0x01 000002e6: PUSH1 0xa0 000002e8: PUSH1 0x02 000002ea: EXP 000002eb: SUB 000002ec: PUSH1 0x04 000002ee: CALLDATALOAD 000002ef: AND 000002f0: PUSH2 0x12f0 000002f3: JUMP 000002f4: JUMPDEST 000002f5: STOP 000002f6: JUMPDEST 000002f7: CALLVALUE 000002f8: DUP1 000002f9: ISZERO 000002fa: PUSH2 0x0302 000002fd: JUMPI 000002fe: PUSH1 0x00 00000300: DUP1 00000301: REVERT 00000302: JUMPDEST 00000303: POP 00000304: PUSH2 0x02f4 00000307: PUSH2 0x1381 0000030a: JUMP 0000030b: JUMPDEST 0000030c: CALLVALUE 0000030d: DUP1 0000030e: ISZERO 0000030f: PUSH2 0x0317 00000312: JUMPI 00000313: PUSH1 0x00 00000315: DUP1 00000316: REVERT 00000317: JUMPDEST 00000318: POP 00000319: PUSH2 0x0320 0000031c: PUSH2 0x1574 0000031f: JUMP 00000320: JUMPDEST 00000321: PUSH1 0x40 00000323: MLOAD 00000324: DUP1 00000325: DUP9 00000326: DUP2 00000327: MSTORE 00000328: PUSH1 0x20 0000032a: ADD 0000032b: DUP8 0000032c: PUSH1 0x02 0000032e: PUSH1 0x20 00000330: MUL 00000331: DUP1 00000332: DUP4 00000333: DUP4 00000334: PUSH1 0x00 00000336: JUMPDEST 00000337: DUP4 00000338: DUP2 00000339: LT 0000033a: ISZERO 0000033b: PUSH2 0x034e 0000033e: JUMPI 0000033f: DUP2 00000340: DUP2 00000341: ADD 00000342: MLOAD 00000343: DUP4 00000344: DUP3 00000345: ADD 00000346: MSTORE 00000347: PUSH1 0x20 00000349: ADD 0000034a: PUSH2 0x0336 0000034d: JUMP 0000034e: JUMPDEST 0000034f: POP 00000350: POP 00000351: POP 00000352: POP 00000353: SWAP1 00000354: POP 00000355: ADD 00000356: DUP7 00000357: PUSH1 0x03 00000359: PUSH1 0x20 0000035b: MUL 0000035c: DUP1 0000035d: DUP4 0000035e: DUP4 0000035f: PUSH1 0x00 00000361: JUMPDEST 00000362: DUP4 00000363: DUP2 00000364: LT 00000365: ISZERO 00000366: PUSH2 0x0379 00000369: JUMPI 0000036a: DUP2 0000036b: DUP2 0000036c: ADD 0000036d: MLOAD 0000036e: DUP4 0000036f: DUP3 00000370: ADD 00000371: MSTORE 00000372: PUSH1 0x20 00000374: ADD 00000375: PUSH2 0x0361 00000378: JUMP 00000379: JUMPDEST 0000037a: POP 0000037b: POP 0000037c: POP 0000037d: POP 0000037e: SWAP1 0000037f: POP 00000380: ADD 00000381: DUP6 00000382: PUSH1 0x02 00000384: PUSH1 0x20 00000386: MUL 00000387: DUP1 00000388: DUP4 00000389: DUP4 0000038a: PUSH1 0x00 0000038c: JUMPDEST 0000038d: DUP4 0000038e: DUP2 0000038f: LT 00000390: ISZERO 00000391: PUSH2 0x03a4 00000394: JUMPI 00000395: DUP2 00000396: DUP2 00000397: ADD 00000398: MLOAD 00000399: DUP4 0000039a: DUP3 0000039b: ADD 0000039c: MSTORE 0000039d: PUSH1 0x20 0000039f: ADD 000003a0: PUSH2 0x038c 000003a3: JUMP 000003a4: JUMPDEST 000003a5: POP 000003a6: POP 000003a7: POP 000003a8: POP 000003a9: SWAP1 000003aa: POP 000003ab: ADD 000003ac: DUP5 000003ad: PUSH1 0x06 000003af: PUSH1 0x20 000003b1: MUL 000003b2: DUP1 000003b3: DUP4 000003b4: DUP4 000003b5: PUSH1 0x00 000003b7: JUMPDEST 000003b8: DUP4 000003b9: DUP2 000003ba: LT 000003bb: ISZERO 000003bc: PUSH2 0x03cf 000003bf: JUMPI 000003c0: DUP2 000003c1: DUP2 000003c2: ADD 000003c3: MLOAD 000003c4: DUP4 000003c5: DUP3 000003c6: ADD 000003c7: MSTORE 000003c8: PUSH1 0x20 000003ca: ADD 000003cb: PUSH2 0x03b7 000003ce: JUMP 000003cf: JUMPDEST 000003d0: POP 000003d1: POP 000003d2: POP 000003d3: POP 000003d4: SWAP1 000003d5: POP 000003d6: ADD 000003d7: DUP4 000003d8: PUSH1 0x0b 000003da: PUSH1 0x20 000003dc: MUL 000003dd: DUP1 000003de: DUP4 000003df: DUP4 000003e0: PUSH1 0x00 000003e2: JUMPDEST 000003e3: DUP4 000003e4: DUP2 000003e5: LT 000003e6: ISZERO 000003e7: PUSH2 0x03fa 000003ea: JUMPI 000003eb: DUP2 000003ec: DUP2 000003ed: ADD 000003ee: MLOAD 000003ef: DUP4 000003f0: DUP3 000003f1: ADD 000003f2: MSTORE 000003f3: PUSH1 0x20 000003f5: ADD 000003f6: PUSH2 0x03e2 000003f9: JUMP 000003fa: JUMPDEST 000003fb: POP 000003fc: POP 000003fd: POP 000003fe: POP 000003ff: SWAP1 00000400: POP 00000401: ADD 00000402: DUP3 00000403: PUSH1 0x04 00000405: PUSH1 0x20 00000407: MUL 00000408: DUP1 00000409: DUP4 0000040a: DUP4 0000040b: PUSH1 0x00 0000040d: JUMPDEST 0000040e: DUP4 0000040f: DUP2 00000410: LT 00000411: ISZERO 00000412: PUSH2 0x0425 00000415: JUMPI 00000416: DUP2 00000417: DUP2 00000418: ADD 00000419: MLOAD 0000041a: DUP4 0000041b: DUP3 0000041c: ADD 0000041d: MSTORE 0000041e: PUSH1 0x20 00000420: ADD 00000421: PUSH2 0x040d 00000424: JUMP 00000425: JUMPDEST 00000426: POP 00000427: POP 00000428: POP 00000429: POP 0000042a: SWAP1 0000042b: POP 0000042c: ADD 0000042d: SWAP8 0000042e: POP 0000042f: POP 00000430: POP 00000431: POP 00000432: POP 00000433: POP 00000434: POP 00000435: POP 00000436: PUSH1 0x40 00000438: MLOAD 00000439: DUP1 0000043a: SWAP2 0000043b: SUB 0000043c: SWAP1 0000043d: RETURN 0000043e: JUMPDEST 0000043f: CALLVALUE 00000440: DUP1 00000441: ISZERO 00000442: PUSH2 0x044a 00000445: JUMPI 00000446: PUSH1 0x00 00000448: DUP1 00000449: REVERT 0000044a: JUMPDEST 0000044b: POP 0000044c: PUSH2 0x0456 0000044f: PUSH1 0x04 00000451: CALLDATALOAD 00000452: PUSH2 0x177c 00000455: JUMP 00000456: JUMPDEST 00000457: PUSH1 0x40 00000459: DUP1 0000045a: MLOAD 0000045b: SWAP12 0000045c: DUP13 0000045d: MSTORE 0000045e: PUSH1 0x20 00000460: DUP13 00000461: ADD 00000462: SWAP11 00000463: SWAP1 00000464: SWAP11 00000465: MSTORE 00000466: DUP11 00000467: DUP11 00000468: ADD 00000469: SWAP9 0000046a: SWAP1 0000046b: SWAP9 0000046c: MSTORE 0000046d: PUSH1 0x60 0000046f: DUP11 00000470: ADD 00000471: SWAP7 00000472: SWAP1 00000473: SWAP7 00000474: MSTORE 00000475: PUSH1 0x80 00000477: DUP10 00000478: ADD 00000479: SWAP5 0000047a: SWAP1 0000047b: SWAP5 0000047c: MSTORE 0000047d: PUSH1 0x01 0000047f: PUSH1 0xa0 00000481: PUSH1 0x02 00000483: EXP 00000484: SUB 00000485: SWAP3 00000486: DUP4 00000487: AND 00000488: PUSH1 0xa0 0000048a: DUP10 0000048b: ADD 0000048c: MSTORE 0000048d: SWAP2 0000048e: AND 0000048f: PUSH1 0xc0 00000491: DUP8 00000492: ADD 00000493: MSTORE 00000494: PUSH1 0xe0 00000496: DUP7 00000497: ADD 00000498: MSTORE 00000499: PUSH2 0x0100 0000049c: DUP6 0000049d: ADD 0000049e: MSTORE 0000049f: PUSH2 0x0120 000004a2: DUP5 000004a3: ADD 000004a4: MSTORE 000004a5: PUSH2 0x0140 000004a8: DUP4 000004a9: ADD 000004aa: MSTORE 000004ab: MLOAD 000004ac: SWAP1 000004ad: DUP2 000004ae: SWAP1 000004af: SUB 000004b0: PUSH2 0x0160 000004b3: ADD 000004b4: SWAP1 000004b5: RETURN 000004b6: JUMPDEST 000004b7: CALLVALUE 000004b8: DUP1 000004b9: ISZERO 000004ba: PUSH2 0x04c2 000004bd: JUMPI 000004be: PUSH1 0x00 000004c0: DUP1 000004c1: REVERT 000004c2: JUMPDEST 000004c3: POP 000004c4: PUSH2 0x02f4 000004c7: PUSH1 0x04 000004c9: CALLDATALOAD 000004ca: PUSH2 0x17e2 000004cd: JUMP 000004ce: JUMPDEST 000004cf: CALLVALUE 000004d0: DUP1 000004d1: ISZERO 000004d2: PUSH2 0x04da 000004d5: JUMPI 000004d6: PUSH1 0x00 000004d8: DUP1 000004d9: REVERT 000004da: JUMPDEST 000004db: POP 000004dc: PUSH2 0x04e3 000004df: PUSH2 0x1dc3 000004e2: JUMP 000004e3: JUMPDEST 000004e4: PUSH1 0x40 000004e6: DUP1 000004e7: MLOAD 000004e8: PUSH1 0x01 000004ea: PUSH1 0xa0 000004ec: PUSH1 0x02 000004ee: EXP 000004ef: SUB 000004f0: SWAP1 000004f1: SWAP3 000004f2: AND 000004f3: DUP3 000004f4: MSTORE 000004f5: MLOAD 000004f6: SWAP1 000004f7: DUP2 000004f8: SWAP1 000004f9: SUB 000004fa: PUSH1 0x20 000004fc: ADD 000004fd: SWAP1 000004fe: RETURN 000004ff: JUMPDEST 00000500: CALLVALUE 00000501: DUP1 00000502: ISZERO 00000503: PUSH2 0x050b 00000506: JUMPI 00000507: PUSH1 0x00 00000509: DUP1 0000050a: REVERT 0000050b: JUMPDEST 0000050c: POP 0000050d: PUSH2 0x0523 00000510: PUSH1 0x04 00000512: CALLDATALOAD 00000513: PUSH1 0x01 00000515: PUSH1 0xa0 00000517: PUSH1 0x02 00000519: EXP 0000051a: SUB 0000051b: PUSH1 0x24 0000051d: CALLDATALOAD 0000051e: AND 0000051f: PUSH2 0x1dd2 00000522: JUMP 00000523: JUMPDEST 00000524: PUSH1 0x40 00000526: DUP1 00000527: MLOAD 00000528: SWAP6 00000529: DUP7 0000052a: MSTORE 0000052b: PUSH1 0x20 0000052d: DUP7 0000052e: ADD 0000052f: SWAP5 00000530: SWAP1 00000531: SWAP5 00000532: MSTORE 00000533: DUP5 00000534: DUP5 00000535: ADD 00000536: SWAP3 00000537: SWAP1 00000538: SWAP3 00000539: MSTORE 0000053a: PUSH1 0x60 0000053c: DUP5 0000053d: ADD 0000053e: MSTORE 0000053f: PUSH1 0x80 00000541: DUP4 00000542: ADD 00000543: MSTORE 00000544: MLOAD 00000545: SWAP1 00000546: DUP2 00000547: SWAP1 00000548: SUB 00000549: PUSH1 0xa0 0000054b: ADD 0000054c: SWAP1 0000054d: RETURN 0000054e: JUMPDEST 0000054f: PUSH2 0x02f4 00000552: PUSH1 0x01 00000554: PUSH1 0xa0 00000556: PUSH1 0x02 00000558: EXP 00000559: SUB 0000055a: PUSH1 0x04 0000055c: CALLDATALOAD 0000055d: AND 0000055e: PUSH2 0x1e0a 00000561: JUMP 00000562: JUMPDEST 00000563: CALLVALUE 00000564: DUP1 00000565: ISZERO 00000566: PUSH2 0x056e 00000569: JUMPI 0000056a: PUSH1 0x00 0000056c: DUP1 0000056d: REVERT 0000056e: JUMPDEST 0000056f: POP 00000570: PUSH2 0x02f4 00000573: PUSH2 0x1f92 00000576: JUMP 00000577: JUMPDEST 00000578: CALLVALUE 00000579: DUP1 0000057a: ISZERO 0000057b: PUSH2 0x0583 0000057e: JUMPI 0000057f: PUSH1 0x00 00000581: DUP1 00000582: REVERT 00000583: JUMPDEST 00000584: POP 00000585: PUSH2 0x059b 00000588: PUSH1 0x04 0000058a: CALLDATALOAD 0000058b: PUSH1 0x01 0000058d: PUSH1 0xa0 0000058f: PUSH1 0x02 00000591: EXP 00000592: SUB 00000593: PUSH1 0x24 00000595: CALLDATALOAD 00000596: AND 00000597: PUSH2 0x20d7 0000059a: JUMP 0000059b: JUMPDEST 0000059c: PUSH1 0x40 0000059e: DUP1 0000059f: MLOAD 000005a0: SWAP5 000005a1: DUP6 000005a2: MSTORE 000005a3: PUSH1 0x20 000005a5: DUP6 000005a6: ADD 000005a7: SWAP4 000005a8: SWAP1 000005a9: SWAP4 000005aa: MSTORE 000005ab: DUP4 000005ac: DUP4 000005ad: ADD 000005ae: SWAP2 000005af: SWAP1 000005b0: SWAP2 000005b1: MSTORE 000005b2: PUSH1 0x60 000005b4: DUP4 000005b5: ADD 000005b6: MSTORE 000005b7: MLOAD 000005b8: SWAP1 000005b9: DUP2 000005ba: SWAP1 000005bb: SUB 000005bc: PUSH1 0x80 000005be: ADD 000005bf: SWAP1 000005c0: RETURN 000005c1: JUMPDEST 000005c2: CALLVALUE 000005c3: DUP1 000005c4: ISZERO 000005c5: PUSH2 0x05cd 000005c8: JUMPI 000005c9: PUSH1 0x00 000005cb: DUP1 000005cc: REVERT 000005cd: JUMPDEST 000005ce: POP 000005cf: PUSH2 0x05d6 000005d2: PUSH2 0x2442 000005d5: JUMP 000005d6: JUMPDEST 000005d7: PUSH1 0x40 000005d9: DUP1 000005da: MLOAD 000005db: SWAP2 000005dc: ISZERO 000005dd: ISZERO 000005de: DUP3 000005df: MSTORE 000005e0: MLOAD 000005e1: SWAP1 000005e2: DUP2 000005e3: SWAP1 000005e4: SUB 000005e5: PUSH1 0x20 000005e7: ADD 000005e8: SWAP1 000005e9: RETURN 000005ea: JUMPDEST 000005eb: CALLVALUE 000005ec: DUP1 000005ed: ISZERO 000005ee: PUSH2 0x05f6 000005f1: JUMPI 000005f2: PUSH1 0x00 000005f4: DUP1 000005f5: REVERT 000005f6: JUMPDEST 000005f7: POP 000005f8: PUSH2 0x04e3 000005fb: PUSH2 0x244b 000005fe: JUMP 000005ff: JUMPDEST 00000600: PUSH1 0x00 00000602: DUP1 00000603: SLOAD 00000604: DUP1 00000605: DUP3 00000606: MSTORE 00000607: PUSH1 0x02 00000609: PUSH1 0x20 0000060b: MSTORE 0000060c: PUSH1 0x40 0000060e: DUP3 0000060f: KECCAK256 00000610: PUSH1 0x03 00000612: ADD 00000613: SLOAD 00000614: CALLVALUE 00000615: SWAP3 00000616: TIMESTAMP 00000617: SWAP3 00000618: SWAP2 00000619: DUP5 0000061a: SWAP2 0000061b: SWAP1 0000061c: DUP2 0000061d: SWAP1 0000061e: DUP2 0000061f: SWAP1 00000620: DUP2 00000621: SWAP1 00000622: DUP2 00000623: SWAP1 00000624: DUP9 00000625: GT 00000626: ISZERO 00000627: PUSH2 0x083b 0000062a: JUMPI 0000062b: PUSH1 0x00 0000062d: DUP8 0000062e: DUP2 0000062f: MSTORE 00000630: PUSH1 0x02 00000632: PUSH1 0x20 00000634: MSTORE 00000635: PUSH1 0x40 00000637: SWAP1 00000638: KECCAK256 00000639: PUSH1 0x03 0000063b: ADD 0000063c: SLOAD 0000063d: PUSH2 0xa8c0 00000640: ADD 00000641: DUP9 00000642: GT 00000643: PUSH2 0x0696 00000646: JUMPI 00000647: PUSH1 0x40 00000649: DUP1 0000064a: MLOAD 0000064b: PUSH1 0xe5 0000064d: PUSH1 0x02 0000064f: EXP 00000650: PUSH3 0x461bcd 00000654: MUL 00000655: DUP2 00000656: MSTORE 00000657: PUSH1 0x20 00000659: PUSH1 0x04 0000065b: DUP3 0000065c: ADD 0000065d: MSTORE 0000065e: PUSH1 0x18 00000660: PUSH1 0x24 00000662: DUP3 00000663: ADD 00000664: MSTORE 00000665: PUSH32 0x77652073686f756c64207761697420736f6d652074696d650000000000000000 00000686: PUSH1 0x44 00000688: DUP3 00000689: ADD 0000068a: MSTORE 0000068b: SWAP1 0000068c: MLOAD 0000068d: SWAP1 0000068e: DUP2 0000068f: SWAP1 00000690: SUB 00000691: PUSH1 0x64 00000693: ADD 00000694: SWAP1 00000695: REVERT 00000696: JUMPDEST 00000697: PUSH1 0x00 00000699: DUP8 0000069a: DUP2 0000069b: MSTORE 0000069c: PUSH1 0x02 0000069e: PUSH1 0x20 000006a0: MSTORE 000006a1: PUSH1 0x40 000006a3: SWAP1 000006a4: KECCAK256 000006a5: PUSH1 0x18 000006a7: DUP2 000006a8: ADD 000006a9: SLOAD 000006aa: SWAP1 000006ab: SLOAD 000006ac: PUSH2 0x06da 000006af: SWAP2 000006b0: SWAP1 000006b1: PUSH1 0x64 000006b3: SWAP1 000006b4: PUSH2 0x06c4 000006b7: SWAP1 000006b8: PUSH1 0x0e 000006ba: PUSH4 0xffffffff 000006bf: PUSH2 0x245a 000006c2: AND 000006c3: JUMP 000006c4: JUMPDEST 000006c5: DUP2 000006c6: ISZERO 000006c7: ISZERO 000006c8: PUSH2 0x06cd 000006cb: JUMPI 000006cc: INVALID 000006cd: JUMPDEST 000006ce: DIV 000006cf: SWAP1 000006d0: PUSH4 0xffffffff 000006d5: PUSH2 0x24d7 000006d8: AND 000006d9: JUMP 000006da: JUMPDEST 000006db: PUSH1 0x00 000006dd: DUP9 000006de: DUP2 000006df: MSTORE 000006e0: PUSH1 0x02 000006e2: PUSH1 0x20 000006e4: MSTORE 000006e5: PUSH1 0x40 000006e7: SWAP1 000006e8: KECCAK256 000006e9: PUSH1 0x17 000006eb: ADD 000006ec: SLOAD 000006ed: SWAP1 000006ee: SWAP6 000006ef: POP 000006f0: PUSH1 0x0b 000006f2: GT 000006f3: ISZERO 000006f4: PUSH2 0x07f6 000006f7: JUMPI 000006f8: PUSH1 0x00 000006fa: DUP8 000006fb: DUP2 000006fc: MSTORE 000006fd: PUSH1 0x02 000006ff: PUSH1 0x20 00000701: MSTORE 00000702: PUSH1 0x40 00000704: SWAP1 00000705: KECCAK256 00000706: PUSH1 0x17 00000708: ADD 00000709: SLOAD 0000070a: PUSH2 0x071b 0000070d: SWAP1 0000070e: PUSH1 0x0b 00000710: SWAP1 00000711: PUSH4 0xffffffff 00000716: PUSH2 0x24d7 00000719: AND 0000071a: JUMP 0000071b: JUMPDEST 0000071c: PUSH1 0x00 0000071e: DUP9 0000071f: DUP2 00000720: MSTORE 00000721: PUSH1 0x02 00000723: PUSH1 0x20 00000725: MSTORE 00000726: PUSH1 0x40 00000728: SWAP1 00000729: KECCAK256 0000072a: SLOAD 0000072b: SWAP1 0000072c: SWAP5 0000072d: POP 0000072e: PUSH1 0x64 00000730: SWAP1 00000731: PUSH2 0x0741 00000734: SWAP1 00000735: PUSH1 0x1e 00000737: PUSH4 0xffffffff 0000073c: PUSH2 0x245a 0000073f: AND 00000740: JUMP 00000741: JUMPDEST 00000742: DUP2 00000743: ISZERO 00000744: ISZERO 00000745: PUSH2 0x074a 00000748: JUMPI 00000749: INVALID 0000074a: JUMPDEST 0000074b: PUSH1 0x00 0000074d: DUP10 0000074e: DUP2 0000074f: MSTORE 00000750: PUSH1 0x02 00000752: PUSH1 0x20 00000754: MSTORE 00000755: PUSH1 0x40 00000757: SWAP1 00000758: KECCAK256 00000759: PUSH1 0x19 0000075b: ADD 0000075c: SLOAD 0000075d: SWAP2 0000075e: SWAP1 0000075f: DIV 00000760: SWAP4 00000761: POP 00000762: PUSH2 0x0772 00000765: SWAP1 00000766: DUP5 00000767: SWAP1 00000768: PUSH4 0xffffffff 0000076d: PUSH2 0x2537 00000770: AND 00000771: JUMP 00000772: JUMPDEST 00000773: PUSH1 0x00 00000775: DUP9 00000776: DUP2 00000777: MSTORE 00000778: PUSH1 0x02 0000077a: PUSH1 0x20 0000077c: MSTORE 0000077d: PUSH1 0x40 0000077f: SWAP1 00000780: KECCAK256 00000781: PUSH1 0x06 00000783: ADD 00000784: SLOAD 00000785: SWAP1 00000786: SWAP4 00000787: POP 00000788: PUSH1 0x01 0000078a: PUSH1 0xa0 0000078c: PUSH1 0x02 0000078e: EXP 0000078f: SUB 00000790: AND 00000791: ISZERO 00000792: PUSH2 0x07da 00000795: JUMPI 00000796: PUSH2 0x07d3 00000799: PUSH2 0x07c6 0000079c: PUSH1 0x64 0000079e: PUSH2 0x07ae 000007a1: DUP7 000007a2: PUSH1 0x03 000007a4: PUSH4 0xffffffff 000007a9: PUSH2 0x245a 000007ac: AND 000007ad: JUMP 000007ae: JUMPDEST 000007af: DUP2 000007b0: ISZERO 000007b1: ISZERO 000007b2: PUSH2 0x07b7 000007b5: JUMPI 000007b6: INVALID 000007b7: JUMPDEST 000007b8: DUP8 000007b9: SWAP2 000007ba: SWAP1 000007bb: DIV 000007bc: PUSH4 0xffffffff 000007c1: PUSH2 0x245a 000007c4: AND 000007c5: JUMP 000007c6: JUMPDEST 000007c7: DUP7 000007c8: SWAP1 000007c9: PUSH4 0xffffffff 000007ce: PUSH2 0x2537 000007d1: AND 000007d2: JUMP 000007d3: JUMPDEST 000007d4: SWAP5 000007d5: POP 000007d6: PUSH2 0x07f6 000007d9: JUMP 000007da: JUMPDEST 000007db: PUSH2 0x07f3 000007de: PUSH2 0x07c6 000007e1: PUSH1 0x64 000007e3: PUSH2 0x07ae 000007e6: DUP7 000007e7: PUSH1 0x04 000007e9: PUSH4 0xffffffff 000007ee: PUSH2 0x245a 000007f1: AND 000007f2: JUMP 000007f3: JUMPDEST 000007f4: SWAP5 000007f5: POP 000007f6: JUMPDEST 000007f7: PUSH2 0x0807 000007fa: DUP8 000007fb: PUSH1 0x01 000007fd: PUSH4 0xffffffff 00000802: PUSH2 0x2537 00000805: AND 00000806: JUMP 00000807: JUMPDEST 00000808: PUSH1 0x00 0000080a: DUP2 0000080b: DUP2 0000080c: SSTORE 0000080d: DUP2 0000080e: DUP2 0000080f: MSTORE 00000810: PUSH1 0x02 00000812: PUSH1 0x20 00000814: DUP2 00000815: SWAP1 00000816: MSTORE 00000817: PUSH1 0x40 00000819: DUP3 0000081a: KECCAK256 0000081b: SWAP1 0000081c: DUP2 0000081d: ADD 0000081e: DUP12 0000081f: SWAP1 00000820: SSTORE 00000821: PUSH2 0xa8c0 00000824: DUP12 00000825: ADD 00000826: PUSH1 0x03 00000828: DUP3 00000829: ADD 0000082a: SSTORE 0000082b: PUSH1 0x17 0000082d: DUP2 0000082e: ADD 0000082f: SWAP2 00000830: SWAP1 00000831: SWAP2 00000832: SSTORE 00000833: PUSH1 0x19 00000835: ADD 00000836: DUP7 00000837: SWAP1 00000838: SSTORE 00000839: SWAP7 0000083a: POP 0000083b: JUMPDEST 0000083c: PUSH1 0x00 0000083e: DUP8 0000083f: DUP2 00000840: MSTORE 00000841: PUSH1 0x02 00000843: PUSH1 0x20 00000845: MSTORE 00000846: PUSH1 0x40 00000848: SWAP1 00000849: KECCAK256 0000084a: PUSH1 0x01 0000084c: ADD 0000084d: SLOAD 0000084e: PUSH11 0x0c685fa11e01ec6f000000 0000085a: GT 0000085b: ISZERO 0000085c: PUSH2 0x0be9 0000085f: JUMPI 00000860: PUSH1 0x00 00000862: DUP8 00000863: DUP2 00000864: MSTORE 00000865: PUSH1 0x02 00000867: PUSH1 0x20 00000869: MSTORE 0000086a: PUSH1 0x40 0000086c: SWAP1 0000086d: KECCAK256 0000086e: SLOAD 0000086f: PUSH2 0x087e 00000872: SWAP1 00000873: DUP11 00000874: PUSH4 0xffffffff 00000879: PUSH2 0x2592 0000087c: AND 0000087d: JUMP 0000087e: JUMPDEST 0000087f: PUSH1 0x00 00000881: DUP9 00000882: DUP2 00000883: MSTORE 00000884: PUSH1 0x02 00000886: PUSH1 0x20 00000888: MSTORE 00000889: PUSH1 0x40 0000088b: SWAP1 0000088c: KECCAK256 0000088d: PUSH1 0x01 0000088f: ADD 00000890: SLOAD 00000891: SWAP1 00000892: SWAP3 00000893: POP 00000894: PUSH11 0x0c685fa11e01ec6f000000 000008a0: SWAP1 000008a1: PUSH2 0x08b1 000008a4: SWAP1 000008a5: DUP5 000008a6: SWAP1 000008a7: PUSH4 0xffffffff 000008ac: PUSH2 0x2537 000008af: AND 000008b0: JUMP 000008b1: JUMPDEST 000008b2: LT 000008b3: PUSH2 0x0a0d 000008b6: JUMPI 000008b7: PUSH1 0x00 000008b9: DUP8 000008ba: DUP2 000008bb: MSTORE 000008bc: PUSH1 0x02 000008be: PUSH1 0x20 000008c0: MSTORE 000008c1: PUSH1 0x40 000008c3: SWAP1 000008c4: KECCAK256 000008c5: PUSH1 0x01 000008c7: ADD 000008c8: SLOAD 000008c9: PUSH2 0x08e4 000008cc: SWAP1 000008cd: PUSH11 0x0c685fa11e01ec6f000000 000008d9: SWAP1 000008da: PUSH4 0xffffffff 000008df: PUSH2 0x24d7 000008e2: AND 000008e3: JUMP 000008e4: JUMPDEST 000008e5: PUSH1 0x00 000008e7: DUP9 000008e8: DUP2 000008e9: MSTORE 000008ea: PUSH1 0x02 000008ec: PUSH1 0x20 000008ee: MSTORE 000008ef: PUSH1 0x40 000008f1: SWAP1 000008f2: KECCAK256 000008f3: SLOAD 000008f4: SWAP1 000008f5: SWAP3 000008f6: POP 000008f7: PUSH10 0x03f5e5fbdc485eafe200 00000902: GT 00000903: PUSH2 0x090f 00000906: JUMPI 00000907: PUSH1 0x00 00000909: SWAP6 0000090a: POP 0000090b: PUSH2 0x093c 0000090e: JUMP 0000090f: JUMPDEST 00000910: PUSH1 0x00 00000912: DUP8 00000913: DUP2 00000914: MSTORE 00000915: PUSH1 0x02 00000917: PUSH1 0x20 00000919: MSTORE 0000091a: PUSH1 0x40 0000091c: SWAP1 0000091d: KECCAK256 0000091e: SLOAD 0000091f: PUSH2 0x0939 00000922: SWAP1 00000923: PUSH10 0x03f5e5fbdc485eafe200 0000092e: SWAP1 0000092f: PUSH4 0xffffffff 00000934: PUSH2 0x24d7 00000937: AND 00000938: JUMP 00000939: JUMPDEST 0000093a: SWAP6 0000093b: POP 0000093c: JUMPDEST 0000093d: DUP6 0000093e: DUP10 0000093f: GT 00000940: ISZERO 00000941: PUSH2 0x0986 00000944: JUMPI 00000945: CALLER 00000946: PUSH2 0x08fc 00000949: PUSH2 0x0958 0000094c: DUP12 0000094d: DUP10 0000094e: PUSH4 0xffffffff 00000953: PUSH2 0x24d7 00000956: AND 00000957: JUMP 00000958: JUMPDEST 00000959: PUSH1 0x40 0000095b: MLOAD 0000095c: DUP2 0000095d: ISZERO 0000095e: SWAP1 0000095f: SWAP3 00000960: MUL 00000961: SWAP2 00000962: PUSH1 0x00 00000964: DUP2 00000965: DUP2 00000966: DUP2 00000967: DUP6 00000968: DUP9 00000969: DUP9 0000096a: CALL 0000096b: SWAP4 0000096c: POP 0000096d: POP 0000096e: POP 0000096f: POP 00000970: ISZERO 00000971: DUP1 00000972: ISZERO 00000973: PUSH2 0x0980 00000976: JUMPI 00000977: RETURNDATASIZE 00000978: PUSH1 0x00 0000097a: DUP1 0000097b: RETURNDATACOPY 0000097c: RETURNDATASIZE 0000097d: PUSH1 0x00 0000097f: REVERT 00000980: JUMPDEST 00000981: POP 00000982: PUSH2 0x098a 00000985: JUMP 00000986: JUMPDEST 00000987: DUP9 00000988: SWAP6 00000989: POP 0000098a: JUMPDEST 0000098b: PUSH2 0x099c 0000098e: DUP9 0000098f: PUSH2 0x0708 00000992: PUSH4 0xffffffff 00000997: PUSH2 0x2537 0000099a: AND 0000099b: JUMP 0000099c: JUMPDEST 0000099d: PUSH1 0x00 0000099f: DUP9 000009a0: DUP2 000009a1: MSTORE 000009a2: PUSH1 0x02 000009a4: PUSH1 0x20 000009a6: MSTORE 000009a7: PUSH1 0x40 000009a9: SWAP1 000009aa: KECCAK256 000009ab: PUSH1 0x04 000009ad: ADD 000009ae: SSTORE 000009af: PUSH2 0x09d2 000009b2: PUSH2 0x0708 000009b5: PUSH2 0x09c6 000009b8: DUP11 000009b9: PUSH2 0x0384 000009bc: PUSH4 0xffffffff 000009c1: PUSH2 0x2537 000009c4: AND 000009c5: JUMP 000009c6: JUMPDEST 000009c7: SWAP1 000009c8: PUSH4 0xffffffff 000009cd: PUSH2 0x2537 000009d0: AND 000009d1: JUMP 000009d2: JUMPDEST 000009d3: PUSH1 0x00 000009d5: DUP9 000009d6: DUP2 000009d7: MSTORE 000009d8: PUSH1 0x02 000009da: PUSH1 0x20 000009dc: MSTORE 000009dd: PUSH1 0x40 000009df: SWAP1 000009e0: KECCAK256 000009e1: PUSH1 0x03 000009e3: DUP2 000009e4: ADD 000009e5: SWAP2 000009e6: SWAP1 000009e7: SWAP2 000009e8: SSTORE 000009e9: PUSH1 0x06 000009eb: ADD 000009ec: DUP1 000009ed: SLOAD 000009ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a03: NOT 00000a04: AND 00000a05: CALLER 00000a06: OR 00000a07: SWAP1 00000a08: SSTORE 00000a09: PUSH2 0x0a87 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: PUSH8 0x8ac7230489e80000 00000a17: DUP3 00000a18: LT 00000a19: ISZERO 00000a1a: PUSH2 0x0a6d 00000a1d: JUMPI 00000a1e: PUSH1 0x40 00000a20: DUP1 00000a21: MLOAD 00000a22: PUSH1 0xe5 00000a24: PUSH1 0x02 00000a26: EXP 00000a27: PUSH3 0x461bcd 00000a2b: MUL 00000a2c: DUP2 00000a2d: MSTORE 00000a2e: PUSH1 0x20 00000a30: PUSH1 0x04 00000a32: DUP3 00000a33: ADD 00000a34: MSTORE 00000a35: PUSH1 0x19 00000a37: PUSH1 0x24 00000a39: DUP3 00000a3a: ADD 00000a3b: MSTORE 00000a3c: PUSH32 0x6174206c656173742031302074686f756e642070656f706c6500000000000000 00000a5d: PUSH1 0x44 00000a5f: DUP3 00000a60: ADD 00000a61: MSTORE 00000a62: SWAP1 00000a63: MLOAD 00000a64: SWAP1 00000a65: DUP2 00000a66: SWAP1 00000a67: SUB 00000a68: PUSH1 0x64 00000a6a: ADD 00000a6b: SWAP1 00000a6c: REVERT 00000a6d: JUMPDEST 00000a6e: PUSH1 0x00 00000a70: DUP8 00000a71: DUP2 00000a72: MSTORE 00000a73: PUSH1 0x02 00000a75: PUSH1 0x20 00000a77: MSTORE 00000a78: PUSH1 0x40 00000a7a: SWAP1 00000a7b: KECCAK256 00000a7c: PUSH2 0xa8c0 00000a7f: DUP10 00000a80: ADD 00000a81: PUSH1 0x03 00000a83: SWAP1 00000a84: SWAP2 00000a85: ADD 00000a86: SSTORE 00000a87: JUMPDEST 00000a88: PUSH1 0x00 00000a8a: DUP8 00000a8b: DUP2 00000a8c: MSTORE 00000a8d: PUSH1 0x02 00000a8f: PUSH1 0x20 00000a91: SWAP1 00000a92: DUP2 00000a93: MSTORE 00000a94: PUSH1 0x40 00000a96: DUP1 00000a97: DUP4 00000a98: KECCAK256 00000a99: PUSH1 0x05 00000a9b: ADD 00000a9c: DUP1 00000a9d: SLOAD 00000a9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ab3: NOT 00000ab4: AND 00000ab5: CALLER 00000ab6: SWAP1 00000ab7: DUP2 00000ab8: OR 00000ab9: SWAP1 00000aba: SWAP2 00000abb: SSTORE 00000abc: PUSH1 0x03 00000abe: DUP4 00000abf: MSTORE 00000ac0: DUP2 00000ac1: DUP5 00000ac2: KECCAK256 00000ac3: SWAP1 00000ac4: DUP5 00000ac5: MSTORE 00000ac6: SWAP1 00000ac7: SWAP2 00000ac8: MSTORE 00000ac9: SWAP1 00000aca: KECCAK256 00000acb: PUSH1 0x01 00000acd: ADD 00000ace: SLOAD 00000acf: PUSH2 0x0adf 00000ad2: SWAP1 00000ad3: DUP4 00000ad4: SWAP1 00000ad5: PUSH4 0xffffffff 00000ada: PUSH2 0x2537 00000add: AND 00000ade: JUMP 00000adf: JUMPDEST 00000ae0: PUSH1 0x00 00000ae2: DUP9 00000ae3: DUP2 00000ae4: MSTORE 00000ae5: PUSH1 0x03 00000ae7: PUSH1 0x20 00000ae9: SWAP1 00000aea: DUP2 00000aeb: MSTORE 00000aec: PUSH1 0x40 00000aee: DUP1 00000aef: DUP4 00000af0: KECCAK256 00000af1: CALLER 00000af2: DUP5 00000af3: MSTORE 00000af4: SWAP1 00000af5: SWAP2 00000af6: MSTORE 00000af7: SWAP1 00000af8: KECCAK256 00000af9: PUSH1 0x01 00000afb: DUP2 00000afc: ADD 00000afd: SWAP2 00000afe: SWAP1 00000aff: SWAP2 00000b00: SSTORE 00000b01: SLOAD 00000b02: PUSH2 0x0b0c 00000b05: SWAP1 00000b06: DUP8 00000b07: SWAP1 00000b08: PUSH2 0x2537 00000b0b: JUMP 00000b0c: JUMPDEST 00000b0d: PUSH1 0x00 00000b0f: DUP9 00000b10: DUP2 00000b11: MSTORE 00000b12: PUSH1 0x03 00000b14: PUSH1 0x20 00000b16: SWAP1 00000b17: DUP2 00000b18: MSTORE 00000b19: PUSH1 0x40 00000b1b: DUP1 00000b1c: DUP4 00000b1d: KECCAK256 00000b1e: CALLER 00000b1f: DUP5 00000b20: MSTORE 00000b21: DUP3 00000b22: MSTORE 00000b23: DUP1 00000b24: DUP4 00000b25: KECCAK256 00000b26: SWAP4 00000b27: SWAP1 00000b28: SWAP4 00000b29: SSTORE 00000b2a: DUP10 00000b2b: DUP3 00000b2c: MSTORE 00000b2d: PUSH1 0x02 00000b2f: SWAP1 00000b30: MSTORE 00000b31: KECCAK256 00000b32: PUSH1 0x01 00000b34: ADD 00000b35: SLOAD 00000b36: PUSH2 0x0b46 00000b39: SWAP1 00000b3a: DUP4 00000b3b: SWAP1 00000b3c: PUSH4 0xffffffff 00000b41: PUSH2 0x2537 00000b44: AND 00000b45: JUMP 00000b46: JUMPDEST 00000b47: PUSH1 0x00 00000b49: DUP9 00000b4a: DUP2 00000b4b: MSTORE 00000b4c: PUSH1 0x02 00000b4e: PUSH1 0x20 00000b50: MSTORE 00000b51: PUSH1 0x40 00000b53: SWAP1 00000b54: KECCAK256 00000b55: PUSH1 0x01 00000b57: DUP2 00000b58: ADD 00000b59: SWAP2 00000b5a: SWAP1 00000b5b: SWAP2 00000b5c: SSTORE 00000b5d: SLOAD 00000b5e: PUSH2 0x0b6e 00000b61: SWAP1 00000b62: DUP8 00000b63: SWAP1 00000b64: PUSH4 0xffffffff 00000b69: PUSH2 0x2537 00000b6c: AND 00000b6d: JUMP 00000b6e: JUMPDEST 00000b6f: PUSH1 0x00 00000b71: DUP9 00000b72: DUP2 00000b73: MSTORE 00000b74: PUSH1 0x02 00000b76: PUSH1 0x20 00000b78: MSTORE 00000b79: PUSH1 0x40 00000b7b: SWAP1 00000b7c: KECCAK256 00000b7d: SSTORE 00000b7e: PUSH1 0x01 00000b80: SLOAD 00000b81: PUSH2 0x0b91 00000b84: SWAP1 00000b85: DUP8 00000b86: SWAP1 00000b87: PUSH4 0xffffffff 00000b8c: PUSH2 0x2537 00000b8f: AND 00000b90: JUMP 00000b91: JUMPDEST 00000b92: PUSH1 0x01 00000b94: SSTORE 00000b95: PUSH1 0x40 00000b97: DUP1 00000b98: MLOAD 00000b99: DUP4 00000b9a: DUP2 00000b9b: MSTORE 00000b9c: PUSH1 0x20 00000b9e: DUP2 00000b9f: ADD 00000ba0: DUP9 00000ba1: SWAP1 00000ba2: MSTORE 00000ba3: DUP1 00000ba4: DUP3 00000ba5: ADD 00000ba6: DUP11 00000ba7: SWAP1 00000ba8: MSTORE 00000ba9: SWAP1 00000baa: MLOAD 00000bab: PUSH1 0x01 00000bad: PUSH1 0xa0 00000baf: PUSH1 0x02 00000bb1: EXP 00000bb2: SUB 00000bb3: DUP13 00000bb4: AND 00000bb5: SWAP2 00000bb6: DUP10 00000bb7: SWAP2 00000bb8: CALLER 00000bb9: SWAP2 00000bba: PUSH32 0x6ba72b77342d975bcfca91896da50e2306b21fa4b34dc71d1beb12dbd6afc33b 00000bdb: SWAP2 00000bdc: SWAP1 00000bdd: DUP2 00000bde: SWAP1 00000bdf: SUB 00000be0: PUSH1 0x60 00000be2: ADD 00000be3: SWAP1 00000be4: LOG4 00000be5: PUSH2 0x0eed 00000be8: JUMP 00000be9: JUMPDEST 00000bea: PUSH1 0x00 00000bec: DUP8 00000bed: DUP2 00000bee: MSTORE 00000bef: PUSH1 0x02 00000bf1: PUSH1 0x20 00000bf3: MSTORE 00000bf4: PUSH1 0x40 00000bf6: SWAP1 00000bf7: KECCAK256 00000bf8: PUSH1 0x04 00000bfa: ADD 00000bfb: SLOAD 00000bfc: DUP9 00000bfd: GT 00000bfe: PUSH2 0x0c51 00000c01: JUMPI 00000c02: PUSH1 0x40 00000c04: DUP1 00000c05: MLOAD 00000c06: PUSH1 0xe5 00000c08: PUSH1 0x02 00000c0a: EXP 00000c0b: PUSH3 0x461bcd 00000c0f: MUL 00000c10: DUP2 00000c11: MSTORE 00000c12: PUSH1 0x20 00000c14: PUSH1 0x04 00000c16: DUP3 00000c17: ADD 00000c18: MSTORE 00000c19: PUSH1 0x1e 00000c1b: PUSH1 0x24 00000c1d: DUP3 00000c1e: ADD 00000c1f: MSTORE 00000c20: PUSH32 0x546865207669727573206973206265696e672070726570617265642e2e2e0000 00000c41: PUSH1 0x44 00000c43: DUP3 00000c44: ADD 00000c45: MSTORE 00000c46: SWAP1 00000c47: MLOAD 00000c48: SWAP1 00000c49: DUP2 00000c4a: SWAP1 00000c4b: SUB 00000c4c: PUSH1 0x64 00000c4e: ADD 00000c4f: SWAP1 00000c50: REVERT 00000c51: JUMPDEST 00000c52: PUSH2 0x0ca9 00000c55: PUSH7 0xb1a2bc2ec50000 00000c5d: PUSH2 0x09c6 00000c60: PUSH7 0xb1a2bc2ec50000 00000c68: PUSH2 0x2a30 00000c6b: PUSH2 0x0c93 00000c6e: PUSH1 0x02 00000c70: PUSH1 0x00 00000c72: DUP15 00000c73: DUP2 00000c74: MSTORE 00000c75: PUSH1 0x20 00000c77: ADD 00000c78: SWAP1 00000c79: DUP2 00000c7a: MSTORE 00000c7b: PUSH1 0x20 00000c7d: ADD 00000c7e: PUSH1 0x00 00000c80: KECCAK256 00000c81: PUSH1 0x04 00000c83: ADD 00000c84: SLOAD 00000c85: DUP15 00000c86: PUSH2 0x24d7 00000c89: SWAP1 00000c8a: SWAP2 00000c8b: SWAP1 00000c8c: PUSH4 0xffffffff 00000c91: AND 00000c92: JUMP 00000c93: JUMPDEST 00000c94: DUP2 00000c95: ISZERO 00000c96: ISZERO 00000c97: PUSH2 0x0c9c 00000c9a: JUMPI 00000c9b: INVALID 00000c9c: JUMPDEST 00000c9d: DIV 00000c9e: SWAP1 00000c9f: PUSH4 0xffffffff 00000ca4: PUSH2 0x245a 00000ca7: AND 00000ca8: JUMP 00000ca9: JUMPDEST 00000caa: SWAP6 00000cab: POP 00000cac: DUP6 00000cad: DUP10 00000cae: LT 00000caf: ISZERO 00000cb0: PUSH2 0x0d03 00000cb3: JUMPI 00000cb4: PUSH1 0x40 00000cb6: DUP1 00000cb7: MLOAD 00000cb8: PUSH1 0xe5 00000cba: PUSH1 0x02 00000cbc: EXP 00000cbd: PUSH3 0x461bcd 00000cc1: MUL 00000cc2: DUP2 00000cc3: MSTORE 00000cc4: PUSH1 0x20 00000cc6: PUSH1 0x04 00000cc8: DUP3 00000cc9: ADD 00000cca: MSTORE 00000ccb: PUSH1 0x15 00000ccd: PUSH1 0x24 00000ccf: DUP3 00000cd0: ADD 00000cd1: MSTORE 00000cd2: PUSH32 0x457468657220616d6f756e742069732077726f6e670000000000000000000000 00000cf3: PUSH1 0x44 00000cf5: DUP3 00000cf6: ADD 00000cf7: MSTORE 00000cf8: SWAP1 00000cf9: MLOAD 00000cfa: SWAP1 00000cfb: DUP2 00000cfc: SWAP1 00000cfd: SUB 00000cfe: PUSH1 0x64 00000d00: ADD 00000d01: SWAP1 00000d02: REVERT 00000d03: JUMPDEST 00000d04: DUP6 00000d05: DUP10 00000d06: GT 00000d07: ISZERO 00000d08: PUSH2 0x0d49 00000d0b: JUMPI 00000d0c: CALLER 00000d0d: PUSH2 0x08fc 00000d10: PUSH2 0x0d1f 00000d13: DUP12 00000d14: DUP10 00000d15: PUSH4 0xffffffff 00000d1a: PUSH2 0x24d7 00000d1d: AND 00000d1e: JUMP 00000d1f: JUMPDEST 00000d20: PUSH1 0x40 00000d22: MLOAD 00000d23: DUP2 00000d24: ISZERO 00000d25: SWAP1 00000d26: SWAP3 00000d27: MUL 00000d28: SWAP2 00000d29: PUSH1 0x00 00000d2b: DUP2 00000d2c: DUP2 00000d2d: DUP2 00000d2e: DUP6 00000d2f: DUP9 00000d30: DUP9 00000d31: CALL 00000d32: SWAP4 00000d33: POP 00000d34: POP 00000d35: POP 00000d36: POP 00000d37: ISZERO 00000d38: DUP1 00000d39: ISZERO 00000d3a: PUSH2 0x0d47 00000d3d: JUMPI 00000d3e: RETURNDATASIZE 00000d3f: PUSH1 0x00 00000d41: DUP1 00000d42: RETURNDATACOPY 00000d43: RETURNDATASIZE 00000d44: PUSH1 0x00 00000d46: REVERT 00000d47: JUMPDEST 00000d48: POP 00000d49: JUMPDEST 00000d4a: PUSH1 0x00 00000d4c: DUP8 00000d4d: DUP2 00000d4e: MSTORE 00000d4f: PUSH1 0x02 00000d51: PUSH1 0x20 00000d53: SWAP1 00000d54: DUP2 00000d55: MSTORE 00000d56: PUSH1 0x40 00000d58: DUP1 00000d59: DUP4 00000d5a: KECCAK256 00000d5b: PUSH2 0x0384 00000d5e: DUP13 00000d5f: ADD 00000d60: PUSH1 0x03 00000d62: DUP1 00000d63: DUP4 00000d64: ADD 00000d65: SWAP2 00000d66: SWAP1 00000d67: SWAP2 00000d68: SSTORE 00000d69: PUSH1 0x05 00000d6b: SWAP1 00000d6c: SWAP2 00000d6d: ADD 00000d6e: DUP1 00000d6f: SLOAD 00000d70: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d85: NOT 00000d86: AND 00000d87: CALLER 00000d88: SWAP1 00000d89: DUP2 00000d8a: OR 00000d8b: SWAP1 00000d8c: SWAP2 00000d8d: SSTORE 00000d8e: SWAP1 00000d8f: DUP4 00000d90: MSTORE 00000d91: DUP2 00000d92: DUP5 00000d93: KECCAK256 00000d94: SWAP1 00000d95: DUP5 00000d96: MSTORE 00000d97: SWAP1 00000d98: SWAP2 00000d99: MSTORE 00000d9a: SWAP1 00000d9b: KECCAK256 00000d9c: SLOAD 00000d9d: PUSH2 0x0dad 00000da0: SWAP1 00000da1: DUP8 00000da2: SWAP1 00000da3: PUSH4 0xffffffff 00000da8: PUSH2 0x2537 00000dab: AND 00000dac: JUMP 00000dad: JUMPDEST 00000dae: PUSH1 0x00 00000db0: DUP9 00000db1: DUP2 00000db2: MSTORE 00000db3: PUSH1 0x03 00000db5: PUSH1 0x20 00000db7: SWAP1 00000db8: DUP2 00000db9: MSTORE 00000dba: PUSH1 0x40 00000dbc: DUP1 00000dbd: DUP4 00000dbe: KECCAK256 00000dbf: CALLER 00000dc0: DUP5 00000dc1: MSTORE 00000dc2: DUP3 00000dc3: MSTORE 00000dc4: DUP1 00000dc5: DUP4 00000dc6: KECCAK256 00000dc7: SWAP4 00000dc8: SWAP1 00000dc9: SWAP4 00000dca: SSTORE 00000dcb: DUP10 00000dcc: DUP3 00000dcd: MSTORE 00000dce: PUSH1 0x02 00000dd0: SWAP1 00000dd1: MSTORE 00000dd2: KECCAK256 00000dd3: SLOAD 00000dd4: PUSH2 0x0de4 00000dd7: SWAP1 00000dd8: DUP8 00000dd9: SWAP1 00000dda: PUSH4 0xffffffff 00000ddf: PUSH2 0x2537 00000de2: AND 00000de3: JUMP 00000de4: JUMPDEST 00000de5: PUSH1 0x00 00000de7: DUP9 00000de8: DUP2 00000de9: MSTORE 00000dea: PUSH1 0x02 00000dec: PUSH1 0x20 00000dee: MSTORE 00000def: PUSH1 0x40 00000df1: SWAP1 00000df2: KECCAK256 00000df3: SSTORE 00000df4: PUSH1 0x01 00000df6: SLOAD 00000df7: PUSH2 0x0e07 00000dfa: SWAP1 00000dfb: DUP8 00000dfc: SWAP1 00000dfd: PUSH4 0xffffffff 00000e02: PUSH2 0x2537 00000e05: AND 00000e06: JUMP 00000e07: JUMPDEST 00000e08: PUSH1 0x01 00000e0a: SWAP1 00000e0b: DUP2 00000e0c: SSTORE 00000e0d: PUSH1 0x00 00000e0f: DUP9 00000e10: DUP2 00000e11: MSTORE 00000e12: PUSH1 0x02 00000e14: PUSH1 0x20 00000e16: MSTORE 00000e17: PUSH1 0x40 00000e19: SWAP1 00000e1a: KECCAK256 00000e1b: PUSH1 0x04 00000e1d: ADD 00000e1e: SLOAD 00000e1f: PUSH2 0x0e3e 00000e22: SWAP2 00000e23: SWAP1 00000e24: PUSH2 0x09c6 00000e27: SWAP1 00000e28: DUP3 00000e29: SWAP1 00000e2a: PUSH2 0x2a30 00000e2d: SWAP1 00000e2e: PUSH2 0x0c93 00000e31: SWAP1 00000e32: DUP15 00000e33: SWAP1 00000e34: PUSH4 0xffffffff 00000e39: PUSH2 0x24d7 00000e3c: AND 00000e3d: JUMP 00000e3e: JUMPDEST 00000e3f: SWAP1 00000e40: POP 00000e41: PUSH2 0x019a 00000e44: DUP2 00000e45: LT 00000e46: PUSH2 0x0e4e 00000e49: JUMPI 00000e4a: POP 00000e4b: PUSH2 0x019a 00000e4e: JUMPDEST 00000e4f: PUSH1 0x00 00000e51: DUP8 00000e52: DUP2 00000e53: MSTORE 00000e54: PUSH1 0x02 00000e56: PUSH1 0x20 00000e58: MSTORE 00000e59: PUSH1 0x40 00000e5b: SWAP1 00000e5c: KECCAK256 00000e5d: PUSH1 0x1a 00000e5f: ADD 00000e60: SLOAD 00000e61: PUSH2 0x0e8d 00000e64: SWAP1 00000e65: PUSH2 0x03e8 00000e68: PUSH2 0x0e77 00000e6b: DUP5 00000e6c: DUP11 00000e6d: PUSH4 0xffffffff 00000e72: PUSH2 0x245a 00000e75: AND 00000e76: JUMP 00000e77: JUMPDEST 00000e78: DUP2 00000e79: ISZERO 00000e7a: ISZERO 00000e7b: PUSH2 0x0e80 00000e7e: JUMPI 00000e7f: INVALID 00000e80: JUMPDEST 00000e81: DIV 00000e82: SWAP1 00000e83: PUSH4 0xffffffff 00000e88: PUSH2 0x2537 00000e8b: AND 00000e8c: JUMP 00000e8d: JUMPDEST 00000e8e: PUSH1 0x00 00000e90: DUP9 00000e91: DUP2 00000e92: MSTORE 00000e93: PUSH1 0x02 00000e95: PUSH1 0x20 00000e97: SWAP1 00000e98: DUP2 00000e99: MSTORE 00000e9a: PUSH1 0x40 00000e9c: SWAP2 00000e9d: DUP3 00000e9e: SWAP1 00000e9f: KECCAK256 00000ea0: PUSH1 0x1a 00000ea2: ADD 00000ea3: SWAP3 00000ea4: SWAP1 00000ea5: SWAP3 00000ea6: SSTORE 00000ea7: DUP1 00000ea8: MLOAD 00000ea9: DUP9 00000eaa: DUP2 00000eab: MSTORE 00000eac: SWAP2 00000ead: DUP3 00000eae: ADD 00000eaf: DUP11 00000eb0: SWAP1 00000eb1: MSTORE 00000eb2: DUP1 00000eb3: MLOAD 00000eb4: PUSH1 0x01 00000eb6: PUSH1 0xa0 00000eb8: PUSH1 0x02 00000eba: EXP 00000ebb: SUB 00000ebc: DUP14 00000ebd: AND 00000ebe: SWAP3 00000ebf: DUP11 00000ec0: SWAP3 00000ec1: CALLER 00000ec2: SWAP3 00000ec3: PUSH32 0x7cfc1da3c0c40e1670d11d884a3776eb3a8949e87b844c6dac43b5c9c3dc5f7e 00000ee4: SWAP3 00000ee5: DUP2 00000ee6: SWAP1 00000ee7: SUB 00000ee8: SWAP1 00000ee9: SWAP2 00000eea: ADD 00000eeb: SWAP1 00000eec: LOG4 00000eed: JUMPDEST 00000eee: PUSH1 0x01 00000ef0: PUSH1 0xa0 00000ef2: PUSH1 0x02 00000ef4: EXP 00000ef5: SUB 00000ef6: DUP11 00000ef7: AND 00000ef8: ISZERO 00000ef9: DUP1 00000efa: ISZERO 00000efb: SWAP1 00000efc: PUSH2 0x0f09 00000eff: JUMPI 00000f00: POP 00000f01: PUSH2 0x0f09 00000f04: DUP11 00000f05: PUSH2 0x25cb 00000f08: JUMP 00000f09: JUMPDEST 00000f0a: ISZERO 00000f0b: PUSH2 0x1008 00000f0e: JUMPI 00000f0f: PUSH2 0x0f76 00000f12: PUSH1 0x64 00000f14: PUSH2 0x0f24 00000f17: DUP9 00000f18: PUSH1 0x0a 00000f1a: PUSH4 0xffffffff 00000f1f: PUSH2 0x245a 00000f22: AND 00000f23: JUMP 00000f24: JUMPDEST 00000f25: DUP2 00000f26: ISZERO 00000f27: ISZERO 00000f28: PUSH2 0x0f2d 00000f2b: JUMPI 00000f2c: INVALID 00000f2d: JUMPDEST 00000f2e: DIV 00000f2f: PUSH1 0x03 00000f31: PUSH1 0x00 00000f33: DUP11 00000f34: DUP2 00000f35: MSTORE 00000f36: PUSH1 0x20 00000f38: ADD 00000f39: SWAP1 00000f3a: DUP2 00000f3b: MSTORE 00000f3c: PUSH1 0x20 00000f3e: ADD 00000f3f: PUSH1 0x00 00000f41: KECCAK256 00000f42: PUSH1 0x00 00000f44: DUP14 00000f45: PUSH1 0x01 00000f47: PUSH1 0xa0 00000f49: PUSH1 0x02 00000f4b: EXP 00000f4c: SUB 00000f4d: AND 00000f4e: PUSH1 0x01 00000f50: PUSH1 0xa0 00000f52: PUSH1 0x02 00000f54: EXP 00000f55: SUB 00000f56: AND 00000f57: DUP2 00000f58: MSTORE 00000f59: PUSH1 0x20 00000f5b: ADD 00000f5c: SWAP1 00000f5d: DUP2 00000f5e: MSTORE 00000f5f: PUSH1 0x20 00000f61: ADD 00000f62: PUSH1 0x00 00000f64: KECCAK256 00000f65: PUSH1 0x03 00000f67: ADD 00000f68: SLOAD 00000f69: PUSH2 0x2537 00000f6c: SWAP1 00000f6d: SWAP2 00000f6e: SWAP1 00000f6f: PUSH4 0xffffffff 00000f74: AND 00000f75: JUMP 00000f76: JUMPDEST 00000f77: PUSH1 0x03 00000f79: PUSH1 0x00 00000f7b: DUP10 00000f7c: DUP2 00000f7d: MSTORE 00000f7e: PUSH1 0x20 00000f80: ADD 00000f81: SWAP1 00000f82: DUP2 00000f83: MSTORE 00000f84: PUSH1 0x20 00000f86: ADD 00000f87: PUSH1 0x00 00000f89: KECCAK256 00000f8a: PUSH1 0x00 00000f8c: DUP13 00000f8d: PUSH1 0x01 00000f8f: PUSH1 0xa0 00000f91: PUSH1 0x02 00000f93: EXP 00000f94: SUB 00000f95: AND 00000f96: PUSH1 0x01 00000f98: PUSH1 0xa0 00000f9a: PUSH1 0x02 00000f9c: EXP 00000f9d: SUB 00000f9e: AND 00000f9f: DUP2 00000fa0: MSTORE 00000fa1: PUSH1 0x20 00000fa3: ADD 00000fa4: SWAP1 00000fa5: DUP2 00000fa6: MSTORE 00000fa7: PUSH1 0x20 00000fa9: ADD 00000faa: PUSH1 0x00 00000fac: KECCAK256 00000fad: PUSH1 0x03 00000faf: ADD 00000fb0: DUP2 00000fb1: SWAP1 00000fb2: SSTORE 00000fb3: POP 00000fb4: PUSH2 0x0ff5 00000fb7: PUSH1 0x64 00000fb9: PUSH2 0x0fcc 00000fbc: PUSH1 0x0a 00000fbe: DUP10 00000fbf: PUSH2 0x245a 00000fc2: SWAP1 00000fc3: SWAP2 00000fc4: SWAP1 00000fc5: PUSH4 0xffffffff 00000fca: AND 00000fcb: JUMP 00000fcc: JUMPDEST 00000fcd: DUP2 00000fce: ISZERO 00000fcf: ISZERO 00000fd0: PUSH2 0x0fd5 00000fd3: JUMPI 00000fd4: INVALID 00000fd5: JUMPDEST 00000fd6: PUSH1 0x00 00000fd8: DUP11 00000fd9: DUP2 00000fda: MSTORE 00000fdb: PUSH1 0x02 00000fdd: PUSH1 0x20 00000fdf: MSTORE 00000fe0: PUSH1 0x40 00000fe2: SWAP1 00000fe3: KECCAK256 00000fe4: PUSH1 0x18 00000fe6: ADD 00000fe7: SLOAD 00000fe8: SWAP2 00000fe9: SWAP1 00000fea: DIV 00000feb: PUSH4 0xffffffff 00000ff0: PUSH2 0x2537 00000ff3: AND 00000ff4: JUMP 00000ff5: JUMPDEST 00000ff6: PUSH1 0x00 00000ff8: DUP9 00000ff9: DUP2 00000ffa: MSTORE 00000ffb: PUSH1 0x02 00000ffd: PUSH1 0x20 00000fff: MSTORE 00001000: PUSH1 0x40 00001002: SWAP1 00001003: KECCAK256 00001004: PUSH1 0x18 00001006: ADD 00001007: SSTORE 00001008: JUMPDEST 00001009: PUSH1 0x00 0000100b: DUP8 0000100c: DUP2 0000100d: MSTORE 0000100e: PUSH1 0x02 00001010: PUSH1 0x20 00001012: MSTORE 00001013: PUSH1 0x40 00001015: SWAP1 00001016: KECCAK256 00001017: PUSH1 0x17 00001019: DUP2 0000101a: ADD 0000101b: SLOAD 0000101c: PUSH1 0x07 0000101e: SWAP1 0000101f: SWAP2 00001020: ADD 00001021: SWAP1 00001022: PUSH1 0x0b 00001024: SWAP1 00001025: MOD 00001026: PUSH1 0x0b 00001028: DUP2 00001029: LT 0000102a: PUSH2 0x102f 0000102d: JUMPI 0000102e: INVALID 0000102f: JUMPDEST 00001030: ADD 00001031: SLOAD 00001032: PUSH1 0x00 00001034: DUP9 00001035: DUP2 00001036: MSTORE 00001037: PUSH1 0x02 00001039: PUSH1 0x20 0000103b: MSTORE 0000103c: PUSH1 0x40 0000103e: SWAP1 0000103f: KECCAK256 00001040: PUSH1 0x17 00001042: DUP2 00001043: ADD 00001044: SLOAD 00001045: PUSH1 0x01 00001047: PUSH1 0xa0 00001049: PUSH1 0x02 0000104b: EXP 0000104c: SUB 0000104d: SWAP1 0000104e: SWAP3 0000104f: AND 00001050: SWAP2 00001051: PUSH1 0x12 00001053: SWAP1 00001054: SWAP2 00001055: ADD 00001056: SWAP1 00001057: PUSH1 0x03 00001059: AND 0000105a: PUSH1 0x04 0000105c: DUP2 0000105d: LT 0000105e: PUSH2 0x1063 00001061: JUMPI 00001062: INVALID 00001063: JUMPDEST 00001064: ADD 00001065: DUP1 00001066: SLOAD 00001067: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107c: NOT 0000107d: AND 0000107e: PUSH1 0x01 00001080: PUSH1 0xa0 00001082: PUSH1 0x02 00001084: EXP 00001085: SUB 00001086: SWAP3 00001087: SWAP1 00001088: SWAP3 00001089: AND 0000108a: SWAP2 0000108b: SWAP1 0000108c: SWAP2 0000108d: OR 0000108e: SWAP1 0000108f: SSTORE 00001090: PUSH1 0x00 00001092: DUP8 00001093: DUP2 00001094: MSTORE 00001095: PUSH1 0x02 00001097: PUSH1 0x20 00001099: MSTORE 0000109a: PUSH1 0x40 0000109c: SWAP1 0000109d: KECCAK256 0000109e: PUSH1 0x17 000010a0: DUP2 000010a1: ADD 000010a2: SLOAD 000010a3: CALLER 000010a4: SWAP2 000010a5: PUSH1 0x07 000010a7: ADD 000010a8: SWAP1 000010a9: PUSH1 0x0b 000010ab: SWAP1 000010ac: MOD 000010ad: PUSH1 0x0b 000010af: DUP2 000010b0: LT 000010b1: PUSH2 0x10b6 000010b4: JUMPI 000010b5: INVALID 000010b6: JUMPDEST 000010b7: ADD 000010b8: DUP1 000010b9: SLOAD 000010ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010cf: NOT 000010d0: AND 000010d1: PUSH1 0x01 000010d3: PUSH1 0xa0 000010d5: PUSH1 0x02 000010d7: EXP 000010d8: SUB 000010d9: SWAP3 000010da: SWAP1 000010db: SWAP3 000010dc: AND 000010dd: SWAP2 000010de: SWAP1 000010df: SWAP2 000010e0: OR 000010e1: SWAP1 000010e2: SSTORE 000010e3: PUSH1 0x00 000010e5: DUP8 000010e6: DUP2 000010e7: MSTORE 000010e8: PUSH1 0x02 000010ea: PUSH1 0x20 000010ec: MSTORE 000010ed: PUSH1 0x40 000010ef: SWAP1 000010f0: KECCAK256 000010f1: PUSH1 0x17 000010f3: ADD 000010f4: SLOAD 000010f5: PUSH2 0x10ff 000010f8: SWAP1 000010f9: PUSH1 0x01 000010fb: PUSH2 0x2537 000010fe: JUMP 000010ff: JUMPDEST 00001100: PUSH1 0x00 00001102: SWAP8 00001103: DUP9 00001104: MSTORE 00001105: PUSH1 0x02 00001107: PUSH1 0x20 00001109: MSTORE 0000110a: PUSH1 0x40 0000110c: SWAP1 0000110d: SWAP8 0000110e: KECCAK256 0000110f: PUSH1 0x17 00001111: ADD 00001112: SWAP7 00001113: SWAP1 00001114: SWAP7 00001115: SSTORE 00001116: POP 00001117: POP 00001118: POP 00001119: POP 0000111a: POP 0000111b: POP 0000111c: POP 0000111d: POP 0000111e: POP 0000111f: JUMP 00001120: JUMPDEST 00001121: PUSH1 0x00 00001123: DUP1 00001124: SLOAD 00001125: DUP1 00001126: DUP3 00001127: MSTORE 00001128: PUSH1 0x02 0000112a: PUSH1 0x20 0000112c: MSTORE 0000112d: PUSH1 0x40 0000112f: DUP3 00001130: KECCAK256 00001131: PUSH1 0x03 00001133: ADD 00001134: SLOAD 00001135: TIMESTAMP 00001136: SWAP1 00001137: DUP4 00001138: SWAP1 00001139: DUP3 0000113a: GT 0000113b: ISZERO 0000113c: PUSH2 0x114e 0000113f: JUMPI 00001140: PUSH7 0x02aa209ead3c50 00001148: SWAP4 00001149: POP 0000114a: PUSH2 0x12d8 0000114d: JUMP 0000114e: JUMPDEST 0000114f: PUSH1 0x00 00001151: DUP4 00001152: DUP2 00001153: MSTORE 00001154: PUSH1 0x02 00001156: PUSH1 0x20 00001158: MSTORE 00001159: PUSH1 0x40 0000115b: SWAP1 0000115c: KECCAK256 0000115d: PUSH1 0x01 0000115f: ADD 00001160: SLOAD 00001161: PUSH11 0x0c685fa11e01ec6f000000 0000116d: GT 0000116e: ISZERO 0000116f: PUSH2 0x11b5 00001172: JUMPI 00001173: PUSH1 0x00 00001175: DUP4 00001176: DUP2 00001177: MSTORE 00001178: PUSH1 0x02 0000117a: PUSH1 0x20 0000117c: MSTORE 0000117d: PUSH1 0x40 0000117f: SWAP1 00001180: KECCAK256 00001181: PUSH1 0x01 00001183: ADD 00001184: SLOAD 00001185: PUSH2 0x11ae 00001188: SWAP1 00001189: PUSH8 0x8ac7230489e80000 00001192: SWAP1 00001193: PUSH2 0x11a2 00001196: SWAP1 00001197: DUP3 00001198: PUSH4 0xffffffff 0000119d: PUSH2 0x2537 000011a0: AND 000011a1: JUMP 000011a2: JUMPDEST 000011a3: SWAP1 000011a4: PUSH4 0xffffffff 000011a9: PUSH2 0x25d7 000011ac: AND 000011ad: JUMP 000011ae: JUMPDEST 000011af: SWAP4 000011b0: POP 000011b1: PUSH2 0x12d8 000011b4: JUMP 000011b5: JUMPDEST 000011b6: PUSH1 0x00 000011b8: DUP4 000011b9: DUP2 000011ba: MSTORE 000011bb: PUSH1 0x02 000011bd: PUSH1 0x20 000011bf: MSTORE 000011c0: PUSH1 0x40 000011c2: SWAP1 000011c3: KECCAK256 000011c4: PUSH1 0x01 000011c6: ADD 000011c7: SLOAD 000011c8: PUSH11 0x0c685fa11e01ec6f000000 000011d4: GT 000011d5: DUP1 000011d6: ISZERO 000011d7: SWAP1 000011d8: PUSH2 0x11f1 000011db: JUMPI 000011dc: POP 000011dd: PUSH1 0x00 000011df: DUP4 000011e0: DUP2 000011e1: MSTORE 000011e2: PUSH1 0x02 000011e4: PUSH1 0x20 000011e6: MSTORE 000011e7: PUSH1 0x40 000011e9: SWAP1 000011ea: KECCAK256 000011eb: PUSH1 0x04 000011ed: ADD 000011ee: SLOAD 000011ef: ISZERO 000011f0: ISZERO 000011f1: JUMPDEST 000011f2: DUP1 000011f3: ISZERO 000011f4: PUSH2 0x1216 000011f7: JUMPI 000011f8: POP 000011f9: PUSH1 0x00 000011fb: DUP4 000011fc: DUP2 000011fd: MSTORE 000011fe: PUSH1 0x02 00001200: PUSH1 0x20 00001202: MSTORE 00001203: PUSH1 0x40 00001205: SWAP1 00001206: KECCAK256 00001207: PUSH1 0x06 00001209: ADD 0000120a: SLOAD 0000120b: PUSH1 0x01 0000120d: PUSH1 0xa0 0000120f: PUSH1 0x02 00001211: EXP 00001212: SUB 00001213: AND 00001214: ISZERO 00001215: ISZERO 00001216: JUMPDEST 00001217: DUP1 00001218: ISZERO 00001219: PUSH2 0x1232 0000121c: JUMPI 0000121d: POP 0000121e: PUSH1 0x00 00001220: DUP4 00001221: DUP2 00001222: MSTORE 00001223: PUSH1 0x02 00001225: PUSH1 0x20 00001227: MSTORE 00001228: PUSH1 0x40 0000122a: SWAP1 0000122b: KECCAK256 0000122c: PUSH1 0x04 0000122e: ADD 0000122f: SLOAD 00001230: DUP3 00001231: LT 00001232: JUMPDEST 00001233: ISZERO 00001234: PUSH2 0x1246 00001237: JUMPI 00001238: PUSH7 0xb1a2bc2ec50000 00001240: SWAP4 00001241: POP 00001242: PUSH2 0x12d8 00001245: JUMP 00001246: JUMPDEST 00001247: PUSH1 0x00 00001249: DUP4 0000124a: DUP2 0000124b: MSTORE 0000124c: PUSH1 0x02 0000124e: PUSH1 0x20 00001250: MSTORE 00001251: PUSH1 0x40 00001253: SWAP1 00001254: KECCAK256 00001255: PUSH1 0x01 00001257: ADD 00001258: SLOAD 00001259: PUSH11 0x0c685fa11e01ec6f000000 00001265: GT 00001266: DUP1 00001267: ISZERO 00001268: SWAP1 00001269: PUSH2 0x1282 0000126c: JUMPI 0000126d: POP 0000126e: PUSH1 0x00 00001270: DUP4 00001271: DUP2 00001272: MSTORE 00001273: PUSH1 0x02 00001275: PUSH1 0x20 00001277: MSTORE 00001278: PUSH1 0x40 0000127a: SWAP1 0000127b: KECCAK256 0000127c: PUSH1 0x04 0000127e: ADD 0000127f: SLOAD 00001280: DUP3 00001281: GT 00001282: JUMPDEST 00001283: ISZERO 00001284: PUSH2 0x12d3 00001287: JUMPI 00001288: PUSH2 0x12c9 0000128b: PUSH7 0xb1a2bc2ec50000 00001293: PUSH2 0x09c6 00001296: PUSH7 0xb1a2bc2ec50000 0000129e: PUSH2 0x2a30 000012a1: PUSH2 0x0c93 000012a4: PUSH1 0x02 000012a6: PUSH1 0x00 000012a8: DUP11 000012a9: DUP2 000012aa: MSTORE 000012ab: PUSH1 0x20 000012ad: ADD 000012ae: SWAP1 000012af: DUP2 000012b0: MSTORE 000012b1: PUSH1 0x20 000012b3: ADD 000012b4: PUSH1 0x00 000012b6: KECCAK256 000012b7: PUSH1 0x04 000012b9: ADD 000012ba: SLOAD 000012bb: DUP9 000012bc: PUSH2 0x24d7 000012bf: SWAP1 000012c0: SWAP2 000012c1: SWAP1 000012c2: PUSH4 0xffffffff 000012c7: AND 000012c8: JUMP 000012c9: JUMPDEST 000012ca: SWAP1 000012cb: POP 000012cc: DUP1 000012cd: SWAP4 000012ce: POP 000012cf: PUSH2 0x12d8 000012d2: JUMP 000012d3: JUMPDEST 000012d4: PUSH1 0x00 000012d6: SWAP4 000012d7: POP 000012d8: JUMPDEST 000012d9: POP 000012da: POP 000012db: POP 000012dc: SWAP1 000012dd: JUMP 000012de: JUMPDEST 000012df: PUSH1 0x00 000012e1: SLOAD 000012e2: DUP2 000012e3: JUMP 000012e4: JUMPDEST 000012e5: PUSH1 0x01 000012e7: SLOAD 000012e8: DUP2 000012e9: JUMP 000012ea: JUMPDEST 000012eb: PUSH1 0x06 000012ed: SLOAD 000012ee: DUP2 000012ef: JUMP 000012f0: JUMPDEST 000012f1: PUSH1 0x04 000012f3: SLOAD 000012f4: PUSH1 0x01 000012f6: PUSH1 0xa0 000012f8: PUSH1 0x02 000012fa: EXP 000012fb: SUB 000012fc: AND 000012fd: CALLER 000012fe: EQ 000012ff: PUSH2 0x1352 00001302: JUMPI 00001303: PUSH1 0x40 00001305: DUP1 00001306: MLOAD 00001307: PUSH1 0xe5 00001309: PUSH1 0x02 0000130b: EXP 0000130c: PUSH3 0x461bcd 00001310: MUL 00001311: DUP2 00001312: MSTORE 00001313: PUSH1 0x20 00001315: PUSH1 0x04 00001317: DUP3 00001318: ADD 00001319: MSTORE 0000131a: PUSH1 0x14 0000131c: PUSH1 0x24 0000131e: DUP3 0000131f: ADD 00001320: MSTORE 00001321: PUSH32 0x6f6e6c79206f776e65722063616e20646f206974000000000000000000000000 00001342: PUSH1 0x44 00001344: DUP3 00001345: ADD 00001346: MSTORE 00001347: SWAP1 00001348: MLOAD 00001349: SWAP1 0000134a: DUP2 0000134b: SWAP1 0000134c: SUB 0000134d: PUSH1 0x64 0000134f: ADD 00001350: SWAP1 00001351: REVERT 00001352: JUMPDEST 00001353: PUSH1 0x05 00001355: DUP1 00001356: SLOAD 00001357: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000136c: NOT 0000136d: AND 0000136e: PUSH1 0x01 00001370: PUSH1 0xa0 00001372: PUSH1 0x02 00001374: EXP 00001375: SUB 00001376: SWAP3 00001377: SWAP1 00001378: SWAP3 00001379: AND 0000137a: SWAP2 0000137b: SWAP1 0000137c: SWAP2 0000137d: OR 0000137e: SWAP1 0000137f: SSTORE 00001380: JUMP 00001381: JUMPDEST 00001382: PUSH1 0x00 00001384: DUP1 00001385: CALLER 00001386: DUP1 00001387: EXTCODESIZE 00001388: DUP1 00001389: ISZERO 0000138a: PUSH2 0x13cb 0000138d: JUMPI 0000138e: PUSH1 0x40 00001390: DUP1 00001391: MLOAD 00001392: PUSH1 0xe5 00001394: PUSH1 0x02 00001396: EXP 00001397: PUSH3 0x461bcd 0000139b: MUL 0000139c: DUP2 0000139d: MSTORE 0000139e: PUSH1 0x20 000013a0: PUSH1 0x04 000013a2: DUP3 000013a3: ADD 000013a4: MSTORE 000013a5: PUSH1 0x11 000013a7: PUSH1 0x24 000013a9: DUP3 000013aa: ADD 000013ab: MSTORE 000013ac: PUSH1 0x00 000013ae: DUP1 000013af: MLOAD 000013b0: PUSH1 0x20 000013b2: PUSH2 0x2806 000013b5: DUP4 000013b6: CODECOPY 000013b7: DUP2 000013b8: MLOAD 000013b9: SWAP2 000013ba: MSTORE 000013bb: PUSH1 0x44 000013bd: DUP3 000013be: ADD 000013bf: MSTORE 000013c0: SWAP1 000013c1: MLOAD 000013c2: SWAP1 000013c3: DUP2 000013c4: SWAP1 000013c5: SUB 000013c6: PUSH1 0x64 000013c8: ADD 000013c9: SWAP1 000013ca: REVERT 000013cb: JUMPDEST 000013cc: PUSH1 0x07 000013ce: SLOAD 000013cf: PUSH1 0xff 000013d1: AND 000013d2: ISZERO 000013d3: ISZERO 000013d4: PUSH1 0x01 000013d6: EQ 000013d7: PUSH2 0x1418 000013da: JUMPI 000013db: PUSH1 0x40 000013dd: DUP1 000013de: MLOAD 000013df: PUSH1 0xe5 000013e1: PUSH1 0x02 000013e3: EXP 000013e4: PUSH3 0x461bcd 000013e8: MUL 000013e9: DUP2 000013ea: MSTORE 000013eb: PUSH1 0x20 000013ed: PUSH1 0x04 000013ef: DUP3 000013f0: ADD 000013f1: MSTORE 000013f2: PUSH1 0x1c 000013f4: PUSH1 0x24 000013f6: DUP3 000013f7: ADD 000013f8: MSTORE 000013f9: PUSH1 0x00 000013fb: DUP1 000013fc: MLOAD 000013fd: PUSH1 0x20 000013ff: PUSH2 0x27e6 00001402: DUP4 00001403: CODECOPY 00001404: DUP2 00001405: MLOAD 00001406: SWAP2 00001407: MSTORE 00001408: PUSH1 0x44 0000140a: DUP3 0000140b: ADD 0000140c: MSTORE 0000140d: SWAP1 0000140e: MLOAD 0000140f: SWAP1 00001410: DUP2 00001411: SWAP1 00001412: SUB 00001413: PUSH1 0x64 00001415: ADD 00001416: SWAP1 00001417: REVERT 00001418: JUMPDEST 00001419: PUSH1 0x05 0000141b: SLOAD 0000141c: PUSH1 0x01 0000141e: PUSH1 0xa0 00001420: PUSH1 0x02 00001422: EXP 00001423: SUB 00001424: AND 00001425: ISZERO 00001426: ISZERO 00001427: PUSH2 0x14a0 0000142a: JUMPI 0000142b: PUSH1 0x40 0000142d: DUP1 0000142e: MLOAD 0000142f: PUSH1 0xe5 00001431: PUSH1 0x02 00001433: EXP 00001434: PUSH3 0x461bcd 00001438: MUL 00001439: DUP2 0000143a: MSTORE 0000143b: PUSH1 0x20 0000143d: PUSH1 0x04 0000143f: DUP3 00001440: ADD 00001441: MSTORE 00001442: PUSH1 0x2e 00001444: PUSH1 0x24 00001446: DUP3 00001447: ADD 00001448: MSTORE 00001449: PUSH32 0x546865207265636569766572206164647265737320686173206e6f7420626565 0000146a: PUSH1 0x44 0000146c: DUP3 0000146d: ADD 0000146e: MSTORE 0000146f: PUSH32 0x6e20696e697469616c697a65642e000000000000000000000000000000000000 00001490: PUSH1 0x64 00001492: DUP3 00001493: ADD 00001494: MSTORE 00001495: SWAP1 00001496: MLOAD 00001497: SWAP1 00001498: DUP2 00001499: SWAP1 0000149a: SUB 0000149b: PUSH1 0x84 0000149d: ADD 0000149e: SWAP1 0000149f: REVERT 000014a0: JUMPDEST 000014a1: PUSH1 0x01 000014a3: SLOAD 000014a4: PUSH1 0x64 000014a6: SWAP1 000014a7: PUSH2 0x14b7 000014aa: SWAP1 000014ab: PUSH1 0x05 000014ad: PUSH4 0xffffffff 000014b2: PUSH2 0x245a 000014b5: AND 000014b6: JUMP 000014b7: JUMPDEST 000014b8: DUP2 000014b9: ISZERO 000014ba: ISZERO 000014bb: PUSH2 0x14c0 000014be: JUMPI 000014bf: INVALID 000014c0: JUMPDEST 000014c1: DIV 000014c2: SWAP4 000014c3: POP 000014c4: PUSH1 0x06 000014c6: SLOAD 000014c7: SWAP3 000014c8: POP 000014c9: DUP3 000014ca: DUP5 000014cb: GT 000014cc: ISZERO 000014cd: ISZERO 000014ce: PUSH2 0x1521 000014d1: JUMPI 000014d2: PUSH1 0x40 000014d4: DUP1 000014d5: MLOAD 000014d6: PUSH1 0xe5 000014d8: PUSH1 0x02 000014da: EXP 000014db: PUSH3 0x461bcd 000014df: MUL 000014e0: DUP2 000014e1: MSTORE 000014e2: PUSH1 0x20 000014e4: PUSH1 0x04 000014e6: DUP3 000014e7: ADD 000014e8: MSTORE 000014e9: PUSH1 0x13 000014eb: PUSH1 0x24 000014ed: DUP3 000014ee: ADD 000014ef: MSTORE 000014f0: PUSH32 0x4e6f206e65656420746f20776974686472617700000000000000000000000000 00001511: PUSH1 0x44 00001513: DUP3 00001514: ADD 00001515: MSTORE 00001516: SWAP1 00001517: MLOAD 00001518: SWAP1 00001519: DUP2 0000151a: SWAP1 0000151b: SUB 0000151c: PUSH1 0x64 0000151e: ADD 0000151f: SWAP1 00001520: REVERT 00001521: JUMPDEST 00001522: PUSH1 0x06 00001524: DUP5 00001525: SWAP1 00001526: SSTORE 00001527: PUSH1 0x05 00001529: SLOAD 0000152a: PUSH1 0x01 0000152c: PUSH1 0xa0 0000152e: PUSH1 0x02 00001530: EXP 00001531: SUB 00001532: AND 00001533: PUSH2 0x08fc 00001536: PUSH2 0x1545 00001539: DUP7 0000153a: DUP7 0000153b: PUSH4 0xffffffff 00001540: PUSH2 0x24d7 00001543: AND 00001544: JUMP 00001545: JUMPDEST 00001546: PUSH1 0x40 00001548: MLOAD 00001549: DUP2 0000154a: ISZERO 0000154b: SWAP1 0000154c: SWAP3 0000154d: MUL 0000154e: SWAP2 0000154f: PUSH1 0x00 00001551: DUP2 00001552: DUP2 00001553: DUP2 00001554: DUP6 00001555: DUP9 00001556: DUP9 00001557: CALL 00001558: SWAP4 00001559: POP 0000155a: POP 0000155b: POP 0000155c: POP 0000155d: ISZERO 0000155e: DUP1 0000155f: ISZERO 00001560: PUSH2 0x156d 00001563: JUMPI 00001564: RETURNDATASIZE 00001565: PUSH1 0x00 00001567: DUP1 00001568: RETURNDATACOPY 00001569: RETURNDATASIZE 0000156a: PUSH1 0x00 0000156c: REVERT 0000156d: JUMPDEST 0000156e: POP 0000156f: POP 00001570: POP 00001571: POP 00001572: POP 00001573: JUMP 00001574: JUMPDEST 00001575: PUSH1 0x00 00001577: PUSH2 0x157e 0000157a: PUSH2 0x274d 0000157d: JUMP 0000157e: JUMPDEST 0000157f: PUSH2 0x1586 00001582: PUSH2 0x2768 00001585: JUMP 00001586: JUMPDEST 00001587: PUSH2 0x158e 0000158a: PUSH2 0x274d 0000158d: JUMP 0000158e: JUMPDEST 0000158f: PUSH2 0x1596 00001592: PUSH2 0x2787 00001595: JUMP 00001596: JUMPDEST 00001597: PUSH2 0x159e 0000159a: PUSH2 0x27a6 0000159d: JUMP 0000159e: JUMPDEST 0000159f: PUSH2 0x15a6 000015a2: PUSH2 0x27c6 000015a5: JUMP 000015a6: JUMPDEST 000015a7: PUSH1 0x00 000015a9: DUP1 000015aa: SLOAD 000015ab: DUP1 000015ac: DUP3 000015ad: MSTORE 000015ae: PUSH1 0x02 000015b0: PUSH1 0x20 000015b2: MSTORE 000015b3: PUSH1 0x40 000015b5: DUP3 000015b6: KECCAK256 000015b7: SLOAD 000015b8: SWAP1 000015b9: SWAP2 000015ba: SWAP1 000015bb: PUSH2 0x1608 000015be: SWAP1 000015bf: PUSH1 0x64 000015c1: SWAP1 000015c2: PUSH2 0x15d2 000015c5: SWAP1 000015c6: PUSH1 0x1e 000015c8: PUSH4 0xffffffff 000015cd: PUSH2 0x245a 000015d0: AND 000015d1: JUMP 000015d2: JUMPDEST 000015d3: DUP2 000015d4: ISZERO 000015d5: ISZERO 000015d6: PUSH2 0x15db 000015d9: JUMPI 000015da: INVALID 000015db: JUMPDEST 000015dc: PUSH1 0x00 000015de: DUP6 000015df: DUP2 000015e0: MSTORE 000015e1: PUSH1 0x02 000015e3: PUSH1 0x20 000015e5: MSTORE 000015e6: PUSH1 0x40 000015e8: SWAP1 000015e9: KECCAK256 000015ea: PUSH1 0x1a 000015ec: DUP2 000015ed: ADD 000015ee: SLOAD 000015ef: PUSH1 0x19 000015f1: SWAP1 000015f2: SWAP2 000015f3: ADD 000015f4: SLOAD 000015f5: SWAP3 000015f6: SWAP1 000015f7: SWAP2 000015f8: DIV 000015f9: SWAP2 000015fa: PUSH2 0x09c6 000015fd: SWAP2 000015fe: PUSH4 0xffffffff 00001603: PUSH2 0x2537 00001606: AND 00001607: JUMP 00001608: JUMPDEST 00001609: PUSH1 0x40 0000160b: DUP1 0000160c: MLOAD 0000160d: DUP1 0000160e: DUP3 0000160f: ADD 00001610: DUP3 00001611: MSTORE 00001612: PUSH1 0x00 00001614: DUP6 00001615: DUP2 00001616: MSTORE 00001617: PUSH1 0x02 00001619: PUSH1 0x20 0000161b: DUP2 0000161c: DUP2 0000161d: MSTORE 0000161e: DUP5 0000161f: DUP4 00001620: KECCAK256 00001621: DUP1 00001622: SLOAD 00001623: DUP6 00001624: MSTORE 00001625: PUSH1 0x01 00001627: DUP2 00001628: ADD 00001629: SLOAD 0000162a: DUP3 0000162b: DUP7 0000162c: ADD 0000162d: MSTORE 0000162e: DUP6 0000162f: MLOAD 00001630: PUSH1 0x60 00001632: DUP2 00001633: ADD 00001634: DUP8 00001635: MSTORE 00001636: DUP2 00001637: DUP5 00001638: ADD 00001639: SLOAD 0000163a: DUP2 0000163b: MSTORE 0000163c: PUSH1 0x03 0000163e: DUP3 0000163f: ADD 00001640: SLOAD 00001641: DUP2 00001642: DUP5 00001643: ADD 00001644: MSTORE 00001645: PUSH1 0x04 00001647: DUP3 00001648: ADD 00001649: SLOAD 0000164a: DUP2 0000164b: DUP9 0000164c: ADD 0000164d: MSTORE 0000164e: DUP7 0000164f: MLOAD 00001650: DUP1 00001651: DUP9 00001652: ADD 00001653: DUP9 00001654: MSTORE 00001655: PUSH1 0x05 00001657: DUP4 00001658: ADD 00001659: SLOAD 0000165a: PUSH1 0x01 0000165c: PUSH1 0xa0 0000165e: PUSH1 0x02 00001660: EXP 00001661: SUB 00001662: SWAP1 00001663: DUP2 00001664: AND 00001665: DUP3 00001666: MSTORE 00001667: SWAP6 00001668: DUP12 00001669: SWAP1 0000166a: MSTORE 0000166b: SWAP4 0000166c: DUP4 0000166d: MSTORE 0000166e: PUSH1 0x06 00001670: SWAP1 00001671: SWAP2 00001672: ADD 00001673: SLOAD 00001674: SWAP1 00001675: SWAP4 00001676: AND 00001677: SWAP1 00001678: DUP3 00001679: ADD 0000167a: MSTORE 0000167b: DUP4 0000167c: MLOAD 0000167d: PUSH1 0xc0 0000167f: DUP2 00001680: ADD 00001681: SWAP1 00001682: SWAP5 00001683: MSTORE 00001684: SWAP4 00001685: SWAP5 00001686: POP 00001687: DUP6 00001688: SWAP4 00001689: SWAP2 0000168a: SWAP3 0000168b: SWAP1 0000168c: SWAP2 0000168d: SWAP1 0000168e: DUP1 0000168f: PUSH2 0x1696 00001692: PUSH2 0x1120 00001695: JUMP 00001696: JUMPDEST 00001697: DUP2 00001698: MSTORE 00001699: PUSH1 0x00 0000169b: DUP9 0000169c: DUP2 0000169d: MSTORE 0000169e: PUSH1 0x02 000016a0: PUSH1 0x20 000016a2: DUP2 000016a3: DUP2 000016a4: MSTORE 000016a5: PUSH1 0x40 000016a7: DUP1 000016a8: DUP5 000016a9: KECCAK256 000016aa: PUSH1 0x19 000016ac: DUP2 000016ad: ADD 000016ae: SLOAD 000016af: DUP4 000016b0: DUP8 000016b1: ADD 000016b2: MSTORE 000016b3: DUP2 000016b4: DUP7 000016b5: ADD 000016b6: DUP13 000016b7: SWAP1 000016b8: MSTORE 000016b9: PUSH1 0x18 000016bb: DUP2 000016bc: ADD 000016bd: SLOAD 000016be: PUSH1 0x60 000016c0: DUP8 000016c1: ADD 000016c2: MSTORE 000016c3: PUSH1 0x17 000016c5: DUP2 000016c6: ADD 000016c7: SLOAD 000016c8: PUSH1 0x0b 000016ca: SWAP1 000016cb: DUP2 000016cc: SWAP1 000016cd: MOD 000016ce: PUSH1 0x80 000016d0: DUP9 000016d1: ADD 000016d2: MSTORE 000016d3: PUSH1 0x1a 000016d5: DUP3 000016d6: ADD 000016d7: SLOAD 000016d8: PUSH1 0xa0 000016da: SWAP1 000016db: SWAP8 000016dc: ADD 000016dd: SWAP7 000016de: SWAP1 000016df: SWAP7 000016e0: MSTORE 000016e1: SWAP4 000016e2: DUP13 000016e3: SWAP1 000016e4: MSTORE 000016e5: SWAP2 000016e6: SWAP1 000016e7: MSTORE 000016e8: DUP1 000016e9: MLOAD 000016ea: PUSH2 0x0160 000016ed: DUP2 000016ee: ADD 000016ef: SWAP2 000016f0: DUP3 000016f1: SWAP1 000016f2: MSTORE 000016f3: PUSH1 0x07 000016f5: DUP4 000016f6: ADD 000016f7: SWAP4 000016f8: PUSH1 0x12 000016fa: SWAP1 000016fb: SWAP4 000016fc: ADD 000016fd: SWAP3 000016fe: SWAP1 000016ff: SWAP2 00001700: DUP5 00001701: SWAP2 00001702: SWAP1 00001703: DUP3 00001704: DUP5 00001705: JUMPDEST 00001706: DUP2 00001707: SLOAD 00001708: PUSH1 0x01 0000170a: PUSH1 0xa0 0000170c: PUSH1 0x02 0000170e: EXP 0000170f: SUB 00001710: AND 00001711: DUP2 00001712: MSTORE 00001713: PUSH1 0x01 00001715: SWAP1 00001716: SWAP2 00001717: ADD 00001718: SWAP1 00001719: PUSH1 0x20 0000171b: ADD 0000171c: DUP1 0000171d: DUP4 0000171e: GT 0000171f: PUSH2 0x1705 00001722: JUMPI 00001723: POP 00001724: POP 00001725: PUSH1 0x40 00001727: DUP1 00001728: MLOAD 00001729: PUSH1 0x80 0000172b: DUP2 0000172c: ADD 0000172d: SWAP2 0000172e: DUP3 0000172f: SWAP1 00001730: MSTORE 00001731: SWAP5 00001732: SWAP7 00001733: POP 00001734: DUP6 00001735: SWAP4 00001736: POP 00001737: PUSH1 0x04 00001739: SWAP3 0000173a: POP 0000173b: SWAP1 0000173c: POP 0000173d: DUP3 0000173e: DUP5 0000173f: JUMPDEST 00001740: DUP2 00001741: SLOAD 00001742: PUSH1 0x01 00001744: PUSH1 0xa0 00001746: PUSH1 0x02 00001748: EXP 00001749: SUB 0000174a: AND 0000174b: DUP2 0000174c: MSTORE 0000174d: PUSH1 0x01 0000174f: SWAP1 00001750: SWAP2 00001751: ADD 00001752: SWAP1 00001753: PUSH1 0x20 00001755: ADD 00001756: DUP1 00001757: DUP4 00001758: GT 00001759: PUSH2 0x173f 0000175c: JUMPI 0000175d: POP 0000175e: POP 0000175f: POP 00001760: POP 00001761: POP 00001762: SWAP1 00001763: POP 00001764: SWAP9 00001765: POP 00001766: SWAP9 00001767: POP 00001768: SWAP9 00001769: POP 0000176a: SWAP9 0000176b: POP 0000176c: SWAP9 0000176d: POP 0000176e: SWAP9 0000176f: POP 00001770: SWAP9 00001771: POP 00001772: POP 00001773: POP 00001774: SWAP1 00001775: SWAP2 00001776: SWAP3 00001777: SWAP4 00001778: SWAP5 00001779: SWAP6 0000177a: SWAP7 0000177b: JUMP 0000177c: JUMPDEST 0000177d: PUSH1 0x02 0000177f: PUSH1 0x20 00001781: DUP2 00001782: SWAP1 00001783: MSTORE 00001784: PUSH1 0x00 00001786: SWAP2 00001787: DUP3 00001788: MSTORE 00001789: PUSH1 0x40 0000178b: SWAP1 0000178c: SWAP2 0000178d: KECCAK256 0000178e: DUP1 0000178f: SLOAD 00001790: PUSH1 0x01 00001792: DUP3 00001793: ADD 00001794: SLOAD 00001795: SWAP3 00001796: DUP3 00001797: ADD 00001798: SLOAD 00001799: PUSH1 0x03 0000179b: DUP4 0000179c: ADD 0000179d: SLOAD 0000179e: PUSH1 0x04 000017a0: DUP5 000017a1: ADD 000017a2: SLOAD 000017a3: PUSH1 0x05 000017a5: DUP6 000017a6: ADD 000017a7: SLOAD 000017a8: PUSH1 0x06 000017aa: DUP7 000017ab: ADD 000017ac: SLOAD 000017ad: PUSH1 0x17 000017af: DUP8 000017b0: ADD 000017b1: SLOAD 000017b2: PUSH1 0x18 000017b4: DUP9 000017b5: ADD 000017b6: SLOAD 000017b7: PUSH1 0x19 000017b9: DUP10 000017ba: ADD 000017bb: SLOAD 000017bc: PUSH1 0x1a 000017be: SWAP1 000017bf: SWAP10 000017c0: ADD 000017c1: SLOAD 000017c2: SWAP8 000017c3: SWAP10 000017c4: SWAP9 000017c5: SWAP7 000017c6: SWAP8 000017c7: SWAP6 000017c8: SWAP7 000017c9: SWAP5 000017ca: SWAP6 000017cb: PUSH1 0x01 000017cd: PUSH1 0xa0 000017cf: PUSH1 0x02 000017d1: EXP 000017d2: SUB 000017d3: SWAP5 000017d4: DUP6 000017d5: AND 000017d6: SWAP6 000017d7: SWAP4 000017d8: SWAP1 000017d9: SWAP5 000017da: AND 000017db: SWAP4 000017dc: SWAP2 000017dd: SWAP3 000017de: SWAP1 000017df: SWAP2 000017e0: DUP12 000017e1: JUMP 000017e2: JUMPDEST 000017e3: PUSH1 0x00 000017e5: DUP1 000017e6: DUP1 000017e7: DUP1 000017e8: DUP1 000017e9: DUP1 000017ea: DUP1 000017eb: CALLER 000017ec: DUP1 000017ed: EXTCODESIZE 000017ee: DUP1 000017ef: ISZERO 000017f0: PUSH2 0x1831 000017f3: JUMPI 000017f4: PUSH1 0x40 000017f6: DUP1 000017f7: MLOAD 000017f8: PUSH1 0xe5 000017fa: PUSH1 0x02 000017fc: EXP 000017fd: PUSH3 0x461bcd 00001801: MUL 00001802: DUP2 00001803: MSTORE 00001804: PUSH1 0x20 00001806: PUSH1 0x04 00001808: DUP3 00001809: ADD 0000180a: MSTORE 0000180b: PUSH1 0x11 0000180d: PUSH1 0x24 0000180f: DUP3 00001810: ADD 00001811: MSTORE 00001812: PUSH1 0x00 00001814: DUP1 00001815: MLOAD 00001816: PUSH1 0x20 00001818: PUSH2 0x2806 0000181b: DUP4 0000181c: CODECOPY 0000181d: DUP2 0000181e: MLOAD 0000181f: SWAP2 00001820: MSTORE 00001821: PUSH1 0x44 00001823: DUP3 00001824: ADD 00001825: MSTORE 00001826: SWAP1 00001827: MLOAD 00001828: SWAP1 00001829: DUP2 0000182a: SWAP1 0000182b: SUB 0000182c: PUSH1 0x64 0000182e: ADD 0000182f: SWAP1 00001830: REVERT 00001831: JUMPDEST 00001832: PUSH1 0x07 00001834: SLOAD 00001835: PUSH1 0xff 00001837: AND 00001838: ISZERO 00001839: ISZERO 0000183a: PUSH1 0x01 0000183c: EQ 0000183d: PUSH2 0x187e 00001840: JUMPI 00001841: PUSH1 0x40 00001843: DUP1 00001844: MLOAD 00001845: PUSH1 0xe5 00001847: PUSH1 0x02 00001849: EXP 0000184a: PUSH3 0x461bcd 0000184e: MUL 0000184f: DUP2 00001850: MSTORE 00001851: PUSH1 0x20 00001853: PUSH1 0x04 00001855: DUP3 00001856: ADD 00001857: MSTORE 00001858: PUSH1 0x1c 0000185a: PUSH1 0x24 0000185c: DUP3 0000185d: ADD 0000185e: MSTORE 0000185f: PUSH1 0x00 00001861: DUP1 00001862: MLOAD 00001863: PUSH1 0x20 00001865: PUSH2 0x27e6 00001868: DUP4 00001869: CODECOPY 0000186a: DUP2 0000186b: MLOAD 0000186c: SWAP2 0000186d: MSTORE 0000186e: PUSH1 0x44 00001870: DUP3 00001871: ADD 00001872: MSTORE 00001873: SWAP1 00001874: MLOAD 00001875: SWAP1 00001876: DUP2 00001877: SWAP1 00001878: SUB 00001879: PUSH1 0x64 0000187b: ADD 0000187c: SWAP1 0000187d: REVERT 0000187e: JUMPDEST 0000187f: PUSH1 0x00 00001881: SLOAD 00001882: DUP11 00001883: GT 00001884: ISZERO 00001885: PUSH2 0x18d8 00001888: JUMPI 00001889: PUSH1 0x40 0000188b: DUP1 0000188c: MLOAD 0000188d: PUSH1 0xe5 0000188f: PUSH1 0x02 00001891: EXP 00001892: PUSH3 0x461bcd 00001896: MUL 00001897: DUP2 00001898: MSTORE 00001899: PUSH1 0x20 0000189b: PUSH1 0x04 0000189d: DUP3 0000189e: ADD 0000189f: MSTORE 000018a0: PUSH1 0x17 000018a2: PUSH1 0x24 000018a4: DUP3 000018a5: ADD 000018a6: MSTORE 000018a7: PUSH32 0x596f752772652072756e6e696e6720746f6f2066617374000000000000000000 000018c8: PUSH1 0x44 000018ca: DUP3 000018cb: ADD 000018cc: MSTORE 000018cd: SWAP1 000018ce: MLOAD 000018cf: SWAP1 000018d0: DUP2 000018d1: SWAP1 000018d2: SUB 000018d3: PUSH1 0x64 000018d5: ADD 000018d6: SWAP1 000018d7: REVERT 000018d8: JUMPDEST 000018d9: PUSH1 0x00 000018db: DUP11 000018dc: DUP2 000018dd: MSTORE 000018de: PUSH1 0x02 000018e0: PUSH1 0x20 000018e2: MSTORE 000018e3: PUSH1 0x40 000018e5: DUP2 000018e6: KECCAK256 000018e7: SLOAD 000018e8: SWAP1 000018e9: SWAP10 000018ea: POP 000018eb: PUSH1 0x64 000018ed: SWAP1 000018ee: PUSH2 0x18fe 000018f1: SWAP1 000018f2: PUSH1 0x1e 000018f4: PUSH4 0xffffffff 000018f9: PUSH2 0x245a 000018fc: AND 000018fd: JUMP 000018fe: JUMPDEST 000018ff: DUP2 00001900: ISZERO 00001901: ISZERO 00001902: PUSH2 0x1907 00001905: JUMPI 00001906: INVALID 00001907: JUMPDEST 00001908: PUSH1 0x00 0000190a: DUP13 0000190b: DUP2 0000190c: MSTORE 0000190d: PUSH1 0x02 0000190f: PUSH1 0x20 00001911: MSTORE 00001912: PUSH1 0x40 00001914: SWAP1 00001915: KECCAK256 00001916: PUSH1 0x19 00001918: ADD 00001919: SLOAD 0000191a: SWAP2 0000191b: SWAP1 0000191c: DIV 0000191d: SWAP9 0000191e: POP 0000191f: PUSH2 0x192f 00001922: SWAP1 00001923: DUP10 00001924: SWAP1 00001925: PUSH4 0xffffffff 0000192a: PUSH2 0x2537 0000192d: AND 0000192e: JUMP 0000192f: JUMPDEST 00001930: PUSH1 0x00 00001932: DUP12 00001933: DUP2 00001934: MSTORE 00001935: PUSH1 0x02 00001937: PUSH1 0x20 00001939: MSTORE 0000193a: PUSH1 0x40 0000193c: SWAP1 0000193d: KECCAK256 0000193e: PUSH1 0x1a 00001940: ADD 00001941: SLOAD 00001942: SWAP1 00001943: SWAP9 00001944: POP 00001945: PUSH2 0x1955 00001948: SWAP1 00001949: DUP10 0000194a: SWAP1 0000194b: PUSH4 0xffffffff 00001950: PUSH2 0x2537 00001953: AND 00001954: JUMP 00001955: JUMPDEST 00001956: PUSH1 0x00 00001958: DUP12 00001959: DUP2 0000195a: MSTORE 0000195b: PUSH1 0x02 0000195d: PUSH1 0x20 0000195f: MSTORE 00001960: PUSH1 0x40 00001962: DUP2 00001963: KECCAK256 00001964: SLOAD 00001965: SWAP2 00001966: SWAP10 00001967: POP 00001968: SWAP8 00001969: POP 0000196a: PUSH1 0x64 0000196c: SWAP1 0000196d: PUSH2 0x197d 00001970: SWAP1 00001971: PUSH1 0x33 00001973: PUSH4 0xffffffff 00001978: PUSH2 0x245a 0000197b: AND 0000197c: JUMP 0000197d: JUMPDEST 0000197e: DUP2 0000197f: ISZERO 00001980: ISZERO 00001981: PUSH2 0x1986 00001984: JUMPI 00001985: INVALID 00001986: JUMPDEST 00001987: PUSH1 0x00 00001989: DUP13 0000198a: DUP2 0000198b: MSTORE 0000198c: PUSH1 0x02 0000198e: PUSH1 0x20 00001990: MSTORE 00001991: PUSH1 0x40 00001993: SWAP1 00001994: KECCAK256 00001995: PUSH1 0x1a 00001997: ADD 00001998: SLOAD 00001999: SWAP2 0000199a: SWAP1 0000199b: DIV 0000199c: SWAP7 0000199d: POP 0000199e: PUSH2 0x19ae 000019a1: SWAP1 000019a2: DUP8 000019a3: SWAP1 000019a4: PUSH4 0xffffffff 000019a9: PUSH2 0x24d7 000019ac: AND 000019ad: JUMP 000019ae: JUMPDEST 000019af: PUSH1 0x00 000019b1: DUP12 000019b2: DUP2 000019b3: MSTORE 000019b4: PUSH1 0x03 000019b6: PUSH1 0x20 000019b8: SWAP1 000019b9: DUP2 000019ba: MSTORE 000019bb: PUSH1 0x40 000019bd: DUP1 000019be: DUP4 000019bf: KECCAK256 000019c0: CALLER 000019c1: DUP5 000019c2: MSTORE 000019c3: SWAP1 000019c4: SWAP2 000019c5: MSTORE 000019c6: SWAP1 000019c7: KECCAK256 000019c8: PUSH1 0x01 000019ca: ADD 000019cb: SLOAD 000019cc: SWAP1 000019cd: SWAP7 000019ce: POP 000019cf: PUSH2 0x19df 000019d2: SWAP1 000019d3: DUP8 000019d4: SWAP1 000019d5: PUSH4 0xffffffff 000019da: PUSH2 0x245a 000019dd: AND 000019de: JUMP 000019df: JUMPDEST 000019e0: PUSH1 0x00 000019e2: DUP12 000019e3: DUP2 000019e4: MSTORE 000019e5: PUSH1 0x02 000019e7: PUSH1 0x20 000019e9: MSTORE 000019ea: PUSH1 0x40 000019ec: SWAP1 000019ed: KECCAK256 000019ee: PUSH1 0x01 000019f0: ADD 000019f1: SLOAD 000019f2: SWAP1 000019f3: SWAP7 000019f4: POP 000019f5: DUP7 000019f6: DUP2 000019f7: ISZERO 000019f8: ISZERO 000019f9: PUSH2 0x19fe 000019fc: JUMPI 000019fd: INVALID 000019fe: JUMPDEST 000019ff: PUSH1 0x00 00001a01: DUP13 00001a02: DUP2 00001a03: MSTORE 00001a04: PUSH1 0x03 00001a06: PUSH1 0x20 00001a08: DUP2 00001a09: DUP2 00001a0a: MSTORE 00001a0b: PUSH1 0x40 00001a0d: DUP1 00001a0e: DUP5 00001a0f: KECCAK256 00001a10: CALLER 00001a11: DUP6 00001a12: MSTORE 00001a13: SWAP1 00001a14: SWAP2 00001a15: MSTORE 00001a16: SWAP1 00001a17: SWAP2 00001a18: KECCAK256 00001a19: ADD 00001a1a: SLOAD 00001a1b: SWAP2 00001a1c: SWAP1 00001a1d: DIV 00001a1e: SWAP7 00001a1f: POP 00001a20: SWAP5 00001a21: POP 00001a22: PUSH2 0x1a31 00001a25: DUP7 00001a26: DUP7 00001a27: PUSH4 0xffffffff 00001a2c: PUSH2 0x2537 00001a2f: AND 00001a30: JUMP 00001a31: JUMPDEST 00001a32: PUSH1 0x00 00001a34: DUP12 00001a35: DUP2 00001a36: MSTORE 00001a37: PUSH1 0x03 00001a39: PUSH1 0x20 00001a3b: SWAP1 00001a3c: DUP2 00001a3d: MSTORE 00001a3e: PUSH1 0x40 00001a40: DUP1 00001a41: DUP4 00001a42: KECCAK256 00001a43: CALLER 00001a44: DUP5 00001a45: MSTORE 00001a46: SWAP1 00001a47: SWAP2 00001a48: MSTORE 00001a49: SWAP1 00001a4a: KECCAK256 00001a4b: PUSH1 0x02 00001a4d: ADD 00001a4e: SLOAD 00001a4f: SWAP1 00001a50: SWAP7 00001a51: POP 00001a52: SWAP4 00001a53: POP 00001a54: DUP4 00001a55: DUP7 00001a56: GT 00001a57: ISZERO 00001a58: PUSH2 0x1a9d 00001a5b: JUMPI 00001a5c: PUSH2 0x1a7b 00001a5f: PUSH2 0x1a6e 00001a62: DUP8 00001a63: DUP7 00001a64: PUSH4 0xffffffff 00001a69: PUSH2 0x24d7 00001a6c: AND 00001a6d: JUMP 00001a6e: JUMPDEST 00001a6f: DUP11 00001a70: SWAP1 00001a71: PUSH4 0xffffffff 00001a76: PUSH2 0x2537 00001a79: AND 00001a7a: JUMP 00001a7b: JUMPDEST 00001a7c: PUSH1 0x00 00001a7e: DUP12 00001a7f: DUP2 00001a80: MSTORE 00001a81: PUSH1 0x03 00001a83: PUSH1 0x20 00001a85: SWAP1 00001a86: DUP2 00001a87: MSTORE 00001a88: PUSH1 0x40 00001a8a: DUP1 00001a8b: DUP4 00001a8c: KECCAK256 00001a8d: CALLER 00001a8e: DUP5 00001a8f: MSTORE 00001a90: SWAP1 00001a91: SWAP2 00001a92: MSTORE 00001a93: SWAP1 00001a94: KECCAK256 00001a95: PUSH1 0x02 00001a97: ADD 00001a98: DUP8 00001a99: SWAP1 00001a9a: SSTORE 00001a9b: SWAP9 00001a9c: POP 00001a9d: JUMPDEST 00001a9e: PUSH1 0x00 00001aa0: DUP11 00001aa1: DUP2 00001aa2: MSTORE 00001aa3: PUSH1 0x02 00001aa5: PUSH1 0x20 00001aa7: MSTORE 00001aa8: PUSH1 0x40 00001aaa: SWAP1 00001aab: KECCAK256 00001aac: PUSH1 0x06 00001aae: ADD 00001aaf: SLOAD 00001ab0: PUSH1 0x01 00001ab2: PUSH1 0xa0 00001ab4: PUSH1 0x02 00001ab6: EXP 00001ab7: SUB 00001ab8: AND 00001ab9: CALLER 00001aba: EQ 00001abb: DUP1 00001abc: ISZERO 00001abd: PUSH2 0x1adf 00001ac0: JUMPI 00001ac1: POP 00001ac2: PUSH1 0x00 00001ac4: DUP11 00001ac5: DUP2 00001ac6: MSTORE 00001ac7: PUSH1 0x02 00001ac9: PUSH1 0x20 00001acb: MSTORE 00001acc: PUSH1 0x40 00001ace: SWAP1 00001acf: KECCAK256 00001ad0: PUSH1 0x06 00001ad2: ADD 00001ad3: SLOAD 00001ad4: PUSH1 0x01 00001ad6: PUSH1 0xa0 00001ad8: PUSH1 0x02 00001ada: EXP 00001adb: SUB 00001adc: AND 00001add: ISZERO 00001ade: ISZERO 00001adf: JUMPDEST 00001ae0: DUP1 00001ae1: ISZERO 00001ae2: PUSH2 0x1afb 00001ae5: JUMPI 00001ae6: POP 00001ae7: PUSH1 0x00 00001ae9: DUP11 00001aea: DUP2 00001aeb: MSTORE 00001aec: PUSH1 0x02 00001aee: PUSH1 0x20 00001af0: MSTORE 00001af1: PUSH1 0x40 00001af3: SWAP1 00001af4: KECCAK256 00001af5: PUSH1 0x04 00001af7: ADD 00001af8: SLOAD 00001af9: ISZERO 00001afa: ISZERO 00001afb: JUMPDEST 00001afc: ISZERO 00001afd: PUSH2 0x1b31 00001b00: JUMPI 00001b01: PUSH2 0x1b2e 00001b04: PUSH1 0x64 00001b06: PUSH2 0x1b16 00001b09: DUP11 00001b0a: PUSH1 0x0a 00001b0c: PUSH4 0xffffffff 00001b11: PUSH2 0x245a 00001b14: AND 00001b15: JUMP 00001b16: JUMPDEST 00001b17: DUP2 00001b18: ISZERO 00001b19: ISZERO 00001b1a: PUSH2 0x1b1f 00001b1d: JUMPI 00001b1e: INVALID 00001b1f: JUMPDEST 00001b20: DUP10 00001b21: SWAP2 00001b22: SWAP1 00001b23: DIV 00001b24: PUSH4 0xffffffff 00001b29: PUSH2 0x2537 00001b2c: AND 00001b2d: JUMP 00001b2e: JUMPDEST 00001b2f: SWAP7 00001b30: POP 00001b31: JUMPDEST 00001b32: PUSH1 0x00 00001b34: DUP11 00001b35: DUP2 00001b36: MSTORE 00001b37: PUSH1 0x02 00001b39: PUSH1 0x20 00001b3b: MSTORE 00001b3c: PUSH1 0x40 00001b3e: SWAP1 00001b3f: KECCAK256 00001b40: PUSH1 0x03 00001b42: ADD 00001b43: SLOAD 00001b44: TIMESTAMP 00001b45: GT 00001b46: ISZERO 00001b47: PUSH2 0x1cf1 00001b4a: JUMPI 00001b4b: PUSH1 0x00 00001b4d: DUP11 00001b4e: DUP2 00001b4f: MSTORE 00001b50: PUSH1 0x02 00001b52: PUSH1 0x20 00001b54: MSTORE 00001b55: PUSH1 0x40 00001b57: SWAP1 00001b58: KECCAK256 00001b59: PUSH1 0x05 00001b5b: ADD 00001b5c: SLOAD 00001b5d: PUSH1 0x01 00001b5f: PUSH1 0xa0 00001b61: PUSH1 0x02 00001b63: EXP 00001b64: SUB 00001b65: AND 00001b66: CALLER 00001b67: EQ 00001b68: ISZERO 00001b69: PUSH2 0x1b85 00001b6c: JUMPI 00001b6d: PUSH2 0x1b82 00001b70: PUSH1 0x64 00001b72: PUSH2 0x1b16 00001b75: DUP11 00001b76: PUSH1 0x3c 00001b78: PUSH4 0xffffffff 00001b7d: PUSH2 0x245a 00001b80: AND 00001b81: JUMP 00001b82: JUMPDEST 00001b83: SWAP7 00001b84: POP 00001b85: JUMPDEST 00001b86: PUSH1 0x00 00001b88: SWAP3 00001b89: POP 00001b8a: JUMPDEST 00001b8b: PUSH1 0x00 00001b8d: DUP11 00001b8e: SWAP1 00001b8f: MSTORE 00001b90: PUSH1 0x02 00001b92: PUSH1 0x20 00001b94: MSTORE 00001b95: PUSH1 0x0b 00001b97: DUP4 00001b98: LT 00001b99: ISZERO 00001b9a: PUSH2 0x1cf1 00001b9d: JUMPI 00001b9e: PUSH1 0x00 00001ba0: DUP11 00001ba1: DUP2 00001ba2: MSTORE 00001ba3: PUSH1 0x02 00001ba5: PUSH1 0x20 00001ba7: MSTORE 00001ba8: PUSH1 0x40 00001baa: SWAP1 00001bab: KECCAK256 00001bac: CALLER 00001bad: SWAP1 00001bae: PUSH1 0x07 00001bb0: ADD 00001bb1: DUP5 00001bb2: PUSH1 0x0b 00001bb4: DUP2 00001bb5: LT 00001bb6: PUSH2 0x1bbb 00001bb9: JUMPI 00001bba: INVALID 00001bbb: JUMPDEST 00001bbc: ADD 00001bbd: SLOAD 00001bbe: PUSH1 0x01 00001bc0: PUSH1 0xa0 00001bc2: PUSH1 0x02 00001bc4: EXP 00001bc5: SUB 00001bc6: AND 00001bc7: EQ 00001bc8: DUP1 00001bc9: ISZERO 00001bca: PUSH2 0x1c03 00001bcd: JUMPI 00001bce: POP 00001bcf: PUSH1 0x00 00001bd1: DUP11 00001bd2: DUP2 00001bd3: MSTORE 00001bd4: PUSH1 0x02 00001bd6: PUSH1 0x20 00001bd8: MSTORE 00001bd9: PUSH1 0x40 00001bdb: SWAP1 00001bdc: KECCAK256 00001bdd: PUSH1 0x17 00001bdf: ADD 00001be0: SLOAD 00001be1: DUP4 00001be2: SWAP1 00001be3: PUSH1 0x0b 00001be5: SWAP1 00001be6: PUSH2 0x1bf6 00001be9: SWAP1 00001bea: PUSH1 0x01 00001bec: PUSH4 0xffffffff 00001bf1: PUSH2 0x24d7 00001bf4: AND 00001bf5: JUMP 00001bf6: JUMPDEST 00001bf7: DUP2 00001bf8: ISZERO 00001bf9: ISZERO 00001bfa: PUSH2 0x1bff 00001bfd: JUMPI 00001bfe: INVALID 00001bff: JUMPDEST 00001c00: MOD 00001c01: EQ 00001c02: ISZERO 00001c03: JUMPDEST 00001c04: ISZERO 00001c05: PUSH2 0x1cd9 00001c08: JUMPI 00001c09: PUSH1 0x00 00001c0b: DUP11 00001c0c: DUP2 00001c0d: MSTORE 00001c0e: PUSH1 0x02 00001c10: PUSH1 0x20 00001c12: MSTORE 00001c13: PUSH1 0x40 00001c15: SWAP1 00001c16: KECCAK256 00001c17: PUSH1 0x16 00001c19: ADD 00001c1a: DUP4 00001c1b: PUSH1 0x0b 00001c1d: DUP2 00001c1e: LT 00001c1f: PUSH2 0x1c24 00001c22: JUMPI 00001c23: INVALID 00001c24: JUMPDEST 00001c25: PUSH1 0x20 00001c27: DUP2 00001c28: DIV 00001c29: SWAP1 00001c2a: SWAP2 00001c2b: ADD 00001c2c: SLOAD 00001c2d: PUSH1 0xff 00001c2f: PUSH1 0x1f 00001c31: SWAP1 00001c32: SWAP3 00001c33: AND 00001c34: PUSH2 0x0100 00001c37: EXP 00001c38: SWAP1 00001c39: DIV 00001c3a: AND 00001c3b: ISZERO 00001c3c: PUSH2 0x1c44 00001c3f: JUMPI 00001c40: PUSH2 0x1cd9 00001c43: JUMP 00001c44: JUMPDEST 00001c45: PUSH1 0x00 00001c47: DUP11 00001c48: DUP2 00001c49: MSTORE 00001c4a: PUSH1 0x02 00001c4c: PUSH1 0x20 00001c4e: MSTORE 00001c4f: PUSH1 0x40 00001c51: SWAP1 00001c52: KECCAK256 00001c53: PUSH1 0x06 00001c55: ADD 00001c56: SLOAD 00001c57: PUSH1 0x01 00001c59: PUSH1 0xa0 00001c5b: PUSH1 0x02 00001c5d: EXP 00001c5e: SUB 00001c5f: AND 00001c60: ISZERO 00001c61: PUSH2 0x1c81 00001c64: JUMPI 00001c65: PUSH2 0x1c7a 00001c68: PUSH1 0x64 00001c6a: PUSH2 0x1b16 00001c6d: DUP11 00001c6e: PUSH1 0x03 00001c70: PUSH4 0xffffffff 00001c75: PUSH2 0x245a 00001c78: AND 00001c79: JUMP 00001c7a: JUMPDEST 00001c7b: SWAP7 00001c7c: POP 00001c7d: PUSH2 0x1c9a 00001c80: JUMP 00001c81: JUMPDEST 00001c82: PUSH2 0x1c97 00001c85: PUSH1 0x64 00001c87: PUSH2 0x1b16 00001c8a: DUP11 00001c8b: PUSH1 0x04 00001c8d: PUSH4 0xffffffff 00001c92: PUSH2 0x245a 00001c95: AND 00001c96: JUMP 00001c97: JUMPDEST 00001c98: SWAP7 00001c99: POP 00001c9a: JUMPDEST 00001c9b: PUSH1 0x00 00001c9d: DUP11 00001c9e: DUP2 00001c9f: MSTORE 00001ca0: PUSH1 0x02 00001ca2: PUSH1 0x20 00001ca4: MSTORE 00001ca5: PUSH1 0x40 00001ca7: SWAP1 00001ca8: KECCAK256 00001ca9: PUSH1 0x01 00001cab: SWAP1 00001cac: PUSH1 0x16 00001cae: ADD 00001caf: DUP5 00001cb0: PUSH1 0x0b 00001cb2: DUP2 00001cb3: LT 00001cb4: PUSH2 0x1cb9 00001cb7: JUMPI 00001cb8: INVALID 00001cb9: JUMPDEST 00001cba: PUSH1 0x20 00001cbc: SWAP2 00001cbd: DUP3 00001cbe: DUP3 00001cbf: DIV 00001cc0: ADD 00001cc1: SWAP2 00001cc2: SWAP1 00001cc3: MOD 00001cc4: PUSH2 0x0100 00001cc7: EXP 00001cc8: DUP2 00001cc9: SLOAD 00001cca: DUP2 00001ccb: PUSH1 0xff 00001ccd: MUL 00001cce: NOT 00001ccf: AND 00001cd0: SWAP1 00001cd1: DUP4 00001cd2: ISZERO 00001cd3: ISZERO 00001cd4: MUL 00001cd5: OR 00001cd6: SWAP1 00001cd7: SSTORE 00001cd8: POP 00001cd9: JUMPDEST 00001cda: PUSH2 0x1cea 00001cdd: DUP4 00001cde: PUSH1 0x01 00001ce0: PUSH4 0xffffffff 00001ce5: PUSH2 0x2537 00001ce8: AND 00001ce9: JUMP 00001cea: JUMPDEST 00001ceb: SWAP3 00001cec: POP 00001ced: PUSH2 0x1b8a 00001cf0: JUMP 00001cf1: JUMPDEST 00001cf2: PUSH1 0x00 00001cf4: DUP11 00001cf5: DUP2 00001cf6: MSTORE 00001cf7: PUSH1 0x03 00001cf9: PUSH1 0x20 00001cfb: SWAP1 00001cfc: DUP2 00001cfd: MSTORE 00001cfe: PUSH1 0x40 00001d00: DUP1 00001d01: DUP4 00001d02: KECCAK256 00001d03: CALLER 00001d04: DUP5 00001d05: MSTORE 00001d06: SWAP1 00001d07: SWAP2 00001d08: MSTORE 00001d09: SWAP1 00001d0a: KECCAK256 00001d0b: PUSH1 0x04 00001d0d: ADD 00001d0e: SLOAD 00001d0f: PUSH2 0x1d23 00001d12: SWAP1 00001d13: PUSH2 0x1a6e 00001d16: SWAP1 00001d17: DUP10 00001d18: SWAP1 00001d19: PUSH4 0xffffffff 00001d1e: PUSH2 0x24d7 00001d21: AND 00001d22: JUMP 00001d23: JUMPDEST 00001d24: PUSH1 0x00 00001d26: DUP12 00001d27: DUP2 00001d28: MSTORE 00001d29: PUSH1 0x03 00001d2b: PUSH1 0x20 00001d2d: SWAP1 00001d2e: DUP2 00001d2f: MSTORE 00001d30: PUSH1 0x40 00001d32: DUP1 00001d33: DUP4 00001d34: KECCAK256 00001d35: CALLER 00001d36: DUP5 00001d37: MSTORE 00001d38: SWAP1 00001d39: SWAP2 00001d3a: MSTORE 00001d3b: SWAP1 00001d3c: KECCAK256 00001d3d: PUSH1 0x04 00001d3f: ADD 00001d40: DUP9 00001d41: SWAP1 00001d42: SSTORE 00001d43: SWAP9 00001d44: POP 00001d45: DUP9 00001d46: ISZERO 00001d47: PUSH2 0x1d79 00001d4a: JUMPI 00001d4b: PUSH1 0x40 00001d4d: MLOAD 00001d4e: CALLER 00001d4f: SWAP1 00001d50: DUP11 00001d51: ISZERO 00001d52: PUSH2 0x08fc 00001d55: MUL 00001d56: SWAP1 00001d57: DUP12 00001d58: SWAP1 00001d59: PUSH1 0x00 00001d5b: DUP2 00001d5c: DUP2 00001d5d: DUP2 00001d5e: DUP6 00001d5f: DUP9 00001d60: DUP9 00001d61: CALL 00001d62: SWAP4 00001d63: POP 00001d64: POP 00001d65: POP 00001d66: POP 00001d67: ISZERO 00001d68: DUP1 00001d69: ISZERO 00001d6a: PUSH2 0x1d77 00001d6d: JUMPI 00001d6e: RETURNDATASIZE 00001d6f: PUSH1 0x00 00001d71: DUP1 00001d72: RETURNDATACOPY 00001d73: RETURNDATASIZE 00001d74: PUSH1 0x00 00001d76: REVERT 00001d77: JUMPDEST 00001d78: POP 00001d79: JUMPDEST 00001d7a: PUSH1 0x40 00001d7c: DUP1 00001d7d: MLOAD 00001d7e: DUP11 00001d7f: DUP2 00001d80: MSTORE 00001d81: TIMESTAMP 00001d82: PUSH1 0x20 00001d84: DUP3 00001d85: ADD 00001d86: MSTORE 00001d87: DUP2 00001d88: MLOAD 00001d89: DUP13 00001d8a: SWAP3 00001d8b: CALLER 00001d8c: SWAP3 00001d8d: PUSH32 0x067aa1d7e7bd2c0daf878a68551cbd9e1a4dbaaa1510600154c71bffbe420d86 00001dae: SWAP3 00001daf: SWAP1 00001db0: DUP2 00001db1: SWAP1 00001db2: SUB 00001db3: SWAP1 00001db4: SWAP2 00001db5: ADD 00001db6: SWAP1 00001db7: LOG3 00001db8: POP 00001db9: POP 00001dba: POP 00001dbb: POP 00001dbc: POP 00001dbd: POP 00001dbe: POP 00001dbf: POP 00001dc0: POP 00001dc1: POP 00001dc2: JUMP 00001dc3: JUMPDEST 00001dc4: PUSH1 0x04 00001dc6: SLOAD 00001dc7: PUSH1 0x01 00001dc9: PUSH1 0xa0 00001dcb: PUSH1 0x02 00001dcd: EXP 00001dce: SUB 00001dcf: AND 00001dd0: DUP2 00001dd1: JUMP 00001dd2: JUMPDEST 00001dd3: PUSH1 0x03 00001dd5: PUSH1 0x20 00001dd7: DUP2 00001dd8: DUP2 00001dd9: MSTORE 00001dda: PUSH1 0x00 00001ddc: SWAP4 00001ddd: DUP5 00001dde: MSTORE 00001ddf: PUSH1 0x40 00001de1: DUP1 00001de2: DUP6 00001de3: KECCAK256 00001de4: SWAP1 00001de5: SWAP2 00001de6: MSTORE 00001de7: SWAP2 00001de8: DUP4 00001de9: MSTORE 00001dea: SWAP2 00001deb: KECCAK256 00001dec: DUP1 00001ded: SLOAD 00001dee: PUSH1 0x01 00001df0: DUP3 00001df1: ADD 00001df2: SLOAD 00001df3: PUSH1 0x02 00001df5: DUP4 00001df6: ADD 00001df7: SLOAD 00001df8: SWAP4 00001df9: DUP4 00001dfa: ADD 00001dfb: SLOAD 00001dfc: PUSH1 0x04 00001dfe: SWAP1 00001dff: SWAP4 00001e00: ADD 00001e01: SLOAD 00001e02: SWAP2 00001e03: SWAP4 00001e04: SWAP1 00001e05: SWAP3 00001e06: SWAP1 00001e07: SWAP2 00001e08: DUP6 00001e09: JUMP 00001e0a: JUMPDEST 00001e0b: CALLER 00001e0c: DUP1 00001e0d: EXTCODESIZE 00001e0e: DUP1 00001e0f: ISZERO 00001e10: PUSH2 0x1e51 00001e13: JUMPI 00001e14: PUSH1 0x40 00001e16: DUP1 00001e17: MLOAD 00001e18: PUSH1 0xe5 00001e1a: PUSH1 0x02 00001e1c: EXP 00001e1d: PUSH3 0x461bcd 00001e21: MUL 00001e22: DUP2 00001e23: MSTORE 00001e24: PUSH1 0x20 00001e26: PUSH1 0x04 00001e28: DUP3 00001e29: ADD 00001e2a: MSTORE 00001e2b: PUSH1 0x11 00001e2d: PUSH1 0x24 00001e2f: DUP3 00001e30: ADD 00001e31: MSTORE 00001e32: PUSH1 0x00 00001e34: DUP1 00001e35: MLOAD 00001e36: PUSH1 0x20 00001e38: PUSH2 0x2806 00001e3b: DUP4 00001e3c: CODECOPY 00001e3d: DUP2 00001e3e: MLOAD 00001e3f: SWAP2 00001e40: MSTORE 00001e41: PUSH1 0x44 00001e43: DUP3 00001e44: ADD 00001e45: MSTORE 00001e46: SWAP1 00001e47: MLOAD 00001e48: SWAP1 00001e49: DUP2 00001e4a: SWAP1 00001e4b: SUB 00001e4c: PUSH1 0x64 00001e4e: ADD 00001e4f: SWAP1 00001e50: REVERT 00001e51: JUMPDEST 00001e52: CALLVALUE 00001e53: PUSH4 0x3b9aca00 00001e58: DUP2 00001e59: LT 00001e5a: ISZERO 00001e5b: PUSH2 0x1ed4 00001e5e: JUMPI 00001e5f: PUSH1 0x40 00001e61: DUP1 00001e62: MLOAD 00001e63: PUSH1 0xe5 00001e65: PUSH1 0x02 00001e67: EXP 00001e68: PUSH3 0x461bcd 00001e6c: MUL 00001e6d: DUP2 00001e6e: MSTORE 00001e6f: PUSH1 0x20 00001e71: PUSH1 0x04 00001e73: DUP3 00001e74: ADD 00001e75: MSTORE 00001e76: PUSH1 0x21 00001e78: PUSH1 0x24 00001e7a: DUP3 00001e7b: ADD 00001e7c: MSTORE 00001e7d: PUSH32 0x706f636b6574206c696e743a206e6f7420612076616c69642063757272656e63 00001e9e: PUSH1 0x44 00001ea0: DUP3 00001ea1: ADD 00001ea2: MSTORE 00001ea3: PUSH32 0x7900000000000000000000000000000000000000000000000000000000000000 00001ec4: PUSH1 0x64 00001ec6: DUP3 00001ec7: ADD 00001ec8: MSTORE 00001ec9: SWAP1 00001eca: MLOAD 00001ecb: SWAP1 00001ecc: DUP2 00001ecd: SWAP1 00001ece: SUB 00001ecf: PUSH1 0x84 00001ed1: ADD 00001ed2: SWAP1 00001ed3: REVERT 00001ed4: JUMPDEST 00001ed5: PUSH10 0x152d02c7e14af6800000 00001ee0: DUP2 00001ee1: GT 00001ee2: ISZERO 00001ee3: PUSH2 0x1f36 00001ee6: JUMPI 00001ee7: PUSH1 0x40 00001ee9: DUP1 00001eea: MLOAD 00001eeb: PUSH1 0xe5 00001eed: PUSH1 0x02 00001eef: EXP 00001ef0: PUSH3 0x461bcd 00001ef4: MUL 00001ef5: DUP2 00001ef6: MSTORE 00001ef7: PUSH1 0x20 00001ef9: PUSH1 0x04 00001efb: DUP3 00001efc: ADD 00001efd: MSTORE 00001efe: PUSH1 0x0e 00001f00: PUSH1 0x24 00001f02: DUP3 00001f03: ADD 00001f04: MSTORE 00001f05: PUSH32 0x6e6f20766974616c696b2c206e6f000000000000000000000000000000000000 00001f26: PUSH1 0x44 00001f28: DUP3 00001f29: ADD 00001f2a: MSTORE 00001f2b: SWAP1 00001f2c: MLOAD 00001f2d: SWAP1 00001f2e: DUP2 00001f2f: SWAP1 00001f30: SUB 00001f31: PUSH1 0x64 00001f33: ADD 00001f34: SWAP1 00001f35: REVERT 00001f36: JUMPDEST 00001f37: PUSH1 0x07 00001f39: SLOAD 00001f3a: PUSH1 0xff 00001f3c: AND 00001f3d: ISZERO 00001f3e: ISZERO 00001f3f: PUSH1 0x01 00001f41: EQ 00001f42: PUSH2 0x1f83 00001f45: JUMPI 00001f46: PUSH1 0x40 00001f48: DUP1 00001f49: MLOAD 00001f4a: PUSH1 0xe5 00001f4c: PUSH1 0x02 00001f4e: EXP 00001f4f: PUSH3 0x461bcd 00001f53: MUL 00001f54: DUP2 00001f55: MSTORE 00001f56: PUSH1 0x20 00001f58: PUSH1 0x04 00001f5a: DUP3 00001f5b: ADD 00001f5c: MSTORE 00001f5d: PUSH1 0x1c 00001f5f: PUSH1 0x24 00001f61: DUP3 00001f62: ADD 00001f63: MSTORE 00001f64: PUSH1 0x00 00001f66: DUP1 00001f67: MLOAD 00001f68: PUSH1 0x20 00001f6a: PUSH2 0x27e6 00001f6d: DUP4 00001f6e: CODECOPY 00001f6f: DUP2 00001f70: MLOAD 00001f71: SWAP2 00001f72: MSTORE 00001f73: PUSH1 0x44 00001f75: DUP3 00001f76: ADD 00001f77: MSTORE 00001f78: SWAP1 00001f79: MLOAD 00001f7a: SWAP1 00001f7b: DUP2 00001f7c: SWAP1 00001f7d: SUB 00001f7e: PUSH1 0x64 00001f80: ADD 00001f81: SWAP1 00001f82: REVERT 00001f83: JUMPDEST 00001f84: PUSH2 0x1f8c 00001f87: DUP5 00001f88: PUSH2 0x05ff 00001f8b: JUMP 00001f8c: JUMPDEST 00001f8d: POP 00001f8e: POP 00001f8f: POP 00001f90: POP 00001f91: JUMP 00001f92: JUMPDEST 00001f93: PUSH1 0x04 00001f95: SLOAD 00001f96: PUSH1 0x01 00001f98: PUSH1 0xa0 00001f9a: PUSH1 0x02 00001f9c: EXP 00001f9d: SUB 00001f9e: AND 00001f9f: CALLER 00001fa0: EQ 00001fa1: PUSH2 0x1ff4 00001fa4: JUMPI 00001fa5: PUSH1 0x40 00001fa7: DUP1 00001fa8: MLOAD 00001fa9: PUSH1 0xe5 00001fab: PUSH1 0x02 00001fad: EXP 00001fae: PUSH3 0x461bcd 00001fb2: MUL 00001fb3: DUP2 00001fb4: MSTORE 00001fb5: PUSH1 0x20 00001fb7: PUSH1 0x04 00001fb9: DUP3 00001fba: ADD 00001fbb: MSTORE 00001fbc: PUSH1 0x14 00001fbe: PUSH1 0x24 00001fc0: DUP3 00001fc1: ADD 00001fc2: MSTORE 00001fc3: PUSH32 0x6f6e6c79206f776e65722063616e20646f206974000000000000000000000000 00001fe4: PUSH1 0x44 00001fe6: DUP3 00001fe7: ADD 00001fe8: MSTORE 00001fe9: SWAP1 00001fea: MLOAD 00001feb: SWAP1 00001fec: DUP2 00001fed: SWAP1 00001fee: SUB 00001fef: PUSH1 0x64 00001ff1: ADD 00001ff2: SWAP1 00001ff3: REVERT 00001ff4: JUMPDEST 00001ff5: PUSH1 0x07 00001ff7: SLOAD 00001ff8: PUSH1 0xff 00001ffa: AND 00001ffb: ISZERO 00001ffc: PUSH2 0x204f 00001fff: JUMPI 00002000: PUSH1 0x40 00002002: DUP1 00002003: MLOAD 00002004: PUSH1 0xe5 00002006: PUSH1 0x02 00002008: EXP 00002009: PUSH3 0x461bcd 0000200d: MUL 0000200e: DUP2 0000200f: MSTORE 00002010: PUSH1 0x20 00002012: PUSH1 0x04 00002014: DUP3 00002015: ADD 00002016: MSTORE 00002017: PUSH1 0x1d 00002019: PUSH1 0x24 0000201b: DUP3 0000201c: ADD 0000201d: MSTORE 0000201e: PUSH32 0x5468652067616d652068617320616c7265616479207374617274656421000000 0000203f: PUSH1 0x44 00002041: DUP3 00002042: ADD 00002043: MSTORE 00002044: SWAP1 00002045: MLOAD 00002046: SWAP1 00002047: DUP2 00002048: SWAP1 00002049: SUB 0000204a: PUSH1 0x64 0000204c: ADD 0000204d: SWAP1 0000204e: REVERT 0000204f: JUMPDEST 00002050: PUSH1 0x01 00002052: PUSH1 0x00 00002054: DUP2 00002055: DUP2 00002056: MSTORE 00002057: PUSH1 0x02 00002059: PUSH1 0x20 0000205b: MSTORE 0000205c: TIMESTAMP 0000205d: PUSH32 0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e2 0000207e: DUP2 0000207f: SWAP1 00002080: SSTORE 00002081: PUSH2 0xa8c0 00002084: ADD 00002085: PUSH32 0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e3 000020a6: SSTORE 000020a7: PUSH32 0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2f9 000020c8: SSTORE 000020c9: PUSH1 0x07 000020cb: DUP1 000020cc: SLOAD 000020cd: PUSH1 0xff 000020cf: NOT 000020d0: AND 000020d1: SWAP1 000020d2: SWAP2 000020d3: OR 000020d4: SWAP1 000020d5: SSTORE 000020d6: JUMP 000020d7: JUMPDEST 000020d8: PUSH1 0x00 000020da: DUP3 000020db: DUP2 000020dc: MSTORE 000020dd: PUSH1 0x02 000020df: PUSH1 0x20 000020e1: MSTORE 000020e2: PUSH1 0x40 000020e4: DUP2 000020e5: KECCAK256 000020e6: SLOAD 000020e7: DUP2 000020e8: SWAP1 000020e9: DUP2 000020ea: SWAP1 000020eb: DUP2 000020ec: SWAP1 000020ed: DUP2 000020ee: SWAP1 000020ef: DUP2 000020f0: SWAP1 000020f1: DUP2 000020f2: SWAP1 000020f3: DUP2 000020f4: SWAP1 000020f5: PUSH1 0x64 000020f7: SWAP1 000020f8: PUSH2 0x2108 000020fb: SWAP1 000020fc: PUSH1 0x33 000020fe: PUSH4 0xffffffff 00002103: PUSH2 0x245a 00002106: AND 00002107: JUMP 00002108: JUMPDEST 00002109: DUP2 0000210a: ISZERO 0000210b: ISZERO 0000210c: PUSH2 0x2111 0000210f: JUMPI 00002110: INVALID 00002111: JUMPDEST 00002112: PUSH1 0x00 00002114: DUP13 00002115: DUP2 00002116: MSTORE 00002117: PUSH1 0x02 00002119: PUSH1 0x20 0000211b: MSTORE 0000211c: PUSH1 0x40 0000211e: SWAP1 0000211f: KECCAK256 00002120: PUSH1 0x1a 00002122: ADD 00002123: SLOAD 00002124: SWAP2 00002125: SWAP1 00002126: DIV 00002127: SWAP4 00002128: POP 00002129: PUSH2 0x2139 0000212c: SWAP1 0000212d: DUP5 0000212e: SWAP1 0000212f: PUSH4 0xffffffff 00002134: PUSH2 0x24d7 00002137: AND 00002138: JUMP 00002139: JUMPDEST 0000213a: PUSH1 0x00 0000213c: DUP12 0000213d: DUP2 0000213e: MSTORE 0000213f: PUSH1 0x03 00002141: PUSH1 0x20 00002143: SWAP1 00002144: DUP2 00002145: MSTORE 00002146: PUSH1 0x40 00002148: DUP1 00002149: DUP4 0000214a: KECCAK256 0000214b: PUSH1 0x01 0000214d: PUSH1 0xa0 0000214f: PUSH1 0x02 00002151: EXP 00002152: SUB 00002153: DUP15 00002154: AND 00002155: DUP5 00002156: MSTORE 00002157: SWAP1 00002158: SWAP2 00002159: MSTORE 0000215a: SWAP1 0000215b: KECCAK256 0000215c: PUSH1 0x01 0000215e: ADD 0000215f: SLOAD 00002160: SWAP1 00002161: SWAP4 00002162: POP 00002163: PUSH2 0x2173 00002166: SWAP1 00002167: DUP5 00002168: SWAP1 00002169: PUSH4 0xffffffff 0000216e: PUSH2 0x245a 00002171: AND 00002172: JUMP 00002173: JUMPDEST 00002174: PUSH1 0x00 00002176: DUP12 00002177: DUP2 00002178: MSTORE 00002179: PUSH1 0x02 0000217b: PUSH1 0x20 0000217d: MSTORE 0000217e: PUSH1 0x40 00002180: SWAP1 00002181: KECCAK256 00002182: PUSH1 0x01 00002184: ADD 00002185: SLOAD 00002186: SWAP1 00002187: SWAP4 00002188: POP 00002189: DUP4 0000218a: DUP2 0000218b: ISZERO 0000218c: ISZERO 0000218d: PUSH2 0x2192 00002190: JUMPI 00002191: INVALID 00002192: JUMPDEST 00002193: PUSH1 0x00 00002195: DUP13 00002196: DUP2 00002197: MSTORE 00002198: PUSH1 0x02 0000219a: PUSH1 0x20 0000219c: MSTORE 0000219d: PUSH1 0x40 0000219f: SWAP1 000021a0: KECCAK256 000021a1: SLOAD 000021a2: SWAP2 000021a3: SWAP1 000021a4: DIV 000021a5: SWAP4 000021a6: POP 000021a7: PUSH1 0x64 000021a9: SWAP1 000021aa: PUSH2 0x21ba 000021ad: SWAP1 000021ae: PUSH1 0x1e 000021b0: PUSH4 0xffffffff 000021b5: PUSH2 0x245a 000021b8: AND 000021b9: JUMP 000021ba: JUMPDEST 000021bb: DUP2 000021bc: ISZERO 000021bd: ISZERO 000021be: PUSH2 0x21c3 000021c1: JUMPI 000021c2: INVALID 000021c3: JUMPDEST 000021c4: PUSH1 0x00 000021c6: DUP13 000021c7: DUP2 000021c8: MSTORE 000021c9: PUSH1 0x02 000021cb: PUSH1 0x20 000021cd: MSTORE 000021ce: PUSH1 0x40 000021d0: SWAP1 000021d1: KECCAK256 000021d2: PUSH1 0x19 000021d4: ADD 000021d5: SLOAD 000021d6: SWAP2 000021d7: SWAP1 000021d8: DIV 000021d9: SWAP3 000021da: POP 000021db: PUSH2 0x21eb 000021de: SWAP1 000021df: DUP4 000021e0: SWAP1 000021e1: PUSH4 0xffffffff 000021e6: PUSH2 0x2537 000021e9: AND 000021ea: JUMP 000021eb: JUMPDEST 000021ec: PUSH1 0x00 000021ee: DUP12 000021ef: DUP2 000021f0: MSTORE 000021f1: PUSH1 0x02 000021f3: PUSH1 0x20 000021f5: MSTORE 000021f6: PUSH1 0x40 000021f8: SWAP1 000021f9: KECCAK256 000021fa: PUSH1 0x1a 000021fc: ADD 000021fd: SLOAD 000021fe: SWAP1 000021ff: SWAP3 00002200: POP 00002201: PUSH2 0x2211 00002204: SWAP1 00002205: DUP4 00002206: SWAP1 00002207: PUSH4 0xffffffff 0000220c: PUSH2 0x2537 0000220f: AND 00002210: JUMP 00002211: JUMPDEST 00002212: PUSH1 0x00 00002214: DUP12 00002215: DUP2 00002216: MSTORE 00002217: PUSH1 0x02 00002219: PUSH1 0x20 0000221b: MSTORE 0000221c: PUSH1 0x40 0000221e: SWAP1 0000221f: KECCAK256 00002220: PUSH1 0x06 00002222: ADD 00002223: SLOAD 00002224: SWAP1 00002225: SWAP3 00002226: POP 00002227: PUSH1 0x01 00002229: PUSH1 0xa0 0000222b: PUSH1 0x02 0000222d: EXP 0000222e: SUB 0000222f: DUP11 00002230: DUP2 00002231: AND 00002232: SWAP2 00002233: AND 00002234: EQ 00002235: DUP1 00002236: ISZERO 00002237: PUSH2 0x2259 0000223a: JUMPI 0000223b: POP 0000223c: PUSH1 0x00 0000223e: DUP11 0000223f: DUP2 00002240: MSTORE 00002241: PUSH1 0x02 00002243: PUSH1 0x20 00002245: MSTORE 00002246: PUSH1 0x40 00002248: SWAP1 00002249: KECCAK256 0000224a: PUSH1 0x06 0000224c: ADD 0000224d: SLOAD 0000224e: PUSH1 0x01 00002250: PUSH1 0xa0 00002252: PUSH1 0x02 00002254: EXP 00002255: SUB 00002256: AND 00002257: ISZERO 00002258: ISZERO 00002259: JUMPDEST 0000225a: DUP1 0000225b: ISZERO 0000225c: PUSH2 0x2275 0000225f: JUMPI 00002260: POP 00002261: PUSH1 0x00 00002263: DUP11 00002264: DUP2 00002265: MSTORE 00002266: PUSH1 0x02 00002268: PUSH1 0x20 0000226a: MSTORE 0000226b: PUSH1 0x40 0000226d: SWAP1 0000226e: KECCAK256 0000226f: PUSH1 0x04 00002271: ADD 00002272: SLOAD 00002273: ISZERO 00002274: ISZERO 00002275: JUMPDEST 00002276: ISZERO 00002277: PUSH2 0x22ab 0000227a: JUMPI 0000227b: PUSH2 0x22a8 0000227e: PUSH1 0x64 00002280: PUSH2 0x2290 00002283: DUP5 00002284: PUSH1 0x0a 00002286: PUSH4 0xffffffff 0000228b: PUSH2 0x245a 0000228e: AND 0000228f: JUMP 00002290: JUMPDEST 00002291: DUP2 00002292: ISZERO 00002293: ISZERO 00002294: PUSH2 0x2299 00002297: JUMPI 00002298: INVALID 00002299: JUMPDEST 0000229a: DUP7 0000229b: SWAP2 0000229c: SWAP1 0000229d: DIV 0000229e: PUSH4 0xffffffff 000022a3: PUSH2 0x2537 000022a6: AND 000022a7: JUMP 000022a8: JUMPDEST 000022a9: SWAP4 000022aa: POP 000022ab: JUMPDEST 000022ac: PUSH1 0x00 000022ae: DUP11 000022af: DUP2 000022b0: MSTORE 000022b1: PUSH1 0x02 000022b3: PUSH1 0x20 000022b5: MSTORE 000022b6: PUSH1 0x40 000022b8: SWAP1 000022b9: KECCAK256 000022ba: PUSH1 0x03 000022bc: ADD 000022bd: SLOAD 000022be: TIMESTAMP 000022bf: GT 000022c0: ISZERO 000022c1: PUSH2 0x23fb 000022c4: JUMPI 000022c5: PUSH1 0x00 000022c7: DUP11 000022c8: DUP2 000022c9: MSTORE 000022ca: PUSH1 0x02 000022cc: PUSH1 0x20 000022ce: MSTORE 000022cf: PUSH1 0x40 000022d1: SWAP1 000022d2: KECCAK256 000022d3: PUSH1 0x05 000022d5: ADD 000022d6: SLOAD 000022d7: PUSH1 0x01 000022d9: PUSH1 0xa0 000022db: PUSH1 0x02 000022dd: EXP 000022de: SUB 000022df: DUP11 000022e0: DUP2 000022e1: AND 000022e2: SWAP2 000022e3: AND 000022e4: EQ 000022e5: ISZERO 000022e6: PUSH2 0x2302 000022e9: JUMPI 000022ea: PUSH2 0x22ff 000022ed: PUSH1 0x64 000022ef: PUSH2 0x2290 000022f2: DUP5 000022f3: PUSH1 0x3c 000022f5: PUSH4 0xffffffff 000022fa: PUSH2 0x245a 000022fd: AND 000022fe: JUMP 000022ff: JUMPDEST 00002300: SWAP4 00002301: POP 00002302: JUMPDEST 00002303: POP 00002304: PUSH1 0x00 00002306: JUMPDEST 00002307: PUSH1 0x00 00002309: DUP11 0000230a: SWAP1 0000230b: MSTORE 0000230c: PUSH1 0x02 0000230e: PUSH1 0x20 00002310: MSTORE 00002311: PUSH1 0x0b 00002313: DUP2 00002314: LT 00002315: ISZERO 00002316: PUSH2 0x23fb 00002319: JUMPI 0000231a: PUSH1 0x00 0000231c: DUP11 0000231d: DUP2 0000231e: MSTORE 0000231f: PUSH1 0x02 00002321: PUSH1 0x20 00002323: MSTORE 00002324: PUSH1 0x40 00002326: SWAP1 00002327: KECCAK256 00002328: PUSH1 0x01 0000232a: PUSH1 0xa0 0000232c: PUSH1 0x02 0000232e: EXP 0000232f: SUB 00002330: DUP11 00002331: AND 00002332: SWAP1 00002333: PUSH1 0x07 00002335: ADD 00002336: DUP3 00002337: PUSH1 0x0b 00002339: DUP2 0000233a: LT 0000233b: PUSH2 0x2340 0000233e: JUMPI 0000233f: INVALID 00002340: JUMPDEST 00002341: ADD 00002342: SLOAD 00002343: PUSH1 0x01 00002345: PUSH1 0xa0 00002347: PUSH1 0x02 00002349: EXP 0000234a: SUB 0000234b: AND 0000234c: EQ 0000234d: DUP1 0000234e: ISZERO 0000234f: PUSH2 0x2388 00002352: JUMPI 00002353: POP 00002354: PUSH1 0x00 00002356: DUP11 00002357: DUP2 00002358: MSTORE 00002359: PUSH1 0x02 0000235b: PUSH1 0x20 0000235d: MSTORE 0000235e: PUSH1 0x40 00002360: SWAP1 00002361: KECCAK256 00002362: PUSH1 0x17 00002364: ADD 00002365: SLOAD 00002366: DUP2 00002367: SWAP1 00002368: PUSH1 0x0b 0000236a: SWAP1 0000236b: PUSH2 0x237b 0000236e: SWAP1 0000236f: PUSH1 0x01 00002371: PUSH4 0xffffffff 00002376: PUSH2 0x24d7 00002379: AND 0000237a: JUMP 0000237b: JUMPDEST 0000237c: DUP2 0000237d: ISZERO 0000237e: ISZERO 0000237f: PUSH2 0x2384 00002382: JUMPI 00002383: INVALID 00002384: JUMPDEST 00002385: MOD 00002386: EQ 00002387: ISZERO 00002388: JUMPDEST 00002389: ISZERO 0000238a: PUSH2 0x23e3 0000238d: JUMPI 0000238e: PUSH1 0x00 00002390: DUP11 00002391: DUP2 00002392: MSTORE 00002393: PUSH1 0x02 00002395: PUSH1 0x20 00002397: MSTORE 00002398: PUSH1 0x40 0000239a: SWAP1 0000239b: KECCAK256 0000239c: PUSH1 0x06 0000239e: ADD 0000239f: SLOAD 000023a0: PUSH1 0x01 000023a2: PUSH1 0xa0 000023a4: PUSH1 0x02 000023a6: EXP 000023a7: SUB 000023a8: AND 000023a9: ISZERO 000023aa: PUSH2 0x23ca 000023ad: JUMPI 000023ae: PUSH2 0x23c3 000023b1: PUSH1 0x64 000023b3: PUSH2 0x2290 000023b6: DUP5 000023b7: PUSH1 0x03 000023b9: PUSH4 0xffffffff 000023be: PUSH2 0x245a 000023c1: AND 000023c2: JUMP 000023c3: JUMPDEST 000023c4: SWAP4 000023c5: POP 000023c6: PUSH2 0x23e3 000023c9: JUMP 000023ca: JUMPDEST 000023cb: PUSH2 0x23e0 000023ce: PUSH1 0x64 000023d0: PUSH2 0x2290 000023d3: DUP5 000023d4: PUSH1 0x04 000023d6: PUSH4 0xffffffff 000023db: PUSH2 0x245a 000023de: AND 000023df: JUMP 000023e0: JUMPDEST 000023e1: SWAP4 000023e2: POP 000023e3: JUMPDEST 000023e4: PUSH2 0x23f4 000023e7: DUP2 000023e8: PUSH1 0x01 000023ea: PUSH4 0xffffffff 000023ef: PUSH2 0x2537 000023f2: AND 000023f3: JUMP 000023f4: JUMPDEST 000023f5: SWAP1 000023f6: POP 000023f7: PUSH2 0x2306 000023fa: JUMP 000023fb: JUMPDEST 000023fc: POP 000023fd: POP 000023fe: PUSH1 0x00 00002400: SWAP8 00002401: DUP9 00002402: MSTORE 00002403: PUSH1 0x03 00002405: PUSH1 0x20 00002407: DUP2 00002408: DUP2 00002409: MSTORE 0000240a: PUSH1 0x40 0000240c: DUP1 0000240d: DUP12 0000240e: KECCAK256 0000240f: PUSH1 0x01 00002411: PUSH1 0xa0 00002413: PUSH1 0x02 00002415: EXP 00002416: SUB 00002417: SWAP11 00002418: SWAP1 00002419: SWAP11 0000241a: AND 0000241b: DUP12 0000241c: MSTORE 0000241d: SWAP9 0000241e: SWAP1 0000241f: MSTORE 00002420: SWAP7 00002421: SWAP1 00002422: SWAP8 00002423: KECCAK256 00002424: SWAP6 00002425: DUP7 00002426: ADD 00002427: SLOAD 00002428: PUSH1 0x02 0000242a: DUP8 0000242b: ADD 0000242c: SLOAD 0000242d: PUSH1 0x04 0000242f: SWAP1 00002430: SWAP8 00002431: ADD 00002432: SLOAD 00002433: SWAP2 00002434: SWAP9 00002435: SWAP1 00002436: SWAP7 00002437: SWAP2 00002438: SWAP1 00002439: SWAP2 0000243a: ADD 0000243b: SWAP5 0000243c: POP 0000243d: SWAP3 0000243e: POP 0000243f: POP 00002440: POP 00002441: JUMP 00002442: JUMPDEST 00002443: PUSH1 0x07 00002445: SLOAD 00002446: PUSH1 0xff 00002448: AND 00002449: DUP2 0000244a: JUMP 0000244b: JUMPDEST 0000244c: PUSH1 0x05 0000244e: SLOAD 0000244f: PUSH1 0x01 00002451: PUSH1 0xa0 00002453: PUSH1 0x02 00002455: EXP 00002456: SUB 00002457: AND 00002458: DUP2 00002459: JUMP 0000245a: JUMPDEST 0000245b: PUSH1 0x00 0000245d: DUP3 0000245e: ISZERO 0000245f: ISZERO 00002460: PUSH2 0x246b 00002463: JUMPI 00002464: POP 00002465: PUSH1 0x00 00002467: PUSH2 0x24d1 0000246a: JUMP 0000246b: JUMPDEST 0000246c: POP 0000246d: DUP2 0000246e: DUP2 0000246f: MUL 00002470: DUP2 00002471: DUP4 00002472: DUP3 00002473: DUP2 00002474: ISZERO 00002475: ISZERO 00002476: PUSH2 0x247b 00002479: JUMPI 0000247a: INVALID 0000247b: JUMPDEST 0000247c: DIV 0000247d: EQ 0000247e: PUSH2 0x24d1 00002481: JUMPI 00002482: PUSH1 0x40 00002484: DUP1 00002485: MLOAD 00002486: PUSH1 0xe5 00002488: PUSH1 0x02 0000248a: EXP 0000248b: PUSH3 0x461bcd 0000248f: MUL 00002490: DUP2 00002491: MSTORE 00002492: PUSH1 0x20 00002494: PUSH1 0x04 00002496: DUP3 00002497: ADD 00002498: MSTORE 00002499: PUSH1 0x13 0000249b: PUSH1 0x24 0000249d: DUP3 0000249e: ADD 0000249f: MSTORE 000024a0: PUSH32 0x536166654d617468206d756c206661696c656400000000000000000000000000 000024c1: PUSH1 0x44 000024c3: DUP3 000024c4: ADD 000024c5: MSTORE 000024c6: SWAP1 000024c7: MLOAD 000024c8: SWAP1 000024c9: DUP2 000024ca: SWAP1 000024cb: SUB 000024cc: PUSH1 0x64 000024ce: ADD 000024cf: SWAP1 000024d0: REVERT 000024d1: JUMPDEST 000024d2: SWAP3 000024d3: SWAP2 000024d4: POP 000024d5: POP 000024d6: JUMP 000024d7: JUMPDEST 000024d8: PUSH1 0x00 000024da: DUP3 000024db: DUP3 000024dc: GT 000024dd: ISZERO 000024de: PUSH2 0x2531 000024e1: JUMPI 000024e2: PUSH1 0x40 000024e4: DUP1 000024e5: MLOAD 000024e6: PUSH1 0xe5 000024e8: PUSH1 0x02 000024ea: EXP 000024eb: PUSH3 0x461bcd 000024ef: MUL 000024f0: DUP2 000024f1: MSTORE 000024f2: PUSH1 0x20 000024f4: PUSH1 0x04 000024f6: DUP3 000024f7: ADD 000024f8: MSTORE 000024f9: PUSH1 0x13 000024fb: PUSH1 0x24 000024fd: DUP3 000024fe: ADD 000024ff: MSTORE 00002500: PUSH32 0x536166654d61746820737562206661696c656400000000000000000000000000 00002521: PUSH1 0x44 00002523: DUP3 00002524: ADD 00002525: MSTORE 00002526: SWAP1 00002527: MLOAD 00002528: SWAP1 00002529: DUP2 0000252a: SWAP1 0000252b: SUB 0000252c: PUSH1 0x64 0000252e: ADD 0000252f: SWAP1 00002530: REVERT 00002531: JUMPDEST 00002532: POP 00002533: SWAP1 00002534: SUB 00002535: SWAP1 00002536: JUMP 00002537: JUMPDEST 00002538: DUP2 00002539: DUP2 0000253a: ADD 0000253b: DUP3 0000253c: DUP2 0000253d: LT 0000253e: ISZERO 0000253f: PUSH2 0x24d1 00002542: JUMPI 00002543: PUSH1 0x40 00002545: DUP1 00002546: MLOAD 00002547: PUSH1 0xe5 00002549: PUSH1 0x02 0000254b: EXP 0000254c: PUSH3 0x461bcd 00002550: MUL 00002551: DUP2 00002552: MSTORE 00002553: PUSH1 0x20 00002555: PUSH1 0x04 00002557: DUP3 00002558: ADD 00002559: MSTORE 0000255a: PUSH1 0x13 0000255c: PUSH1 0x24 0000255e: DUP3 0000255f: ADD 00002560: MSTORE 00002561: PUSH32 0x536166654d61746820616464206661696c656400000000000000000000000000 00002582: PUSH1 0x44 00002584: DUP3 00002585: ADD 00002586: MSTORE 00002587: SWAP1 00002588: MLOAD 00002589: SWAP1 0000258a: DUP2 0000258b: SWAP1 0000258c: SUB 0000258d: PUSH1 0x64 0000258f: ADD 00002590: SWAP1 00002591: REVERT 00002592: JUMPDEST 00002593: PUSH1 0x00 00002595: PUSH2 0x25c4 00002598: PUSH2 0x25a0 0000259b: DUP5 0000259c: PUSH2 0x25fd 0000259f: JUMP 000025a0: JUMPDEST 000025a1: PUSH2 0x25b8 000025a4: PUSH2 0x25b3 000025a7: DUP7 000025a8: DUP7 000025a9: PUSH4 0xffffffff 000025ae: PUSH2 0x2537 000025b1: AND 000025b2: JUMP 000025b3: JUMPDEST 000025b4: PUSH2 0x25fd 000025b7: JUMP 000025b8: JUMPDEST 000025b9: SWAP1 000025ba: PUSH4 0xffffffff 000025bf: PUSH2 0x24d7 000025c2: AND 000025c3: JUMP 000025c4: JUMPDEST 000025c5: SWAP4 000025c6: SWAP3 000025c7: POP 000025c8: POP 000025c9: POP 000025ca: JUMP 000025cb: JUMPDEST 000025cc: DUP1 000025cd: EXTCODESIZE 000025ce: DUP1 000025cf: ISZERO 000025d0: SWAP1 000025d1: JUMPDEST 000025d2: POP 000025d3: SWAP2 000025d4: SWAP1 000025d5: POP 000025d6: JUMP 000025d7: JUMPDEST 000025d8: PUSH1 0x00 000025da: PUSH2 0x25c4 000025dd: PUSH2 0x25f4 000025e0: PUSH2 0x25ef 000025e3: DUP6 000025e4: DUP6 000025e5: PUSH4 0xffffffff 000025ea: PUSH2 0x24d7 000025ed: AND 000025ee: JUMP 000025ef: JUMPDEST 000025f0: PUSH2 0x2681 000025f3: JUMP 000025f4: JUMPDEST 000025f5: PUSH2 0x25b8 000025f8: DUP6 000025f9: PUSH2 0x2681 000025fc: JUMP 000025fd: JUMPDEST 000025fe: PUSH1 0x00 00002600: PUSH4 0x09502f90 00002605: PUSH2 0x2671 00002608: PUSH14 0x03b2a1d15167e7c5699bfde00000 00002617: PUSH2 0x25b8 0000261a: PUSH2 0x266c 0000261d: PUSH27 0x0dac7055469777a6122ee4310dd6c14410500f2904840000000000 00002639: PUSH2 0x09c6 0000263c: PUSH12 0x01027e72f1f1281308800000 00002649: PUSH2 0x2660 0000264c: DUP11 0000264d: PUSH8 0x0de0b6b3a7640000 00002656: PUSH4 0xffffffff 0000265b: PUSH2 0x245a 0000265e: AND 0000265f: JUMP 00002660: JUMPDEST 00002661: SWAP1 00002662: PUSH4 0xffffffff 00002667: PUSH2 0x245a 0000266a: AND 0000266b: JUMP 0000266c: JUMPDEST 0000266d: PUSH2 0x26ee 00002670: JUMP 00002671: JUMPDEST 00002672: DUP2 00002673: ISZERO 00002674: ISZERO 00002675: PUSH2 0x267a 00002678: JUMPI 00002679: INVALID 0000267a: JUMPDEST 0000267b: DIV 0000267c: SWAP3 0000267d: SWAP2 0000267e: POP 0000267f: POP 00002680: JUMP 00002681: JUMPDEST 00002682: PUSH1 0x00 00002684: PUSH2 0x2694 00002687: PUSH8 0x0de0b6b3a7640000 00002690: PUSH2 0x2741 00002693: JUMP 00002694: JUMPDEST 00002695: PUSH2 0x2671 00002698: PUSH1 0x02 0000269a: PUSH2 0x26c7 0000269d: PUSH2 0x26b4 000026a0: DUP7 000026a1: PUSH8 0x0de0b6b3a7640000 000026aa: PUSH4 0xffffffff 000026af: PUSH2 0x245a 000026b2: AND 000026b3: JUMP 000026b4: JUMPDEST 000026b5: PUSH6 0x886c8f673070 000026bc: SWAP1 000026bd: PUSH4 0xffffffff 000026c2: PUSH2 0x245a 000026c5: AND 000026c6: JUMP 000026c7: JUMPDEST 000026c8: DUP2 000026c9: ISZERO 000026ca: ISZERO 000026cb: PUSH2 0x26d0 000026ce: JUMPI 000026cf: INVALID 000026d0: JUMPDEST 000026d1: DIV 000026d2: PUSH2 0x09c6 000026d5: PUSH2 0x26dd 000026d8: DUP7 000026d9: PUSH2 0x2741 000026dc: JUMP 000026dd: JUMPDEST 000026de: PUSH4 0x04a817c8 000026e3: SWAP1 000026e4: PUSH4 0xffffffff 000026e9: PUSH2 0x245a 000026ec: AND 000026ed: JUMP 000026ee: JUMPDEST 000026ef: PUSH1 0x00 000026f1: DUP1 000026f2: PUSH1 0x02 000026f4: PUSH2 0x26fe 000026f7: DUP5 000026f8: PUSH1 0x01 000026fa: PUSH2 0x2537 000026fd: JUMP 000026fe: JUMPDEST 000026ff: DUP2 00002700: ISZERO 00002701: ISZERO 00002702: PUSH2 0x2707 00002705: JUMPI 00002706: INVALID 00002707: JUMPDEST 00002708: DIV 00002709: SWAP1 0000270a: POP 0000270b: DUP3 0000270c: SWAP2 0000270d: POP 0000270e: JUMPDEST 0000270f: DUP2 00002710: DUP2 00002711: LT 00002712: ISZERO 00002713: PUSH2 0x25d1 00002716: JUMPI 00002717: DUP1 00002718: SWAP2 00002719: POP 0000271a: PUSH1 0x02 0000271c: PUSH2 0x2730 0000271f: DUP3 00002720: DUP6 00002721: DUP2 00002722: ISZERO 00002723: ISZERO 00002724: PUSH2 0x2729 00002727: JUMPI 00002728: INVALID 00002729: JUMPDEST 0000272a: DIV 0000272b: DUP4 0000272c: PUSH2 0x2537 0000272f: JUMP 00002730: JUMPDEST 00002731: DUP2 00002732: ISZERO 00002733: ISZERO 00002734: PUSH2 0x2739 00002737: JUMPI 00002738: INVALID 00002739: JUMPDEST 0000273a: DIV 0000273b: SWAP1 0000273c: POP 0000273d: PUSH2 0x270e 00002740: JUMP 00002741: JUMPDEST 00002742: PUSH1 0x00 00002744: PUSH2 0x24d1 00002747: DUP3 00002748: DUP4 00002749: PUSH2 0x245a 0000274c: JUMP 0000274d: JUMPDEST 0000274e: PUSH1 0x40 00002750: DUP1 00002751: MLOAD 00002752: DUP1 00002753: DUP3 00002754: ADD 00002755: DUP3 00002756: MSTORE 00002757: SWAP1 00002758: PUSH1 0x02 0000275a: SWAP1 0000275b: DUP3 0000275c: SWAP1 0000275d: DUP1 0000275e: CODESIZE 0000275f: DUP4 00002760: CODECOPY 00002761: POP 00002762: SWAP2 00002763: SWAP3 00002764: SWAP2 00002765: POP 00002766: POP 00002767: JUMP 00002768: JUMPDEST 00002769: PUSH1 0x60 0000276b: PUSH1 0x40 0000276d: MLOAD 0000276e: SWAP1 0000276f: DUP2 00002770: ADD 00002771: PUSH1 0x40 00002773: MSTORE 00002774: DUP1 00002775: PUSH1 0x03 00002777: SWAP1 00002778: PUSH1 0x20 0000277a: DUP3 0000277b: MUL 0000277c: DUP1 0000277d: CODESIZE 0000277e: DUP4 0000277f: CODECOPY 00002780: POP 00002781: SWAP2 00002782: SWAP3 00002783: SWAP2 00002784: POP 00002785: POP 00002786: JUMP 00002787: JUMPDEST 00002788: PUSH1 0xc0 0000278a: PUSH1 0x40 0000278c: MLOAD 0000278d: SWAP1 0000278e: DUP2 0000278f: ADD 00002790: PUSH1 0x40 00002792: MSTORE 00002793: DUP1 00002794: PUSH1 0x06 00002796: SWAP1 00002797: PUSH1 0x20 00002799: DUP3 0000279a: MUL 0000279b: DUP1 0000279c: CODESIZE 0000279d: DUP4 0000279e: CODECOPY 0000279f: POP 000027a0: SWAP2 000027a1: SWAP3 000027a2: SWAP2 000027a3: POP 000027a4: POP 000027a5: JUMP 000027a6: JUMPDEST 000027a7: PUSH2 0x0160 000027aa: PUSH1 0x40 000027ac: MLOAD 000027ad: SWAP1 000027ae: DUP2 000027af: ADD 000027b0: PUSH1 0x40 000027b2: MSTORE 000027b3: DUP1 000027b4: PUSH1 0x0b 000027b6: SWAP1 000027b7: PUSH1 0x20 000027b9: DUP3 000027ba: MUL 000027bb: DUP1 000027bc: CODESIZE 000027bd: DUP4 000027be: CODECOPY 000027bf: POP 000027c0: SWAP2 000027c1: SWAP3 000027c2: SWAP2 000027c3: POP 000027c4: POP 000027c5: JUMP 000027c6: JUMPDEST 000027c7: PUSH1 0x80 000027c9: PUSH1 0x40 000027cb: MLOAD 000027cc: SWAP1 000027cd: DUP2 000027ce: ADD 000027cf: PUSH1 0x40 000027d1: MSTORE 000027d2: DUP1 000027d3: PUSH1 0x04 000027d5: SWAP1 000027d6: PUSH1 0x20 000027d8: DUP3 000027d9: MUL 000027da: DUP1 000027db: CODESIZE 000027dc: DUP4 000027dd: CODECOPY 000027de: POP 000027df: SWAP2 000027e0: SWAP3 000027e1: SWAP2 000027e2: POP 000027e3: POP 000027e4: JUMP 000027e5: STOP 000027e6: SLOAD 000027e7: PUSH9 0x652067616d65206861 000027f1: PUSH20 0x6e27742073746172746564207965742e00000000 00002806: PUSH20 0x6f7272792068756d616e73206f6e6c7900000000 0000281b: STOP 0000281c: STOP 0000281d: STOP 0000281e: STOP 0000281f: STOP 00002820: STOP 00002821: STOP 00002822: STOP 00002823: STOP 00002824: STOP 00002825: STOP 00002826: LOG1 00002827: PUSH6 0x627a7a723058 0000282e: KECCAK256 0000282f: UNKNOWN(0xE0) 00002830: TSTORE 00002831: PUSH1 0xb4 00002833: UNKNOWN(0x4C) 00002834: UNKNOWN(0xE4) 00002835: SWAP1 00002836: UNKNOWN(0xBD) 00002837: XOR 00002838: PUSH32
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | slither | Plague.feeWithdraw() (contracts/Contract.sol#553-571) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "feeWithdraw",
"type": "function",
"source_mapping": {
"lines": [
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571
],
"start": 19966,
"length": 483,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-srasxypo/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Plague",
"type": "contract",
"source_mapping": {
"lines": [
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659
],
"start": 3700,
"length": 19659,
"ending_column": 10,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 17,
"filename_absolute": "/tmp/slither-srasxypo/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "feeWithdraw()"
}
},
{
"name": "receiver.transfer(_total.sub(_withdrawed))",
"type": "node",
"source_mapping": {
"lines": [
566,
567,
568,
569,
570
],
"start": 20400,
"length": 42,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 95,
"filename_absolute": "/tmp/slither-srasxypo/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "feeWithdraw",
"type": "function",
"source_mapping": {
"lines": [
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571
],
"start": 19966,
"length": 483,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-srasxypo/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Plague",
"type": "contract",
"source_mapping": {
"lines": [
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659
],
"start": 3700,
"length": 19659,
"ending_column": 10,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 17,
"filename_absolute": "/tmp/slither-srasxypo/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "feeWithdraw()"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "feeWithdraw",
"type": "function",
"lines": [
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571
]
},
{
"file": "contracts/Contract.sol",
"name": "receiver.transfer(_total.sub(_withdrawed))",
"type": "node",
"lines": [
566,
567,
568,
569,
570
]
}
],
"description": "Plague.feeWithdraw() (contracts/Contract.sol#553-571) sends eth to arbitrary user\n\tDangerous calls:\n\t- receiver.transfer(_total.sub(_withdrawed)) (contracts/Contract.sol#566-570)"
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xd3d493f3cd38433cf192264acc496674c5440ad335b1834dc5d65072d705e262
call_targets:
0xf317a365cfef0aa4357abd057048808a1d430402
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd3d493f3cd38433cf192264acc496674c5440ad335b1834dc5d65072d705e262",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf317a365cfef0aa4357abd057048808a1d430402"
],
"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": "0x018a25e8",
"selector": "0x018a25e8",
"calldata_variants": [
"0x018a25e8",
"0x018a25e80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3c28308a",
"selector": "0x3c28308a",
"calldata_variants": [
"0x3c28308a",
"0x3c28308a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3c3c9c23",
"selector": "0x3c3c9c23",
"calldata_variants": [
"0x3c3c9c23",
"0x3c3c9c230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4311de8f",
"selector": "0x4311de8f",
"calldata_variants": [
"0x4311de8f",
"0x4311de8f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x547e3f06",
"selector": "0x547e3f06",
"calldata_variants": [
"0x547e3f06",
"0x547e3f060000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6561e6ba",
"selector": "0x6561e6ba",
"calldata_variants": [
"0x6561e6ba",
"0x6561e6ba0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x747dff42",
"selector": "0x747dff42",
"calldata_variants": [
"0x747dff42",
"0x747dff420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7e8ac590",
"selector": "0x7e8ac590",
"calldata_variants": [
"0x7e8ac590",
"0x7e8ac5900000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2410,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3377,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5463,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xd3d493f3cd38433cf192264acc496674c5440ad335b1834dc5d65072d705e262
call_targets:
0xf317a365cfef0aa4357abd057048808a1d430402
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xd3d493f3cd38433cf192264acc496674c5440ad335b1834dc5d65072d705e262",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xf317a365cfef0aa4357abd057048808a1d430402"
],
"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": "0x018a25e8",
"selector": "0x018a25e8",
"calldata_variants": [
"0x018a25e8",
"0x018a25e80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3c28308a",
"selector": "0x3c28308a",
"calldata_variants": [
"0x3c28308a",
"0x3c28308a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3c3c9c23",
"selector": "0x3c3c9c23",
"calldata_variants": [
"0x3c3c9c23",
"0x3c3c9c230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4311de8f",
"selector": "0x4311de8f",
"calldata_variants": [
"0x4311de8f",
"0x4311de8f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x547e3f06",
"selector": "0x547e3f06",
"calldata_variants": [
"0x547e3f06",
"0x547e3f060000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6561e6ba",
"selector": "0x6561e6ba",
"calldata_variants": [
"0x6561e6ba",
"0x6561e6ba0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x747dff42",
"selector": "0x747dff42",
"calldata_variants": [
"0x747dff42",
"0x747dff420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7e8ac590",
"selector": "0x7e8ac590",
"calldata_variants": [
"0x7e8ac590",
"0x7e8ac5900000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2410,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3377,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5463,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| low | access_control | codex | `onlyHuman` contract check is bypassable via constructor calls | 65 | no | — |
viewevidence_json{
"evidence": "`onlyHuman` relies on `extcodesize(msg.sender)` being 0 to allow calls.",
"locations": [
"contracts/Contract.sol:196",
"contracts/Contract.sol:198",
"contracts/Contract.sol:201",
"contracts/Contract.sol:398",
"contracts/Contract.sol:411"
],
"recommendation": "Do not rely on `extcodesize` to block contracts. If contract interaction must be restricted, use explicit allowlists or redesign the game rules to be contract-agnostic.",
"exploit_scenario": "An attacker deploys a contract that calls `buyKeyByAddr` or the fallback during its constructor. During construction, `extcodesize(msg.sender)` is 0, so the `onlyHuman` check passes, allowing automated/contract interaction despite the intended restriction. This can be used by bots for faster buys or coordinated actions that the design tries to prevent."
}
|
| low | oracle | codex | Game timing and price logic depend on block.timestamp manipulation | 65 | no | — |
viewevidence_json{
"evidence": "Round transitions, leader selection timing, and second-stage pricing are all driven by `now` comparisons and arithmetic.",
"locations": [
"contracts/Contract.sol:243",
"contracts/Contract.sol:247",
"contracts/Contract.sol:304",
"contracts/Contract.sol:351",
"contracts/Contract.sol:460",
"contracts/Contract.sol:649",
"contracts/Contract.sol:667"
],
"recommendation": "Avoid using `block.timestamp` as a strict boundary for payout-critical logic. Consider using larger time buffers, block.number-based windows, or commit/reveal mechanisms for finalization-sensitive outcomes.",
"exploit_scenario": "Miners can slightly skew `now` to extend or shorten rounds, influence when the infection/development stages end, and affect who becomes the final leader or the price paid in the second stage. This can be exploited near round boundaries to gain a payout advantage."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 5
}
|