019be3d6-8489-7000-bd40-224825ebd461
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 |
|---|---|---|---|---|
| 41072 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41073 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41074 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41075 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41076 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41077 | detector.run | complete | 1 / 3 | 2 months ago |
| 41078 | validation.fork | complete | 1 / 3 | 2 months ago |
| 41419 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 41420 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-zaf6gzsb)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-zaf6gzsb)
TimelockController._execute(address,uint256,bytes) (contracts/Contract.sol#1485-1491) sends eth to arbitrary user
Dangerous calls:
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) has bitwise-xor operator ^ instead of the exponentiation operator **:
- inverse = (3 * denominator) ^ 2 (contracts/Contract.sol#505-506)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation
Reentrancy in TimelockController.execute(address,uint256,bytes,bytes32,bytes32) (contracts/Contract.sol#1437-1448):
External calls:
- _execute(target,value,payload) (contracts/Contract.sol#1447)
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
State variables written after the call(s):
- _afterCall(id) (contracts/Contract.sol#1448)
- _timestamps[id] = _DONE_TIMESTAMP (contracts/Contract.sol#1510)
TimelockController._timestamps (contracts/Contract.sol#1189-1196) can be used in cross function reentrancies:
- TimelockController._afterCall(bytes32) (contracts/Contract.sol#1507-1510)
- TimelockController._schedule(bytes32,uint256) (contracts/Contract.sol#1406-1414)
- TimelockController.cancel(bytes32) (contracts/Contract.sol#1418-1427)
- TimelockController.getTimestamp(bytes32) (contracts/Contract.sol#1316-1317)
Reentrancy in TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (contracts/Contract.sol#1458-1483):
External calls:
- _execute(target,value,payload) (contracts/Contract.sol#1478-1480)
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
State variables written after the call(s):
- _afterCall(id) (contracts/Contract.sol#1483)
- _timestamps[id] = _DONE_TIMESTAMP (contracts/Contract.sol#1510)
TimelockController._timestamps (contracts/Contract.sol#1189-1196) can be used in cross function reentrancies:
- TimelockController._afterCall(bytes32) (contracts/Contract.sol#1507-1510)
- TimelockController._schedule(bytes32,uint256) (contracts/Contract.sol#1406-1414)
- TimelockController.cancel(bytes32) (contracts/Contract.sol#1418-1427)
- TimelockController.getTimestamp(bytes32) (contracts/Contract.sol#1316-1317)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse = (3 * denominator) ^ 2 (contracts/Contract.sol#505-506)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse *= 2 - denominator * inverse (contracts/Contract.sol#512)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse *= 2 - denominator * inverse (contracts/Contract.sol#513)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse *= 2 - denominator * inverse (contracts/Contract.sol#514)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse *= 2 - denominator * inverse (contracts/Contract.sol#515-517)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- denominator = denominator / twos (contracts/Contract.sol#490-491)
- inverse *= 2 - denominator * inverse (contracts/Contract.sol#517)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (contracts/Contract.sol#493)
- result = prod0 * inverse (contracts/Contract.sol#523)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
TimelockController.isOperationDone(bytes32) (contracts/Contract.sol#1305-1311) uses a dangerous strict equality:
- getTimestamp(id) == _DONE_TIMESTAMP (contracts/Contract.sol#1309-1311)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
TimelockController._execute(address,uint256,bytes) (contracts/Contract.sol#1485-1491) has external calls inside a loop: (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
Calls stack containing the loop:
TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in TimelockController.execute(address,uint256,bytes,bytes32,bytes32) (contracts/Contract.sol#1437-1448):
External calls:
- _execute(target,value,payload) (contracts/Contract.sol#1447)
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
Event emitted after the call(s):
- CallExecuted(id,0,target,value,payload) (contracts/Contract.sol#1448)
Reentrancy in TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (contracts/Contract.sol#1458-1483):
External calls:
- _execute(target,value,payload) (contracts/Contract.sol#1478-1480)
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
Event emitted after the call(s):
- CallExecuted(id,i,target,value,payload) (contracts/Contract.sol#1480-1482)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
TimelockController.isOperation(bytes32) (contracts/Contract.sol#1283-1287) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) > 0 (contracts/Contract.sol#1287)
TimelockController.isOperationPending(bytes32) (contracts/Contract.sol#1291-1296) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) > _DONE_TIMESTAMP (contracts/Contract.sol#1296)
TimelockController.isOperationReady(bytes32) (contracts/Contract.sol#1297-1302) uses timestamp for comparisons
Dangerous comparisons:
- timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp (contracts/Contract.sol#1301-1302)
TimelockController.isOperationDone(bytes32) (contracts/Contract.sol#1305-1311) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) == _DONE_TIMESTAMP (contracts/Contract.sol#1309-1311)
TimelockController._beforeCall(bytes32,bytes32) (contracts/Contract.sol#1495-1505) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(predecessor == bytes32(0) || isOperationDone(predecessor),TimelockController: missing dependency) (contracts/Contract.sol#1501-1505)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Address._revert(bytes,string) (contracts/Contract.sol#223-237) uses assembly
- INLINE ASM (contracts/Contract.sol#234-236)
Math.mulDiv(uint256,uint256,uint256) (contracts/Contract.sol#443-524) uses assembly
- INLINE ASM (contracts/Contract.sol#458-460)
- INLINE ASM (contracts/Contract.sol#472-480)
- INLINE ASM (contracts/Contract.sol#488-496)
Strings.toString(uint256) (contracts/Contract.sol#734-761) uses assembly
- INLINE ASM (contracts/Contract.sol#740-745)
- INLINE ASM (contracts/Contract.sol#750-757)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
3 different versions of Solidity are used:
- Version constraint ^0.8.1 is used by:
-^0.8.1 (contracts/Contract.sol#4-6)
- Version constraint ^0.8.0 is used by:
-^0.8.0 (contracts/Contract.sol#240-242)
-^0.8.0 (contracts/Contract.sol#271)
-^0.8.0 (contracts/Contract.sol#301)
-^0.8.0 (contracts/Contract.sol#356-357)
-^0.8.0 (contracts/Contract.sol#388)
-^0.8.0 (contracts/Contract.sol#723)
-^0.8.0 (contracts/Contract.sol#797)
-^0.8.0 (contracts/Contract.sol#825)
-^0.8.0 (contracts/Contract.sol#910)
-^0.8.0 (contracts/Contract.sol#1149-1150)
- Version constraint ^0.8.13 is used by:
-^0.8.13 (contracts/Contract.sol#1555)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
Context._msgData() (contracts/Contract.sol#813-817) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.1 (contracts/Contract.sol#4-6)
Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.0 (contracts/Contract.sol#240-242)
- ^0.8.0 (contracts/Contract.sol#271)
- ^0.8.0 (contracts/Contract.sol#301)
- ^0.8.0 (contracts/Contract.sol#356-357)
- ^0.8.0 (contracts/Contract.sol#388)
- ^0.8.0 (contracts/Contract.sol#723)
- ^0.8.0 (contracts/Contract.sol#797)
- ^0.8.0 (contracts/Contract.sol#825)
- ^0.8.0 (contracts/Contract.sol#910)
- ^0.8.0 (contracts/Contract.sol#1149-1150)
Version constraint ^0.8.13 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- StorageWriteRemovalBeforeConditionalTermination
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- InlineAssemblyMemorySideEffects
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation.
It is used by:
- ^0.8.13 (contracts/Contract.sol#1555)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#60-66):
- (success,None) = recipient.call{value: amount}() (contracts/Contract.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#126-137):
- (success,returndata) = target.call{value: value}(data) (contracts/Contract.sol#135-136)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/Contract.sol#152-162):
- (success,returndata) = target.staticcall(data) (contracts/Contract.sol#157-159)
Low level call in Address.functionDelegateCall(address,bytes,string) (contracts/Contract.sol#177-186):
- (success,returndata) = target.delegatecall(data) (contracts/Contract.sol#180-183)
Low level call in TimelockController._execute(address,uint256,bytes) (contracts/Contract.sol#1485-1491):
- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
. analyzed (12 contracts with 100 detectors), 33 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.13",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.13",
"install_stderr": null,
"install_stdout": "Version '0.8.13' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-zaf6gzsb --allow-paths /tmp/slither-zaf6gzsb,/tmp/slither-zaf6gzsb/lib,/tmp/slither-zaf6gzsb/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 33,
"workspace_hash": "488563b02f65eee41735bc093f52e987b5979e9b2da600b3b2050c3c4254c401",
"duration_seconds": 1.3588783740997314,
"solc_version_requested": "0.8.17"
}
{"no_findings":false,"summary":"Found 1 access control risk in the timelock wrapper: the deployer is set as timelock admin and can change roles immediately outside the timelock schedule.","findings":[{"severity":"low","category":"access_control","title":"Deployer retains TIMELOCK_ADMIN_ROLE, enabling immediate role changes outside timelock","exploit_scenario":"If the deployer/admin key is compromised or malicious, it can instantly grant or revoke PROPOSER/EXECUTOR roles without going through the timelock, undermining governance assumptions (e.g., self-grant proposer/executor and schedule malicious operations with minimal delay).","recommendation":"Consider renouncing TIMELOCK_ADMIN_ROLE after initial setup or pass address(0) as the admin so role changes must go through timelock governance (or transfer admin to a multisig with clear operational controls).","evidence":"Constructor passes msg.sender as the admin to TimelockController.","locations":["contracts/Contract.sol:1620"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-x84h1k1q
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be480-e779-79a2-a115-b06bae7cd4b6
--------
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
**Locating AUDIT_BUNDLE.txt**
I'm focusing on finding and reading AUDIT_BUNDLE.txt to check for needed skills or instructions related to the task.
exec
/bin/bash -lc ls in /tmp/codex-x84h1k1q succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-x84h1k1q 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
================================================================================
// File: @openzeppelin/contracts/utils/Address.sol
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
thinking
**Identifying first-party code and assessing risks**
First-party code is mainly the BIGCAPTimelock wrapper, which inherits OpenZeppelin's TimelockController. The key risk is centralization since the deployer starts with admin privileges without renouncement, allowing full control without delay, though this is expected rather than a vulnerability.
thinking
**Classifying admin role risk as low severity**
The deployer retains the TIMELOCK_ADMIN_ROLE, enabling immediate role grants without delay, representing a centralization and access control risk but not a direct vulnerability. I'll report this as a low-severity finding with approximate file and line references while confirming no exploitable issues exist beyond this.
exec
/bin/bash -lc 'rg -n "contract BIGCAPTimelock" AUDIT_BUNDLE.txt' in /tmp/codex-x84h1k1q succeeded in 9ms:
1624:contract BIGCAPTimelock is TimelockController {
thinking
**Extracting relevant constructor lines**
I'm preparing to extract lines around 1618 to 1633 to examine the constructor, aiming to understand initialization details that may inform next implementation steps.
exec
/bin/bash -lc "sed -n '1618,1633p' AUDIT_BUNDLE.txt" in /tmp/codex-x84h1k1q succeeded in 6ms:
pragma solidity ^0.8.13;
contract BIGCAPTimelock is TimelockController {
constructor(uint256 minDelay, address[] memory proposers, address[] memory executors)
TimelockController(minDelay, proposers, executors, msg.sender)
{}
}
thinking
**Preparing to get accurate line numbers**
I'm planning to open the contracts/Timelock.sol file with line numbering to reference exact lines, using a line-numbering command for precision.
exec
/bin/bash -lc 'nl -ba contracts/Timelock.sol' in /tmp/codex-x84h1k1q exited 1 in 8ms:
nl: contracts/Timelock.sol: No such file or directory
thinking
**Noting presence of contracts directory**
exec
/bin/bash -lc 'rg --files' in /tmp/codex-x84h1k1q succeeded in 9ms:
codex-output-schema.json
AUDIT_BUNDLE.txt
contracts/Contract.sol
thinking
**Confirming Timelock is in Contract.sol**
Only one Solidity file exists named Contract.sol, which contains the Timelock code referenced by AUDIT_BUNDLE; I'll scan it for usage of "BIGCAPTimelock" with line numbers next.
exec
/bin/bash -lc 'rg -n "BIGCAPTimelock" contracts/Contract.sol' in /tmp/codex-x84h1k1q succeeded in 8ms:
1618:contract BIGCAPTimelock is TimelockController {
thinking
**Extracting lines containing numbers**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1614,1632p'" in /tmp/codex-x84h1k1q succeeded in 7ms:
1614
1615
1616
1617
1618 contract BIGCAPTimelock is TimelockController {
1619
1620 constructor(uint256 minDelay, address[] memory proposers, address[] memory executors)
1621
1622 TimelockController(minDelay, proposers, executors, msg.sender)
1623
1624 {}
1625
1626 }
thinking
**Flagging centralized admin risk**
The deployer keeps the TIMELOCK_ADMIN_ROLE, enabling immediate role grants and revocations outside the timelock delay, posing a low-severity centralization risk without an on-chain bug.
thinking
**Preparing detailed JSON finding**
I'm crafting a valid JSON report summarizing the low-severity access control risk where deployer keeps timelock admin role, including exploit scenario, evidence, and recommendation to renounce or disable admin post-deployment.
codex
{"no_findings":false,"summary":"Found 1 access control risk in the timelock wrapper: the deployer is set as timelock admin and can change roles immediately outside the timelock schedule.","findings":[{"severity":"low","category":"access_control","title":"Deployer retains TIMELOCK_ADMIN_ROLE, enabling immediate role changes outside timelock","exploit_scenario":"If the deployer/admin key is compromised or malicious, it can instantly grant or revoke PROPOSER/EXECUTOR roles without going through the timelock, undermining governance assumptions (e.g., self-grant proposer/executor and schedule malicious operations with minimal delay).","recommendation":"Consider renouncing TIMELOCK_ADMIN_ROLE after initial setup or pass address(0) as the admin so role changes must go through timelock governance (or transfer admin to a multisig with clear operational controls).","evidence":"Constructor passes msg.sender as the admin to TimelockController.","locations":["contracts/Contract.sol:1620"]}]}
tokens used
18,262
{
"codex": {
"ran_at": "2026-01-22T07:01:23.305521+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 1 access control risk in the timelock wrapper: the deployer is set as timelock admin and can change roles immediately outside the timelock schedule.",
"raw_final": {
"summary": "Found 1 access control risk in the timelock wrapper: the deployer is set as timelock admin and can change roles immediately outside the timelock schedule.",
"findings": [
{
"title": "Deployer retains TIMELOCK_ADMIN_ROLE, enabling immediate role changes outside timelock",
"category": "access_control",
"evidence": "Constructor passes msg.sender as the admin to TimelockController.",
"severity": "low",
"locations": [
"contracts/Contract.sol:1620"
],
"recommendation": "Consider renouncing TIMELOCK_ADMIN_ROLE after initial setup or pass address(0) as the admin so role changes must go through timelock governance (or transfer admin to a multisig with clear operational controls).",
"exploit_scenario": "If the deployer/admin key is compromised or malicious, it can instantly grant or revoke PROPOSER/EXECUTOR roles without going through the timelock, undermining governance assumptions (e.g., self-grant proposer/executor and schedule malicious operations with minimal delay)."
}
],
"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 0x01bb 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8065657f 00000019: GT 0000001a: PUSH2 0x00ec 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xbc197c81 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd547741f 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd547741f 0000003a: EQ 0000003b: PUSH2 0x0582 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe38335e5 00000045: EQ 00000046: PUSH2 0x05a2 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf23a6e61 00000050: EQ 00000051: PUSH2 0x05b5 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf27a0c92 0000005b: EQ 0000005c: PUSH2 0x05e1 0000005f: JUMPI 00000060: PUSH1 0x00 00000062: DUP1 00000063: REVERT 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xbc197c81 0000006b: EQ 0000006c: PUSH2 0x0509 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xc4d252f5 00000076: EQ 00000077: PUSH2 0x0535 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xd45c4435 00000081: EQ 00000082: PUSH2 0x0555 00000085: JUMPI 00000086: PUSH1 0x00 00000088: DUP1 00000089: REVERT 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0x91d14854 00000091: GT 00000092: PUSH2 0x00c6 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x91d14854 0000009c: EQ 0000009d: PUSH2 0x0480 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xa217fddf 000000a7: EQ 000000a8: PUSH2 0x04a0 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xb08e51c0 000000b2: EQ 000000b3: PUSH2 0x04b5 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xb1c5f427 000000bd: EQ 000000be: PUSH2 0x04e9 000000c1: JUMPI 000000c2: PUSH1 0x00 000000c4: DUP1 000000c5: REVERT 000000c6: JUMPDEST 000000c7: DUP1 000000c8: PUSH4 0x8065657f 000000cd: EQ 000000ce: PUSH2 0x040c 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0x8f2a0bb0 000000d8: EQ 000000d9: PUSH2 0x042c 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x8f61f4f5 000000e3: EQ 000000e4: PUSH2 0x044c 000000e7: JUMPI 000000e8: PUSH1 0x00 000000ea: DUP1 000000eb: REVERT 000000ec: JUMPDEST 000000ed: DUP1 000000ee: PUSH4 0x248a9ca3 000000f3: GT 000000f4: PUSH2 0x0159 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x31d50750 000000fe: GT 000000ff: PUSH2 0x0133 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x31d50750 00000109: EQ 0000010a: PUSH2 0x038c 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x36568abe 00000114: EQ 00000115: PUSH2 0x03ac 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x584b153e 0000011f: EQ 00000120: PUSH2 0x03cc 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x64d62353 0000012a: EQ 0000012b: PUSH2 0x03ec 0000012e: JUMPI 0000012f: PUSH1 0x00 00000131: DUP1 00000132: REVERT 00000133: JUMPDEST 00000134: DUP1 00000135: PUSH4 0x248a9ca3 0000013a: EQ 0000013b: PUSH2 0x030b 0000013e: JUMPI 0000013f: DUP1 00000140: PUSH4 0x2ab0f529 00000145: EQ 00000146: PUSH2 0x033b 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x2f2ff15d 00000150: EQ 00000151: PUSH2 0x036c 00000154: JUMPI 00000155: PUSH1 0x00 00000157: DUP1 00000158: REVERT 00000159: JUMPDEST 0000015a: DUP1 0000015b: PUSH4 0x0d3cf6fc 00000160: GT 00000161: PUSH2 0x0195 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x0d3cf6fc 0000016b: EQ 0000016c: PUSH2 0x0260 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x134008d3 00000176: EQ 00000177: PUSH2 0x0294 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x13bc9f20 00000181: EQ 00000182: PUSH2 0x02a7 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x150b7a02 0000018c: EQ 0000018d: PUSH2 0x02c7 00000190: JUMPI 00000191: PUSH1 0x00 00000193: DUP1 00000194: REVERT 00000195: JUMPDEST 00000196: DUP1 00000197: PUSH4 0x01d5062a 0000019c: EQ 0000019d: PUSH2 0x01c7 000001a0: JUMPI 000001a1: DUP1 000001a2: PUSH4 0x01ffc9a7 000001a7: EQ 000001a8: PUSH2 0x01e9 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0x07bd0265 000001b2: EQ 000001b3: PUSH2 0x021e 000001b6: JUMPI 000001b7: PUSH1 0x00 000001b9: DUP1 000001ba: REVERT 000001bb: JUMPDEST 000001bc: CALLDATASIZE 000001bd: PUSH2 0x01c2 000001c0: JUMPI 000001c1: STOP 000001c2: JUMPDEST 000001c3: PUSH1 0x00 000001c5: DUP1 000001c6: REVERT 000001c7: JUMPDEST 000001c8: CALLVALUE 000001c9: DUP1 000001ca: ISZERO 000001cb: PUSH2 0x01d3 000001ce: JUMPI 000001cf: PUSH1 0x00 000001d1: DUP1 000001d2: REVERT 000001d3: JUMPDEST 000001d4: POP 000001d5: PUSH2 0x01e7 000001d8: PUSH2 0x01e2 000001db: CALLDATASIZE 000001dc: PUSH1 0x04 000001de: PUSH2 0x13c0 000001e1: JUMP 000001e2: JUMPDEST 000001e3: PUSH2 0x05f6 000001e6: JUMP 000001e7: JUMPDEST 000001e8: STOP 000001e9: JUMPDEST 000001ea: CALLVALUE 000001eb: DUP1 000001ec: ISZERO 000001ed: PUSH2 0x01f5 000001f0: JUMPI 000001f1: PUSH1 0x00 000001f3: DUP1 000001f4: REVERT 000001f5: JUMPDEST 000001f6: POP 000001f7: PUSH2 0x0209 000001fa: PUSH2 0x0204 000001fd: CALLDATASIZE 000001fe: PUSH1 0x04 00000200: PUSH2 0x1434 00000203: JUMP 00000204: JUMPDEST 00000205: PUSH2 0x068b 00000208: JUMP 00000209: JUMPDEST 0000020a: PUSH1 0x40 0000020c: MLOAD 0000020d: SWAP1 0000020e: ISZERO 0000020f: ISZERO 00000210: DUP2 00000211: MSTORE 00000212: PUSH1 0x20 00000214: ADD 00000215: JUMPDEST 00000216: PUSH1 0x40 00000218: MLOAD 00000219: DUP1 0000021a: SWAP2 0000021b: SUB 0000021c: SWAP1 0000021d: RETURN 0000021e: JUMPDEST 0000021f: CALLVALUE 00000220: DUP1 00000221: ISZERO 00000222: PUSH2 0x022a 00000225: JUMPI 00000226: PUSH1 0x00 00000228: DUP1 00000229: REVERT 0000022a: JUMPDEST 0000022b: POP 0000022c: PUSH2 0x0252 0000022f: PUSH32 0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63 00000250: DUP2 00000251: JUMP 00000252: JUMPDEST 00000253: PUSH1 0x40 00000255: MLOAD 00000256: SWAP1 00000257: DUP2 00000258: MSTORE 00000259: PUSH1 0x20 0000025b: ADD 0000025c: PUSH2 0x0215 0000025f: JUMP 00000260: JUMPDEST 00000261: CALLVALUE 00000262: DUP1 00000263: ISZERO 00000264: PUSH2 0x026c 00000267: JUMPI 00000268: PUSH1 0x00 0000026a: DUP1 0000026b: REVERT 0000026c: JUMPDEST 0000026d: POP 0000026e: PUSH2 0x0252 00000271: PUSH32 0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5 00000292: DUP2 00000293: JUMP 00000294: JUMPDEST 00000295: PUSH2 0x01e7 00000298: PUSH2 0x02a2 0000029b: CALLDATASIZE 0000029c: PUSH1 0x04 0000029e: PUSH2 0x145e 000002a1: JUMP 000002a2: JUMPDEST 000002a3: PUSH2 0x06b6 000002a6: JUMP 000002a7: JUMPDEST 000002a8: CALLVALUE 000002a9: DUP1 000002aa: ISZERO 000002ab: PUSH2 0x02b3 000002ae: JUMPI 000002af: PUSH1 0x00 000002b1: DUP1 000002b2: REVERT 000002b3: JUMPDEST 000002b4: POP 000002b5: PUSH2 0x0209 000002b8: PUSH2 0x02c2 000002bb: CALLDATASIZE 000002bc: PUSH1 0x04 000002be: PUSH2 0x14c9 000002c1: JUMP 000002c2: JUMPDEST 000002c3: PUSH2 0x076b 000002c6: JUMP 000002c7: JUMPDEST 000002c8: CALLVALUE 000002c9: DUP1 000002ca: ISZERO 000002cb: PUSH2 0x02d3 000002ce: JUMPI 000002cf: PUSH1 0x00 000002d1: DUP1 000002d2: REVERT 000002d3: JUMPDEST 000002d4: POP 000002d5: PUSH2 0x02f2 000002d8: PUSH2 0x02e2 000002db: CALLDATASIZE 000002dc: PUSH1 0x04 000002de: PUSH2 0x1597 000002e1: JUMP 000002e2: JUMPDEST 000002e3: PUSH4 0x0a85bd01 000002e8: PUSH1 0xe1 000002ea: SHL 000002eb: SWAP5 000002ec: SWAP4 000002ed: POP 000002ee: POP 000002ef: POP 000002f0: POP 000002f1: JUMP 000002f2: JUMPDEST 000002f3: PUSH1 0x40 000002f5: MLOAD 000002f6: PUSH1 0x01 000002f8: PUSH1 0x01 000002fa: PUSH1 0xe0 000002fc: SHL 000002fd: SUB 000002fe: NOT 000002ff: SWAP1 00000300: SWAP2 00000301: AND 00000302: DUP2 00000303: MSTORE 00000304: PUSH1 0x20 00000306: ADD 00000307: PUSH2 0x0215 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 0x0252 0000031c: PUSH2 0x0326 0000031f: CALLDATASIZE 00000320: PUSH1 0x04 00000322: PUSH2 0x14c9 00000325: JUMP 00000326: JUMPDEST 00000327: PUSH1 0x00 00000329: SWAP1 0000032a: DUP2 0000032b: MSTORE 0000032c: PUSH1 0x20 0000032e: DUP2 0000032f: SWAP1 00000330: MSTORE 00000331: PUSH1 0x40 00000333: SWAP1 00000334: KECCAK256 00000335: PUSH1 0x01 00000337: ADD 00000338: SLOAD 00000339: SWAP1 0000033a: JUMP 0000033b: JUMPDEST 0000033c: CALLVALUE 0000033d: DUP1 0000033e: ISZERO 0000033f: PUSH2 0x0347 00000342: JUMPI 00000343: PUSH1 0x00 00000345: DUP1 00000346: REVERT 00000347: JUMPDEST 00000348: POP 00000349: PUSH2 0x0209 0000034c: PUSH2 0x0356 0000034f: CALLDATASIZE 00000350: PUSH1 0x04 00000352: PUSH2 0x14c9 00000355: JUMP 00000356: JUMPDEST 00000357: PUSH1 0x00 00000359: SWAP1 0000035a: DUP2 0000035b: MSTORE 0000035c: PUSH1 0x01 0000035e: PUSH1 0x20 00000360: DUP2 00000361: SWAP1 00000362: MSTORE 00000363: PUSH1 0x40 00000365: SWAP1 00000366: SWAP2 00000367: KECCAK256 00000368: SLOAD 00000369: EQ 0000036a: SWAP1 0000036b: JUMP 0000036c: JUMPDEST 0000036d: CALLVALUE 0000036e: DUP1 0000036f: ISZERO 00000370: PUSH2 0x0378 00000373: JUMPI 00000374: PUSH1 0x00 00000376: DUP1 00000377: REVERT 00000378: JUMPDEST 00000379: POP 0000037a: PUSH2 0x01e7 0000037d: PUSH2 0x0387 00000380: CALLDATASIZE 00000381: PUSH1 0x04 00000383: PUSH2 0x15fe 00000386: JUMP 00000387: JUMPDEST 00000388: PUSH2 0x0791 0000038b: JUMP 0000038c: JUMPDEST 0000038d: CALLVALUE 0000038e: DUP1 0000038f: ISZERO 00000390: PUSH2 0x0398 00000393: JUMPI 00000394: PUSH1 0x00 00000396: DUP1 00000397: REVERT 00000398: JUMPDEST 00000399: POP 0000039a: PUSH2 0x0209 0000039d: PUSH2 0x03a7 000003a0: CALLDATASIZE 000003a1: PUSH1 0x04 000003a3: PUSH2 0x14c9 000003a6: JUMP 000003a7: JUMPDEST 000003a8: PUSH2 0x07bb 000003ab: JUMP 000003ac: JUMPDEST 000003ad: CALLVALUE 000003ae: DUP1 000003af: ISZERO 000003b0: PUSH2 0x03b8 000003b3: JUMPI 000003b4: PUSH1 0x00 000003b6: DUP1 000003b7: REVERT 000003b8: JUMPDEST 000003b9: POP 000003ba: PUSH2 0x01e7 000003bd: PUSH2 0x03c7 000003c0: CALLDATASIZE 000003c1: PUSH1 0x04 000003c3: PUSH2 0x15fe 000003c6: JUMP 000003c7: JUMPDEST 000003c8: PUSH2 0x07d4 000003cb: JUMP 000003cc: JUMPDEST 000003cd: CALLVALUE 000003ce: DUP1 000003cf: ISZERO 000003d0: PUSH2 0x03d8 000003d3: JUMPI 000003d4: PUSH1 0x00 000003d6: DUP1 000003d7: REVERT 000003d8: JUMPDEST 000003d9: POP 000003da: PUSH2 0x0209 000003dd: PUSH2 0x03e7 000003e0: CALLDATASIZE 000003e1: PUSH1 0x04 000003e3: PUSH2 0x14c9 000003e6: JUMP 000003e7: JUMPDEST 000003e8: PUSH2 0x0857 000003eb: JUMP 000003ec: JUMPDEST 000003ed: CALLVALUE 000003ee: DUP1 000003ef: ISZERO 000003f0: PUSH2 0x03f8 000003f3: JUMPI 000003f4: PUSH1 0x00 000003f6: DUP1 000003f7: REVERT 000003f8: JUMPDEST 000003f9: POP 000003fa: PUSH2 0x01e7 000003fd: PUSH2 0x0407 00000400: CALLDATASIZE 00000401: PUSH1 0x04 00000403: PUSH2 0x14c9 00000406: JUMP 00000407: JUMPDEST 00000408: PUSH2 0x086d 0000040b: JUMP 0000040c: JUMPDEST 0000040d: CALLVALUE 0000040e: DUP1 0000040f: ISZERO 00000410: PUSH2 0x0418 00000413: JUMPI 00000414: PUSH1 0x00 00000416: DUP1 00000417: REVERT 00000418: JUMPDEST 00000419: POP 0000041a: PUSH2 0x0252 0000041d: PUSH2 0x0427 00000420: CALLDATASIZE 00000421: PUSH1 0x04 00000423: PUSH2 0x145e 00000426: JUMP 00000427: JUMPDEST 00000428: PUSH2 0x0911 0000042b: JUMP 0000042c: JUMPDEST 0000042d: CALLVALUE 0000042e: DUP1 0000042f: ISZERO 00000430: PUSH2 0x0438 00000433: JUMPI 00000434: PUSH1 0x00 00000436: DUP1 00000437: REVERT 00000438: JUMPDEST 00000439: POP 0000043a: PUSH2 0x01e7 0000043d: PUSH2 0x0447 00000440: CALLDATASIZE 00000441: PUSH1 0x04 00000443: PUSH2 0x166e 00000446: JUMP 00000447: JUMPDEST 00000448: PUSH2 0x0950 0000044b: JUMP 0000044c: JUMPDEST 0000044d: CALLVALUE 0000044e: DUP1 0000044f: ISZERO 00000450: PUSH2 0x0458 00000453: JUMPI 00000454: PUSH1 0x00 00000456: DUP1 00000457: REVERT 00000458: JUMPDEST 00000459: POP 0000045a: PUSH2 0x0252 0000045d: PUSH32 0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1 0000047e: DUP2 0000047f: JUMP 00000480: JUMPDEST 00000481: CALLVALUE 00000482: DUP1 00000483: ISZERO 00000484: PUSH2 0x048c 00000487: JUMPI 00000488: PUSH1 0x00 0000048a: DUP1 0000048b: REVERT 0000048c: JUMPDEST 0000048d: POP 0000048e: PUSH2 0x0209 00000491: PUSH2 0x049b 00000494: CALLDATASIZE 00000495: PUSH1 0x04 00000497: PUSH2 0x15fe 0000049a: JUMP 0000049b: JUMPDEST 0000049c: PUSH2 0x0aa2 0000049f: JUMP 000004a0: JUMPDEST 000004a1: CALLVALUE 000004a2: DUP1 000004a3: ISZERO 000004a4: PUSH2 0x04ac 000004a7: JUMPI 000004a8: PUSH1 0x00 000004aa: DUP1 000004ab: REVERT 000004ac: JUMPDEST 000004ad: POP 000004ae: PUSH2 0x0252 000004b1: PUSH1 0x00 000004b3: DUP2 000004b4: JUMP 000004b5: JUMPDEST 000004b6: CALLVALUE 000004b7: DUP1 000004b8: ISZERO 000004b9: PUSH2 0x04c1 000004bc: JUMPI 000004bd: PUSH1 0x00 000004bf: DUP1 000004c0: REVERT 000004c1: JUMPDEST 000004c2: POP 000004c3: PUSH2 0x0252 000004c6: PUSH32 0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783 000004e7: DUP2 000004e8: JUMP 000004e9: JUMPDEST 000004ea: CALLVALUE 000004eb: DUP1 000004ec: ISZERO 000004ed: PUSH2 0x04f5 000004f0: JUMPI 000004f1: PUSH1 0x00 000004f3: DUP1 000004f4: REVERT 000004f5: JUMPDEST 000004f6: POP 000004f7: PUSH2 0x0252 000004fa: PUSH2 0x0504 000004fd: CALLDATASIZE 000004fe: PUSH1 0x04 00000500: PUSH2 0x171f 00000503: JUMP 00000504: JUMPDEST 00000505: PUSH2 0x0acb 00000508: JUMP 00000509: JUMPDEST 0000050a: CALLVALUE 0000050b: DUP1 0000050c: ISZERO 0000050d: PUSH2 0x0515 00000510: JUMPI 00000511: PUSH1 0x00 00000513: DUP1 00000514: REVERT 00000515: JUMPDEST 00000516: POP 00000517: PUSH2 0x02f2 0000051a: PUSH2 0x0524 0000051d: CALLDATASIZE 0000051e: PUSH1 0x04 00000520: PUSH2 0x1846 00000523: JUMP 00000524: JUMPDEST 00000525: PUSH4 0xbc197c81 0000052a: PUSH1 0xe0 0000052c: SHL 0000052d: SWAP6 0000052e: SWAP5 0000052f: POP 00000530: POP 00000531: POP 00000532: POP 00000533: POP 00000534: JUMP 00000535: JUMPDEST 00000536: CALLVALUE 00000537: DUP1 00000538: ISZERO 00000539: PUSH2 0x0541 0000053c: JUMPI 0000053d: PUSH1 0x00 0000053f: DUP1 00000540: REVERT 00000541: JUMPDEST 00000542: POP 00000543: PUSH2 0x01e7 00000546: PUSH2 0x0550 00000549: CALLDATASIZE 0000054a: PUSH1 0x04 0000054c: PUSH2 0x14c9 0000054f: JUMP 00000550: JUMPDEST 00000551: PUSH2 0x0b10 00000554: JUMP 00000555: JUMPDEST 00000556: CALLVALUE 00000557: DUP1 00000558: ISZERO 00000559: PUSH2 0x0561 0000055c: JUMPI 0000055d: PUSH1 0x00 0000055f: DUP1 00000560: REVERT 00000561: JUMPDEST 00000562: POP 00000563: PUSH2 0x0252 00000566: PUSH2 0x0570 00000569: CALLDATASIZE 0000056a: PUSH1 0x04 0000056c: PUSH2 0x14c9 0000056f: JUMP 00000570: JUMPDEST 00000571: PUSH1 0x00 00000573: SWAP1 00000574: DUP2 00000575: MSTORE 00000576: PUSH1 0x01 00000578: PUSH1 0x20 0000057a: MSTORE 0000057b: PUSH1 0x40 0000057d: SWAP1 0000057e: KECCAK256 0000057f: SLOAD 00000580: SWAP1 00000581: JUMP 00000582: JUMPDEST 00000583: CALLVALUE 00000584: DUP1 00000585: ISZERO 00000586: PUSH2 0x058e 00000589: JUMPI 0000058a: PUSH1 0x00 0000058c: DUP1 0000058d: REVERT 0000058e: JUMPDEST 0000058f: POP 00000590: PUSH2 0x01e7 00000593: PUSH2 0x059d 00000596: CALLDATASIZE 00000597: PUSH1 0x04 00000599: PUSH2 0x15fe 0000059c: JUMP 0000059d: JUMPDEST 0000059e: PUSH2 0x0be5 000005a1: JUMP 000005a2: JUMPDEST 000005a3: PUSH2 0x01e7 000005a6: PUSH2 0x05b0 000005a9: CALLDATASIZE 000005aa: PUSH1 0x04 000005ac: PUSH2 0x171f 000005af: JUMP 000005b0: JUMPDEST 000005b1: PUSH2 0x0c0a 000005b4: JUMP 000005b5: JUMPDEST 000005b6: CALLVALUE 000005b7: DUP1 000005b8: ISZERO 000005b9: PUSH2 0x05c1 000005bc: JUMPI 000005bd: PUSH1 0x00 000005bf: DUP1 000005c0: REVERT 000005c1: JUMPDEST 000005c2: POP 000005c3: PUSH2 0x02f2 000005c6: PUSH2 0x05d0 000005c9: CALLDATASIZE 000005ca: PUSH1 0x04 000005cc: PUSH2 0x18ef 000005cf: JUMP 000005d0: JUMPDEST 000005d1: PUSH4 0xf23a6e61 000005d6: PUSH1 0xe0 000005d8: SHL 000005d9: SWAP6 000005da: SWAP5 000005db: POP 000005dc: POP 000005dd: POP 000005de: POP 000005df: POP 000005e0: JUMP 000005e1: JUMPDEST 000005e2: CALLVALUE 000005e3: DUP1 000005e4: ISZERO 000005e5: PUSH2 0x05ed 000005e8: JUMPI 000005e9: PUSH1 0x00 000005eb: DUP1 000005ec: REVERT 000005ed: JUMPDEST 000005ee: POP 000005ef: PUSH1 0x02 000005f1: SLOAD 000005f2: PUSH2 0x0252 000005f5: JUMP 000005f6: JUMPDEST 000005f7: PUSH32 0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1 00000618: PUSH2 0x0620 0000061b: DUP2 0000061c: PUSH2 0x0d94 0000061f: JUMP 00000620: JUMPDEST 00000621: PUSH1 0x00 00000623: PUSH2 0x0630 00000626: DUP10 00000627: DUP10 00000628: DUP10 00000629: DUP10 0000062a: DUP10 0000062b: DUP10 0000062c: PUSH2 0x0911 0000062f: JUMP 00000630: JUMPDEST 00000631: SWAP1 00000632: POP 00000633: PUSH2 0x063c 00000636: DUP2 00000637: DUP5 00000638: PUSH2 0x0da1 0000063b: JUMP 0000063c: JUMPDEST 0000063d: PUSH1 0x00 0000063f: DUP2 00000640: PUSH32 0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca 00000661: DUP12 00000662: DUP12 00000663: DUP12 00000664: DUP12 00000665: DUP12 00000666: DUP11 00000667: PUSH1 0x40 00000669: MLOAD 0000066a: PUSH2 0x0678 0000066d: SWAP7 0000066e: SWAP6 0000066f: SWAP5 00000670: SWAP4 00000671: SWAP3 00000672: SWAP2 00000673: SWAP1 00000674: PUSH2 0x197c 00000677: JUMP 00000678: JUMPDEST 00000679: PUSH1 0x40 0000067b: MLOAD 0000067c: DUP1 0000067d: SWAP2 0000067e: SUB 0000067f: SWAP1 00000680: LOG3 00000681: POP 00000682: POP 00000683: POP 00000684: POP 00000685: POP 00000686: POP 00000687: POP 00000688: POP 00000689: POP 0000068a: JUMP 0000068b: JUMPDEST 0000068c: PUSH1 0x00 0000068e: PUSH1 0x01 00000690: PUSH1 0x01 00000692: PUSH1 0xe0 00000694: SHL 00000695: SUB 00000696: NOT 00000697: DUP3 00000698: AND 00000699: PUSH4 0x02711897 0000069e: PUSH1 0xe5 000006a0: SHL 000006a1: EQ 000006a2: DUP1 000006a3: PUSH2 0x06b0 000006a6: JUMPI 000006a7: POP 000006a8: PUSH2 0x06b0 000006ab: DUP3 000006ac: PUSH2 0x0e90 000006af: JUMP 000006b0: JUMPDEST 000006b1: SWAP3 000006b2: SWAP2 000006b3: POP 000006b4: POP 000006b5: JUMP 000006b6: JUMPDEST 000006b7: PUSH32 0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63 000006d8: PUSH2 0x06e2 000006db: DUP2 000006dc: PUSH1 0x00 000006de: PUSH2 0x0aa2 000006e1: JUMP 000006e2: JUMPDEST 000006e3: PUSH2 0x06f0 000006e6: JUMPI 000006e7: PUSH2 0x06f0 000006ea: DUP2 000006eb: CALLER 000006ec: PUSH2 0x0ec5 000006ef: JUMP 000006f0: JUMPDEST 000006f1: PUSH1 0x00 000006f3: PUSH2 0x0700 000006f6: DUP9 000006f7: DUP9 000006f8: DUP9 000006f9: DUP9 000006fa: DUP9 000006fb: DUP9 000006fc: PUSH2 0x0911 000006ff: JUMP 00000700: JUMPDEST 00000701: SWAP1 00000702: POP 00000703: PUSH2 0x070c 00000706: DUP2 00000707: DUP6 00000708: PUSH2 0x0f1e 0000070b: JUMP 0000070c: JUMPDEST 0000070d: PUSH2 0x0718 00000710: DUP9 00000711: DUP9 00000712: DUP9 00000713: DUP9 00000714: PUSH2 0x0fba 00000717: JUMP 00000718: JUMPDEST 00000719: PUSH1 0x00 0000071b: DUP2 0000071c: PUSH32 0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58 0000073d: DUP11 0000073e: DUP11 0000073f: DUP11 00000740: DUP11 00000741: PUSH1 0x40 00000743: MLOAD 00000744: PUSH2 0x0750 00000747: SWAP5 00000748: SWAP4 00000749: SWAP3 0000074a: SWAP2 0000074b: SWAP1 0000074c: PUSH2 0x19b9 0000074f: JUMP 00000750: JUMPDEST 00000751: PUSH1 0x40 00000753: MLOAD 00000754: DUP1 00000755: SWAP2 00000756: SUB 00000757: SWAP1 00000758: LOG3 00000759: PUSH2 0x0761 0000075c: DUP2 0000075d: PUSH2 0x108d 00000760: JUMP 00000761: JUMPDEST 00000762: POP 00000763: POP 00000764: POP 00000765: POP 00000766: POP 00000767: POP 00000768: POP 00000769: POP 0000076a: JUMP 0000076b: JUMPDEST 0000076c: PUSH1 0x00 0000076e: DUP2 0000076f: DUP2 00000770: MSTORE 00000771: PUSH1 0x01 00000773: PUSH1 0x20 00000775: MSTORE 00000776: PUSH1 0x40 00000778: DUP2 00000779: KECCAK256 0000077a: SLOAD 0000077b: PUSH1 0x01 0000077d: DUP2 0000077e: GT 0000077f: DUP1 00000780: ISZERO 00000781: PUSH2 0x078a 00000784: JUMPI 00000785: POP 00000786: TIMESTAMP 00000787: DUP2 00000788: GT 00000789: ISZERO 0000078a: JUMPDEST 0000078b: SWAP4 0000078c: SWAP3 0000078d: POP 0000078e: POP 0000078f: POP 00000790: JUMP 00000791: JUMPDEST 00000792: PUSH1 0x00 00000794: DUP3 00000795: DUP2 00000796: MSTORE 00000797: PUSH1 0x20 00000799: DUP2 0000079a: SWAP1 0000079b: MSTORE 0000079c: PUSH1 0x40 0000079e: SWAP1 0000079f: KECCAK256 000007a0: PUSH1 0x01 000007a2: ADD 000007a3: SLOAD 000007a4: PUSH2 0x07ac 000007a7: DUP2 000007a8: PUSH2 0x0d94 000007ab: JUMP 000007ac: JUMPDEST 000007ad: PUSH2 0x07b6 000007b0: DUP4 000007b1: DUP4 000007b2: PUSH2 0x10c6 000007b5: JUMP 000007b6: JUMPDEST 000007b7: POP 000007b8: POP 000007b9: POP 000007ba: JUMP 000007bb: JUMPDEST 000007bc: PUSH1 0x00 000007be: DUP2 000007bf: DUP2 000007c0: MSTORE 000007c1: PUSH1 0x01 000007c3: PUSH1 0x20 000007c5: MSTORE 000007c6: PUSH1 0x40 000007c8: DUP2 000007c9: KECCAK256 000007ca: SLOAD 000007cb: DUP2 000007cc: SWAP1 000007cd: JUMPDEST 000007ce: GT 000007cf: SWAP3 000007d0: SWAP2 000007d1: POP 000007d2: POP 000007d3: JUMP 000007d4: JUMPDEST 000007d5: PUSH1 0x01 000007d7: PUSH1 0x01 000007d9: PUSH1 0xa0 000007db: SHL 000007dc: SUB 000007dd: DUP2 000007de: AND 000007df: CALLER 000007e0: EQ 000007e1: PUSH2 0x0849 000007e4: JUMPI 000007e5: PUSH1 0x40 000007e7: MLOAD 000007e8: PUSH3 0x461bcd 000007ec: PUSH1 0xe5 000007ee: SHL 000007ef: DUP2 000007f0: MSTORE 000007f1: PUSH1 0x20 000007f3: PUSH1 0x04 000007f5: DUP3 000007f6: ADD 000007f7: MSTORE 000007f8: PUSH1 0x2f 000007fa: PUSH1 0x24 000007fc: DUP3 000007fd: ADD 000007fe: MSTORE 000007ff: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365 00000820: PUSH1 0x44 00000822: DUP3 00000823: ADD 00000824: MSTORE 00000825: PUSH15 0x103937b632b9903337b91039b2b633 00000835: PUSH1 0x89 00000837: SHL 00000838: PUSH1 0x64 0000083a: DUP3 0000083b: ADD 0000083c: MSTORE 0000083d: PUSH1 0x84 0000083f: ADD 00000840: JUMPDEST 00000841: PUSH1 0x40 00000843: MLOAD 00000844: DUP1 00000845: SWAP2 00000846: SUB 00000847: SWAP1 00000848: REVERT 00000849: JUMPDEST 0000084a: PUSH2 0x0853 0000084d: DUP3 0000084e: DUP3 0000084f: PUSH2 0x114a 00000852: JUMP 00000853: JUMPDEST 00000854: POP 00000855: POP 00000856: JUMP 00000857: JUMPDEST 00000858: PUSH1 0x00 0000085a: DUP2 0000085b: DUP2 0000085c: MSTORE 0000085d: PUSH1 0x01 0000085f: PUSH1 0x20 00000861: DUP2 00000862: SWAP1 00000863: MSTORE 00000864: PUSH1 0x40 00000866: DUP3 00000867: KECCAK256 00000868: SLOAD 00000869: PUSH2 0x07cd 0000086c: JUMP 0000086d: JUMPDEST 0000086e: CALLER 0000086f: ADDRESS 00000870: EQ 00000871: PUSH2 0x08d0 00000874: JUMPI 00000875: PUSH1 0x40 00000877: MLOAD 00000878: PUSH3 0x461bcd 0000087c: PUSH1 0xe5 0000087e: SHL 0000087f: DUP2 00000880: MSTORE 00000881: PUSH1 0x20 00000883: PUSH1 0x04 00000885: DUP3 00000886: ADD 00000887: MSTORE 00000888: PUSH1 0x2b 0000088a: PUSH1 0x24 0000088c: DUP3 0000088d: ADD 0000088e: MSTORE 0000088f: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d75737420 000008b0: PUSH1 0x44 000008b2: DUP3 000008b3: ADD 000008b4: MSTORE 000008b5: PUSH11 0x62652074696d656c6f636b 000008c1: PUSH1 0xa8 000008c3: SHL 000008c4: PUSH1 0x64 000008c6: DUP3 000008c7: ADD 000008c8: MSTORE 000008c9: PUSH1 0x84 000008cb: ADD 000008cc: PUSH2 0x0840 000008cf: JUMP 000008d0: JUMPDEST 000008d1: PUSH1 0x02 000008d3: SLOAD 000008d4: PUSH1 0x40 000008d6: DUP1 000008d7: MLOAD 000008d8: SWAP2 000008d9: DUP3 000008da: MSTORE 000008db: PUSH1 0x20 000008dd: DUP3 000008de: ADD 000008df: DUP4 000008e0: SWAP1 000008e1: MSTORE 000008e2: PUSH32 0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5 00000903: SWAP2 00000904: ADD 00000905: PUSH1 0x40 00000907: MLOAD 00000908: DUP1 00000909: SWAP2 0000090a: SUB 0000090b: SWAP1 0000090c: LOG1 0000090d: PUSH1 0x02 0000090f: SSTORE 00000910: JUMP 00000911: JUMPDEST 00000912: PUSH1 0x00 00000914: DUP7 00000915: DUP7 00000916: DUP7 00000917: DUP7 00000918: DUP7 00000919: DUP7 0000091a: PUSH1 0x40 0000091c: MLOAD 0000091d: PUSH1 0x20 0000091f: ADD 00000920: PUSH2 0x092e 00000923: SWAP7 00000924: SWAP6 00000925: SWAP5 00000926: SWAP4 00000927: SWAP3 00000928: SWAP2 00000929: SWAP1 0000092a: PUSH2 0x197c 0000092d: JUMP 0000092e: JUMPDEST 0000092f: PUSH1 0x40 00000931: MLOAD 00000932: PUSH1 0x20 00000934: DUP2 00000935: DUP4 00000936: SUB 00000937: SUB 00000938: DUP2 00000939: MSTORE 0000093a: SWAP1 0000093b: PUSH1 0x40 0000093d: MSTORE 0000093e: DUP1 0000093f: MLOAD 00000940: SWAP1 00000941: PUSH1 0x20 00000943: ADD 00000944: KECCAK256 00000945: SWAP1 00000946: POP 00000947: SWAP7 00000948: SWAP6 00000949: POP 0000094a: POP 0000094b: POP 0000094c: POP 0000094d: POP 0000094e: POP 0000094f: JUMP 00000950: JUMPDEST 00000951: PUSH32 0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1 00000972: PUSH2 0x097a 00000975: DUP2 00000976: PUSH2 0x0d94 00000979: JUMP 0000097a: JUMPDEST 0000097b: DUP9 0000097c: DUP8 0000097d: EQ 0000097e: PUSH2 0x0999 00000981: JUMPI 00000982: PUSH1 0x40 00000984: MLOAD 00000985: PUSH3 0x461bcd 00000989: PUSH1 0xe5 0000098b: SHL 0000098c: DUP2 0000098d: MSTORE 0000098e: PUSH1 0x04 00000990: ADD 00000991: PUSH2 0x0840 00000994: SWAP1 00000995: PUSH2 0x19eb 00000998: JUMP 00000999: JUMPDEST 0000099a: DUP9 0000099b: DUP6 0000099c: EQ 0000099d: PUSH2 0x09b8 000009a0: JUMPI 000009a1: PUSH1 0x40 000009a3: MLOAD 000009a4: PUSH3 0x461bcd 000009a8: PUSH1 0xe5 000009aa: SHL 000009ab: DUP2 000009ac: MSTORE 000009ad: PUSH1 0x04 000009af: ADD 000009b0: PUSH2 0x0840 000009b3: SWAP1 000009b4: PUSH2 0x19eb 000009b7: JUMP 000009b8: JUMPDEST 000009b9: PUSH1 0x00 000009bb: PUSH2 0x09ca 000009be: DUP12 000009bf: DUP12 000009c0: DUP12 000009c1: DUP12 000009c2: DUP12 000009c3: DUP12 000009c4: DUP12 000009c5: DUP12 000009c6: PUSH2 0x0acb 000009c9: JUMP 000009ca: JUMPDEST 000009cb: SWAP1 000009cc: POP 000009cd: PUSH2 0x09d6 000009d0: DUP2 000009d1: DUP5 000009d2: PUSH2 0x0da1 000009d5: JUMP 000009d6: JUMPDEST 000009d7: PUSH1 0x00 000009d9: JUMPDEST 000009da: DUP11 000009db: DUP2 000009dc: LT 000009dd: ISZERO 000009de: PUSH2 0x0a94 000009e1: JUMPI 000009e2: DUP1 000009e3: DUP3 000009e4: PUSH32 0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca 00000a05: DUP15 00000a06: DUP15 00000a07: DUP6 00000a08: DUP2 00000a09: DUP2 00000a0a: LT 00000a0b: PUSH2 0x0a16 00000a0e: JUMPI 00000a0f: PUSH2 0x0a16 00000a12: PUSH2 0x1a2e 00000a15: JUMP 00000a16: JUMPDEST 00000a17: SWAP1 00000a18: POP 00000a19: PUSH1 0x20 00000a1b: MUL 00000a1c: ADD 00000a1d: PUSH1 0x20 00000a1f: DUP2 00000a20: ADD 00000a21: SWAP1 00000a22: PUSH2 0x0a2b 00000a25: SWAP2 00000a26: SWAP1 00000a27: PUSH2 0x1a44 00000a2a: JUMP 00000a2b: JUMPDEST 00000a2c: DUP14 00000a2d: DUP14 00000a2e: DUP7 00000a2f: DUP2 00000a30: DUP2 00000a31: LT 00000a32: PUSH2 0x0a3d 00000a35: JUMPI 00000a36: PUSH2 0x0a3d 00000a39: PUSH2 0x1a2e 00000a3c: JUMP 00000a3d: JUMPDEST 00000a3e: SWAP1 00000a3f: POP 00000a40: PUSH1 0x20 00000a42: MUL 00000a43: ADD 00000a44: CALLDATALOAD 00000a45: DUP13 00000a46: DUP13 00000a47: DUP8 00000a48: DUP2 00000a49: DUP2 00000a4a: LT 00000a4b: PUSH2 0x0a56 00000a4e: JUMPI 00000a4f: PUSH2 0x0a56 00000a52: PUSH2 0x1a2e 00000a55: JUMP 00000a56: JUMPDEST 00000a57: SWAP1 00000a58: POP 00000a59: PUSH1 0x20 00000a5b: MUL 00000a5c: DUP2 00000a5d: ADD 00000a5e: SWAP1 00000a5f: PUSH2 0x0a68 00000a62: SWAP2 00000a63: SWAP1 00000a64: PUSH2 0x1a5f 00000a67: JUMP 00000a68: JUMPDEST 00000a69: DUP13 00000a6a: DUP12 00000a6b: PUSH1 0x40 00000a6d: MLOAD 00000a6e: PUSH2 0x0a7c 00000a71: SWAP7 00000a72: SWAP6 00000a73: SWAP5 00000a74: SWAP4 00000a75: SWAP3 00000a76: SWAP2 00000a77: SWAP1 00000a78: PUSH2 0x197c 00000a7b: JUMP 00000a7c: JUMPDEST 00000a7d: PUSH1 0x40 00000a7f: MLOAD 00000a80: DUP1 00000a81: SWAP2 00000a82: SUB 00000a83: SWAP1 00000a84: LOG3 00000a85: PUSH2 0x0a8d 00000a88: DUP2 00000a89: PUSH2 0x1abb 00000a8c: JUMP 00000a8d: JUMPDEST 00000a8e: SWAP1 00000a8f: POP 00000a90: PUSH2 0x09d9 00000a93: JUMP 00000a94: JUMPDEST 00000a95: POP 00000a96: POP 00000a97: POP 00000a98: POP 00000a99: POP 00000a9a: POP 00000a9b: POP 00000a9c: POP 00000a9d: POP 00000a9e: POP 00000a9f: POP 00000aa0: POP 00000aa1: JUMP 00000aa2: JUMPDEST 00000aa3: PUSH1 0x00 00000aa5: SWAP2 00000aa6: DUP3 00000aa7: MSTORE 00000aa8: PUSH1 0x20 00000aaa: DUP3 00000aab: DUP2 00000aac: MSTORE 00000aad: PUSH1 0x40 00000aaf: DUP1 00000ab0: DUP5 00000ab1: KECCAK256 00000ab2: PUSH1 0x01 00000ab4: PUSH1 0x01 00000ab6: PUSH1 0xa0 00000ab8: SHL 00000ab9: SUB 00000aba: SWAP4 00000abb: SWAP1 00000abc: SWAP4 00000abd: AND 00000abe: DUP5 00000abf: MSTORE 00000ac0: SWAP2 00000ac1: SWAP1 00000ac2: MSTORE 00000ac3: SWAP1 00000ac4: KECCAK256 00000ac5: SLOAD 00000ac6: PUSH1 0xff 00000ac8: AND 00000ac9: SWAP1 00000aca: JUMP 00000acb: JUMPDEST 00000acc: PUSH1 0x00 00000ace: DUP9 00000acf: DUP9 00000ad0: DUP9 00000ad1: DUP9 00000ad2: DUP9 00000ad3: DUP9 00000ad4: DUP9 00000ad5: DUP9 00000ad6: PUSH1 0x40 00000ad8: MLOAD 00000ad9: PUSH1 0x20 00000adb: ADD 00000adc: PUSH2 0x0aec 00000adf: SWAP9 00000ae0: SWAP8 00000ae1: SWAP7 00000ae2: SWAP6 00000ae3: SWAP5 00000ae4: SWAP4 00000ae5: SWAP3 00000ae6: SWAP2 00000ae7: SWAP1 00000ae8: PUSH2 0x1b65 00000aeb: JUMP 00000aec: JUMPDEST 00000aed: PUSH1 0x40 00000aef: MLOAD 00000af0: PUSH1 0x20 00000af2: DUP2 00000af3: DUP4 00000af4: SUB 00000af5: SUB 00000af6: DUP2 00000af7: MSTORE 00000af8: SWAP1 00000af9: PUSH1 0x40 00000afb: MSTORE 00000afc: DUP1 00000afd: MLOAD 00000afe: SWAP1 00000aff: PUSH1 0x20 00000b01: ADD 00000b02: KECCAK256 00000b03: SWAP1 00000b04: POP 00000b05: SWAP9 00000b06: SWAP8 00000b07: POP 00000b08: POP 00000b09: POP 00000b0a: POP 00000b0b: POP 00000b0c: POP 00000b0d: POP 00000b0e: POP 00000b0f: JUMP 00000b10: JUMPDEST 00000b11: PUSH32 0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783 00000b32: PUSH2 0x0b3a 00000b35: DUP2 00000b36: PUSH2 0x0d94 00000b39: JUMP 00000b3a: JUMPDEST 00000b3b: PUSH2 0x0b43 00000b3e: DUP3 00000b3f: PUSH2 0x0857 00000b42: JUMP 00000b43: JUMPDEST 00000b44: PUSH2 0x0ba9 00000b47: JUMPI 00000b48: PUSH1 0x40 00000b4a: MLOAD 00000b4b: PUSH3 0x461bcd 00000b4f: PUSH1 0xe5 00000b51: SHL 00000b52: DUP2 00000b53: MSTORE 00000b54: PUSH1 0x20 00000b56: PUSH1 0x04 00000b58: DUP3 00000b59: ADD 00000b5a: MSTORE 00000b5b: PUSH1 0x31 00000b5d: PUSH1 0x24 00000b5f: DUP3 00000b60: ADD 00000b61: MSTORE 00000b62: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206361 00000b83: PUSH1 0x44 00000b85: DUP3 00000b86: ADD 00000b87: MSTORE 00000b88: PUSH17 0x1b9b9bdd0818994818d85b98d95b1b1959 00000b9a: PUSH1 0x7a 00000b9c: SHL 00000b9d: PUSH1 0x64 00000b9f: DUP3 00000ba0: ADD 00000ba1: MSTORE 00000ba2: PUSH1 0x84 00000ba4: ADD 00000ba5: PUSH2 0x0840 00000ba8: JUMP 00000ba9: JUMPDEST 00000baa: PUSH1 0x00 00000bac: DUP3 00000bad: DUP2 00000bae: MSTORE 00000baf: PUSH1 0x01 00000bb1: PUSH1 0x20 00000bb3: MSTORE 00000bb4: PUSH1 0x40 00000bb6: DUP1 00000bb7: DUP3 00000bb8: KECCAK256 00000bb9: DUP3 00000bba: SWAP1 00000bbb: SSTORE 00000bbc: MLOAD 00000bbd: DUP4 00000bbe: SWAP2 00000bbf: PUSH32 0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70 00000be0: SWAP2 00000be1: LOG2 00000be2: POP 00000be3: POP 00000be4: JUMP 00000be5: JUMPDEST 00000be6: PUSH1 0x00 00000be8: DUP3 00000be9: DUP2 00000bea: MSTORE 00000beb: PUSH1 0x20 00000bed: DUP2 00000bee: SWAP1 00000bef: MSTORE 00000bf0: PUSH1 0x40 00000bf2: SWAP1 00000bf3: KECCAK256 00000bf4: PUSH1 0x01 00000bf6: ADD 00000bf7: SLOAD 00000bf8: PUSH2 0x0c00 00000bfb: DUP2 00000bfc: PUSH2 0x0d94 00000bff: JUMP 00000c00: JUMPDEST 00000c01: PUSH2 0x07b6 00000c04: DUP4 00000c05: DUP4 00000c06: PUSH2 0x114a 00000c09: JUMP 00000c0a: JUMPDEST 00000c0b: PUSH32 0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63 00000c2c: PUSH2 0x0c36 00000c2f: DUP2 00000c30: PUSH1 0x00 00000c32: PUSH2 0x0aa2 00000c35: JUMP 00000c36: JUMPDEST 00000c37: PUSH2 0x0c44 00000c3a: JUMPI 00000c3b: PUSH2 0x0c44 00000c3e: DUP2 00000c3f: CALLER 00000c40: PUSH2 0x0ec5 00000c43: JUMP 00000c44: JUMPDEST 00000c45: DUP8 00000c46: DUP7 00000c47: EQ 00000c48: PUSH2 0x0c63 00000c4b: JUMPI 00000c4c: PUSH1 0x40 00000c4e: MLOAD 00000c4f: PUSH3 0x461bcd 00000c53: PUSH1 0xe5 00000c55: SHL 00000c56: DUP2 00000c57: MSTORE 00000c58: PUSH1 0x04 00000c5a: ADD 00000c5b: PUSH2 0x0840 00000c5e: SWAP1 00000c5f: PUSH2 0x19eb 00000c62: JUMP 00000c63: JUMPDEST 00000c64: DUP8 00000c65: DUP5 00000c66: EQ 00000c67: PUSH2 0x0c82 00000c6a: JUMPI 00000c6b: PUSH1 0x40 00000c6d: MLOAD 00000c6e: PUSH3 0x461bcd 00000c72: PUSH1 0xe5 00000c74: SHL 00000c75: DUP2 00000c76: MSTORE 00000c77: PUSH1 0x04 00000c79: ADD 00000c7a: PUSH2 0x0840 00000c7d: SWAP1 00000c7e: PUSH2 0x19eb 00000c81: JUMP 00000c82: JUMPDEST 00000c83: PUSH1 0x00 00000c85: PUSH2 0x0c94 00000c88: DUP11 00000c89: DUP11 00000c8a: DUP11 00000c8b: DUP11 00000c8c: DUP11 00000c8d: DUP11 00000c8e: DUP11 00000c8f: DUP11 00000c90: PUSH2 0x0acb 00000c93: JUMP 00000c94: JUMPDEST 00000c95: SWAP1 00000c96: POP 00000c97: PUSH2 0x0ca0 00000c9a: DUP2 00000c9b: DUP6 00000c9c: PUSH2 0x0f1e 00000c9f: JUMP 00000ca0: JUMPDEST 00000ca1: PUSH1 0x00 00000ca3: JUMPDEST 00000ca4: DUP10 00000ca5: DUP2 00000ca6: LT 00000ca7: ISZERO 00000ca8: PUSH2 0x0d7e 00000cab: JUMPI 00000cac: PUSH1 0x00 00000cae: DUP12 00000caf: DUP12 00000cb0: DUP4 00000cb1: DUP2 00000cb2: DUP2 00000cb3: LT 00000cb4: PUSH2 0x0cbf 00000cb7: JUMPI 00000cb8: PUSH2 0x0cbf 00000cbb: PUSH2 0x1a2e 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: SWAP1 00000cc1: POP 00000cc2: PUSH1 0x20 00000cc4: MUL 00000cc5: ADD 00000cc6: PUSH1 0x20 00000cc8: DUP2 00000cc9: ADD 00000cca: SWAP1 00000ccb: PUSH2 0x0cd4 00000cce: SWAP2 00000ccf: SWAP1 00000cd0: PUSH2 0x1a44 00000cd3: JUMP 00000cd4: JUMPDEST 00000cd5: SWAP1 00000cd6: POP 00000cd7: PUSH1 0x00 00000cd9: DUP11 00000cda: DUP11 00000cdb: DUP5 00000cdc: DUP2 00000cdd: DUP2 00000cde: LT 00000cdf: PUSH2 0x0cea 00000ce2: JUMPI 00000ce3: PUSH2 0x0cea 00000ce6: PUSH2 0x1a2e 00000ce9: JUMP 00000cea: JUMPDEST 00000ceb: SWAP1 00000cec: POP 00000ced: PUSH1 0x20 00000cef: MUL 00000cf0: ADD 00000cf1: CALLDATALOAD 00000cf2: SWAP1 00000cf3: POP 00000cf4: CALLDATASIZE 00000cf5: PUSH1 0x00 00000cf7: DUP11 00000cf8: DUP11 00000cf9: DUP7 00000cfa: DUP2 00000cfb: DUP2 00000cfc: LT 00000cfd: PUSH2 0x0d08 00000d00: JUMPI 00000d01: PUSH2 0x0d08 00000d04: PUSH2 0x1a2e 00000d07: JUMP 00000d08: JUMPDEST 00000d09: SWAP1 00000d0a: POP 00000d0b: PUSH1 0x20 00000d0d: MUL 00000d0e: DUP2 00000d0f: ADD 00000d10: SWAP1 00000d11: PUSH2 0x0d1a 00000d14: SWAP2 00000d15: SWAP1 00000d16: PUSH2 0x1a5f 00000d19: JUMP 00000d1a: JUMPDEST 00000d1b: SWAP2 00000d1c: POP 00000d1d: SWAP2 00000d1e: POP 00000d1f: PUSH2 0x0d2a 00000d22: DUP5 00000d23: DUP5 00000d24: DUP5 00000d25: DUP5 00000d26: PUSH2 0x0fba 00000d29: JUMP 00000d2a: JUMPDEST 00000d2b: DUP5 00000d2c: DUP7 00000d2d: PUSH32 0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58 00000d4e: DUP7 00000d4f: DUP7 00000d50: DUP7 00000d51: DUP7 00000d52: PUSH1 0x40 00000d54: MLOAD 00000d55: PUSH2 0x0d61 00000d58: SWAP5 00000d59: SWAP4 00000d5a: SWAP3 00000d5b: SWAP2 00000d5c: SWAP1 00000d5d: PUSH2 0x19b9 00000d60: JUMP 00000d61: JUMPDEST 00000d62: PUSH1 0x40 00000d64: MLOAD 00000d65: DUP1 00000d66: SWAP2 00000d67: SUB 00000d68: SWAP1 00000d69: LOG3 00000d6a: POP 00000d6b: POP 00000d6c: POP 00000d6d: POP 00000d6e: DUP1 00000d6f: PUSH2 0x0d77 00000d72: SWAP1 00000d73: PUSH2 0x1abb 00000d76: JUMP 00000d77: JUMPDEST 00000d78: SWAP1 00000d79: POP 00000d7a: PUSH2 0x0ca3 00000d7d: JUMP 00000d7e: JUMPDEST 00000d7f: POP 00000d80: PUSH2 0x0d88 00000d83: DUP2 00000d84: PUSH2 0x108d 00000d87: JUMP 00000d88: JUMPDEST 00000d89: POP 00000d8a: POP 00000d8b: POP 00000d8c: POP 00000d8d: POP 00000d8e: POP 00000d8f: POP 00000d90: POP 00000d91: POP 00000d92: POP 00000d93: JUMP 00000d94: JUMPDEST 00000d95: PUSH2 0x0d9e 00000d98: DUP2 00000d99: CALLER 00000d9a: PUSH2 0x0ec5 00000d9d: JUMP 00000d9e: JUMPDEST 00000d9f: POP 00000da0: JUMP 00000da1: JUMPDEST 00000da2: PUSH2 0x0daa 00000da5: DUP3 00000da6: PUSH2 0x07bb 00000da9: JUMP 00000daa: JUMPDEST 00000dab: ISZERO 00000dac: PUSH2 0x0e0f 00000daf: JUMPI 00000db0: PUSH1 0x40 00000db2: MLOAD 00000db3: PUSH3 0x461bcd 00000db7: PUSH1 0xe5 00000db9: SHL 00000dba: DUP2 00000dbb: MSTORE 00000dbc: PUSH1 0x20 00000dbe: PUSH1 0x04 00000dc0: DUP3 00000dc1: ADD 00000dc2: MSTORE 00000dc3: PUSH1 0x2f 00000dc5: PUSH1 0x24 00000dc7: DUP3 00000dc8: ADD 00000dc9: MSTORE 00000dca: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c 00000deb: PUSH1 0x44 00000ded: DUP3 00000dee: ADD 00000def: MSTORE 00000df0: PUSH15 0x1c9958591e481cd8da19591d5b1959 00000e00: PUSH1 0x8a 00000e02: SHL 00000e03: PUSH1 0x64 00000e05: DUP3 00000e06: ADD 00000e07: MSTORE 00000e08: PUSH1 0x84 00000e0a: ADD 00000e0b: PUSH2 0x0840 00000e0e: JUMP 00000e0f: JUMPDEST 00000e10: PUSH1 0x02 00000e12: SLOAD 00000e13: DUP2 00000e14: LT 00000e15: ISZERO 00000e16: PUSH2 0x0e70 00000e19: JUMPI 00000e1a: PUSH1 0x40 00000e1c: MLOAD 00000e1d: PUSH3 0x461bcd 00000e21: PUSH1 0xe5 00000e23: SHL 00000e24: DUP2 00000e25: MSTORE 00000e26: PUSH1 0x20 00000e28: PUSH1 0x04 00000e2a: DUP3 00000e2b: ADD 00000e2c: MSTORE 00000e2d: PUSH1 0x26 00000e2f: PUSH1 0x24 00000e31: DUP3 00000e32: ADD 00000e33: MSTORE 00000e34: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e74 00000e55: PUSH1 0x44 00000e57: DUP3 00000e58: ADD 00000e59: MSTORE 00000e5a: PUSH6 0x2064656c6179 00000e61: PUSH1 0xd0 00000e63: SHL 00000e64: PUSH1 0x64 00000e66: DUP3 00000e67: ADD 00000e68: MSTORE 00000e69: PUSH1 0x84 00000e6b: ADD 00000e6c: PUSH2 0x0840 00000e6f: JUMP 00000e70: JUMPDEST 00000e71: PUSH2 0x0e7a 00000e74: DUP2 00000e75: TIMESTAMP 00000e76: PUSH2 0x1c06 00000e79: JUMP 00000e7a: JUMPDEST 00000e7b: PUSH1 0x00 00000e7d: SWAP3 00000e7e: DUP4 00000e7f: MSTORE 00000e80: PUSH1 0x01 00000e82: PUSH1 0x20 00000e84: MSTORE 00000e85: PUSH1 0x40 00000e87: SWAP1 00000e88: SWAP3 00000e89: KECCAK256 00000e8a: SWAP2 00000e8b: SWAP1 00000e8c: SWAP2 00000e8d: SSTORE 00000e8e: POP 00000e8f: JUMP 00000e90: JUMPDEST 00000e91: PUSH1 0x00 00000e93: PUSH1 0x01 00000e95: PUSH1 0x01 00000e97: PUSH1 0xe0 00000e99: SHL 00000e9a: SUB 00000e9b: NOT 00000e9c: DUP3 00000e9d: AND 00000e9e: PUSH4 0x7965db0b 00000ea3: PUSH1 0xe0 00000ea5: SHL 00000ea6: EQ 00000ea7: DUP1 00000ea8: PUSH2 0x06b0 00000eab: JUMPI 00000eac: POP 00000ead: PUSH4 0x01ffc9a7 00000eb2: PUSH1 0xe0 00000eb4: SHL 00000eb5: PUSH1 0x01 00000eb7: PUSH1 0x01 00000eb9: PUSH1 0xe0 00000ebb: SHL 00000ebc: SUB 00000ebd: NOT 00000ebe: DUP4 00000ebf: AND 00000ec0: EQ 00000ec1: PUSH2 0x06b0 00000ec4: JUMP 00000ec5: JUMPDEST 00000ec6: PUSH2 0x0ecf 00000ec9: DUP3 00000eca: DUP3 00000ecb: PUSH2 0x0aa2 00000ece: JUMP 00000ecf: JUMPDEST 00000ed0: PUSH2 0x0853 00000ed3: JUMPI 00000ed4: PUSH2 0x0edc 00000ed7: DUP2 00000ed8: PUSH2 0x11af 00000edb: JUMP 00000edc: JUMPDEST 00000edd: PUSH2 0x0ee7 00000ee0: DUP4 00000ee1: PUSH1 0x20 00000ee3: PUSH2 0x11c1 00000ee6: JUMP 00000ee7: JUMPDEST 00000ee8: PUSH1 0x40 00000eea: MLOAD 00000eeb: PUSH1 0x20 00000eed: ADD 00000eee: PUSH2 0x0ef8 00000ef1: SWAP3 00000ef2: SWAP2 00000ef3: SWAP1 00000ef4: PUSH2 0x1c3d 00000ef7: JUMP 00000ef8: JUMPDEST 00000ef9: PUSH1 0x40 00000efb: DUP1 00000efc: MLOAD 00000efd: PUSH1 0x1f 00000eff: NOT 00000f00: DUP2 00000f01: DUP5 00000f02: SUB 00000f03: ADD 00000f04: DUP2 00000f05: MSTORE 00000f06: SWAP1 00000f07: DUP3 00000f08: SWAP1 00000f09: MSTORE 00000f0a: PUSH3 0x461bcd 00000f0e: PUSH1 0xe5 00000f10: SHL 00000f11: DUP3 00000f12: MSTORE 00000f13: PUSH2 0x0840 00000f16: SWAP2 00000f17: PUSH1 0x04 00000f19: ADD 00000f1a: PUSH2 0x1cb2 00000f1d: JUMP 00000f1e: JUMPDEST 00000f1f: PUSH2 0x0f27 00000f22: DUP3 00000f23: PUSH2 0x076b 00000f26: JUMP 00000f27: JUMPDEST 00000f28: PUSH2 0x0f43 00000f2b: JUMPI 00000f2c: PUSH1 0x40 00000f2e: MLOAD 00000f2f: PUSH3 0x461bcd 00000f33: PUSH1 0xe5 00000f35: SHL 00000f36: DUP2 00000f37: MSTORE 00000f38: PUSH1 0x04 00000f3a: ADD 00000f3b: PUSH2 0x0840 00000f3e: SWAP1 00000f3f: PUSH2 0x1ce5 00000f42: JUMP 00000f43: JUMPDEST 00000f44: DUP1 00000f45: ISZERO 00000f46: DUP1 00000f47: PUSH2 0x0f5f 00000f4a: JUMPI 00000f4b: POP 00000f4c: PUSH1 0x00 00000f4e: DUP2 00000f4f: DUP2 00000f50: MSTORE 00000f51: PUSH1 0x01 00000f53: PUSH1 0x20 00000f55: DUP2 00000f56: SWAP1 00000f57: MSTORE 00000f58: PUSH1 0x40 00000f5a: SWAP1 00000f5b: SWAP2 00000f5c: KECCAK256 00000f5d: SLOAD 00000f5e: EQ 00000f5f: JUMPDEST 00000f60: PUSH2 0x0853 00000f63: JUMPI 00000f64: PUSH1 0x40 00000f66: MLOAD 00000f67: PUSH3 0x461bcd 00000f6b: PUSH1 0xe5 00000f6d: SHL 00000f6e: DUP2 00000f6f: MSTORE 00000f70: PUSH1 0x20 00000f72: PUSH1 0x04 00000f74: DUP3 00000f75: ADD 00000f76: MSTORE 00000f77: PUSH1 0x26 00000f79: PUSH1 0x24 00000f7b: DUP3 00000f7c: ADD 00000f7d: MSTORE 00000f7e: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206d697373696e672064657065 00000f9f: PUSH1 0x44 00000fa1: DUP3 00000fa2: ADD 00000fa3: MSTORE 00000fa4: PUSH6 0x6e64656e6379 00000fab: PUSH1 0xd0 00000fad: SHL 00000fae: PUSH1 0x64 00000fb0: DUP3 00000fb1: ADD 00000fb2: MSTORE 00000fb3: PUSH1 0x84 00000fb5: ADD 00000fb6: PUSH2 0x0840 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: PUSH1 0x00 00000fbd: DUP5 00000fbe: PUSH1 0x01 00000fc0: PUSH1 0x01 00000fc2: PUSH1 0xa0 00000fc4: SHL 00000fc5: SUB 00000fc6: AND 00000fc7: DUP5 00000fc8: DUP5 00000fc9: DUP5 00000fca: PUSH1 0x40 00000fcc: MLOAD 00000fcd: PUSH2 0x0fd7 00000fd0: SWAP3 00000fd1: SWAP2 00000fd2: SWAP1 00000fd3: PUSH2 0x1d2f 00000fd6: JUMP 00000fd7: JUMPDEST 00000fd8: PUSH1 0x00 00000fda: PUSH1 0x40 00000fdc: MLOAD 00000fdd: DUP1 00000fde: DUP4 00000fdf: SUB 00000fe0: DUP2 00000fe1: DUP6 00000fe2: DUP8 00000fe3: GAS 00000fe4: CALL 00000fe5: SWAP3 00000fe6: POP 00000fe7: POP 00000fe8: POP 00000fe9: RETURNDATASIZE 00000fea: DUP1 00000feb: PUSH1 0x00 00000fed: DUP2 00000fee: EQ 00000fef: PUSH2 0x1014 00000ff2: JUMPI 00000ff3: PUSH1 0x40 00000ff5: MLOAD 00000ff6: SWAP2 00000ff7: POP 00000ff8: PUSH1 0x1f 00000ffa: NOT 00000ffb: PUSH1 0x3f 00000ffd: RETURNDATASIZE 00000ffe: ADD 00000fff: AND 00001000: DUP3 00001001: ADD 00001002: PUSH1 0x40 00001004: MSTORE 00001005: RETURNDATASIZE 00001006: DUP3 00001007: MSTORE 00001008: RETURNDATASIZE 00001009: PUSH1 0x00 0000100b: PUSH1 0x20 0000100d: DUP5 0000100e: ADD 0000100f: RETURNDATACOPY 00001010: PUSH2 0x1019 00001013: JUMP 00001014: JUMPDEST 00001015: PUSH1 0x60 00001017: SWAP2 00001018: POP 00001019: JUMPDEST 0000101a: POP 0000101b: POP 0000101c: SWAP1 0000101d: POP 0000101e: DUP1 0000101f: PUSH2 0x1086 00001022: JUMPI 00001023: PUSH1 0x40 00001025: MLOAD 00001026: PUSH3 0x461bcd 0000102a: PUSH1 0xe5 0000102c: SHL 0000102d: DUP2 0000102e: MSTORE 0000102f: PUSH1 0x20 00001031: PUSH1 0x04 00001033: DUP3 00001034: ADD 00001035: MSTORE 00001036: PUSH1 0x33 00001038: PUSH1 0x24 0000103a: DUP3 0000103b: ADD 0000103c: MSTORE 0000103d: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e672074 0000105e: PUSH1 0x44 00001060: DUP3 00001061: ADD 00001062: MSTORE 00001063: PUSH19 0x1c985b9cd858dd1a5bdb881c995d995c9d1959 00001077: PUSH1 0x6a 00001079: SHL 0000107a: PUSH1 0x64 0000107c: DUP3 0000107d: ADD 0000107e: MSTORE 0000107f: PUSH1 0x84 00001081: ADD 00001082: PUSH2 0x0840 00001085: JUMP 00001086: JUMPDEST 00001087: POP 00001088: POP 00001089: POP 0000108a: POP 0000108b: POP 0000108c: JUMP 0000108d: JUMPDEST 0000108e: PUSH2 0x1096 00001091: DUP2 00001092: PUSH2 0x076b 00001095: JUMP 00001096: JUMPDEST 00001097: PUSH2 0x10b2 0000109a: JUMPI 0000109b: PUSH1 0x40 0000109d: MLOAD 0000109e: PUSH3 0x461bcd 000010a2: PUSH1 0xe5 000010a4: SHL 000010a5: DUP2 000010a6: MSTORE 000010a7: PUSH1 0x04 000010a9: ADD 000010aa: PUSH2 0x0840 000010ad: SWAP1 000010ae: PUSH2 0x1ce5 000010b1: JUMP 000010b2: JUMPDEST 000010b3: PUSH1 0x00 000010b5: SWAP1 000010b6: DUP2 000010b7: MSTORE 000010b8: PUSH1 0x01 000010ba: PUSH1 0x20 000010bc: DUP2 000010bd: SWAP1 000010be: MSTORE 000010bf: PUSH1 0x40 000010c1: SWAP1 000010c2: SWAP2 000010c3: KECCAK256 000010c4: SSTORE 000010c5: JUMP 000010c6: JUMPDEST 000010c7: PUSH2 0x10d0 000010ca: DUP3 000010cb: DUP3 000010cc: PUSH2 0x0aa2 000010cf: JUMP 000010d0: JUMPDEST 000010d1: PUSH2 0x0853 000010d4: JUMPI 000010d5: PUSH1 0x00 000010d7: DUP3 000010d8: DUP2 000010d9: MSTORE 000010da: PUSH1 0x20 000010dc: DUP2 000010dd: DUP2 000010de: MSTORE 000010df: PUSH1 0x40 000010e1: DUP1 000010e2: DUP4 000010e3: KECCAK256 000010e4: PUSH1 0x01 000010e6: PUSH1 0x01 000010e8: PUSH1 0xa0 000010ea: SHL 000010eb: SUB 000010ec: DUP6 000010ed: AND 000010ee: DUP5 000010ef: MSTORE 000010f0: SWAP1 000010f1: SWAP2 000010f2: MSTORE 000010f3: SWAP1 000010f4: KECCAK256 000010f5: DUP1 000010f6: SLOAD 000010f7: PUSH1 0xff 000010f9: NOT 000010fa: AND 000010fb: PUSH1 0x01 000010fd: OR 000010fe: SWAP1 000010ff: SSTORE 00001100: PUSH2 0x1106 00001103: CALLER 00001104: SWAP1 00001105: JUMP 00001106: JUMPDEST 00001107: PUSH1 0x01 00001109: PUSH1 0x01 0000110b: PUSH1 0xa0 0000110d: SHL 0000110e: SUB 0000110f: AND 00001110: DUP2 00001111: PUSH1 0x01 00001113: PUSH1 0x01 00001115: PUSH1 0xa0 00001117: SHL 00001118: SUB 00001119: AND 0000111a: DUP4 0000111b: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 0000113c: PUSH1 0x40 0000113e: MLOAD 0000113f: PUSH1 0x40 00001141: MLOAD 00001142: DUP1 00001143: SWAP2 00001144: SUB 00001145: SWAP1 00001146: LOG4 00001147: POP 00001148: POP 00001149: JUMP 0000114a: JUMPDEST 0000114b: PUSH2 0x1154 0000114e: DUP3 0000114f: DUP3 00001150: PUSH2 0x0aa2 00001153: JUMP 00001154: JUMPDEST 00001155: ISZERO 00001156: PUSH2 0x0853 00001159: JUMPI 0000115a: PUSH1 0x00 0000115c: DUP3 0000115d: DUP2 0000115e: MSTORE 0000115f: PUSH1 0x20 00001161: DUP2 00001162: DUP2 00001163: MSTORE 00001164: PUSH1 0x40 00001166: DUP1 00001167: DUP4 00001168: KECCAK256 00001169: PUSH1 0x01 0000116b: PUSH1 0x01 0000116d: PUSH1 0xa0 0000116f: SHL 00001170: SUB 00001171: DUP6 00001172: AND 00001173: DUP1 00001174: DUP6 00001175: MSTORE 00001176: SWAP3 00001177: MSTORE 00001178: DUP1 00001179: DUP4 0000117a: KECCAK256 0000117b: DUP1 0000117c: SLOAD 0000117d: PUSH1 0xff 0000117f: NOT 00001180: AND 00001181: SWAP1 00001182: SSTORE 00001183: MLOAD 00001184: CALLER 00001185: SWAP3 00001186: DUP6 00001187: SWAP2 00001188: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 000011a9: SWAP2 000011aa: SWAP1 000011ab: LOG4 000011ac: POP 000011ad: POP 000011ae: JUMP 000011af: JUMPDEST 000011b0: PUSH1 0x60 000011b2: PUSH2 0x06b0 000011b5: PUSH1 0x01 000011b7: PUSH1 0x01 000011b9: PUSH1 0xa0 000011bb: SHL 000011bc: SUB 000011bd: DUP4 000011be: AND 000011bf: PUSH1 0x14 000011c1: JUMPDEST 000011c2: PUSH1 0x60 000011c4: PUSH1 0x00 000011c6: PUSH2 0x11d0 000011c9: DUP4 000011ca: PUSH1 0x02 000011cc: PUSH2 0x1d3f 000011cf: JUMP 000011d0: JUMPDEST 000011d1: PUSH2 0x11db 000011d4: SWAP1 000011d5: PUSH1 0x02 000011d7: PUSH2 0x1c06 000011da: JUMP 000011db: JUMPDEST 000011dc: PUSH1 0x01 000011de: PUSH1 0x01 000011e0: PUSH1 0x40 000011e2: SHL 000011e3: SUB 000011e4: DUP2 000011e5: GT 000011e6: ISZERO 000011e7: PUSH2 0x11f2 000011ea: JUMPI 000011eb: PUSH2 0x11f2 000011ee: PUSH2 0x14e2 000011f1: JUMP 000011f2: JUMPDEST 000011f3: PUSH1 0x40 000011f5: MLOAD 000011f6: SWAP1 000011f7: DUP1 000011f8: DUP3 000011f9: MSTORE 000011fa: DUP1 000011fb: PUSH1 0x1f 000011fd: ADD 000011fe: PUSH1 0x1f 00001200: NOT 00001201: AND 00001202: PUSH1 0x20 00001204: ADD 00001205: DUP3 00001206: ADD 00001207: PUSH1 0x40 00001209: MSTORE 0000120a: DUP1 0000120b: ISZERO 0000120c: PUSH2 0x121c 0000120f: JUMPI 00001210: PUSH1 0x20 00001212: DUP3 00001213: ADD 00001214: DUP2 00001215: DUP1 00001216: CALLDATASIZE 00001217: DUP4 00001218: CALLDATACOPY 00001219: ADD 0000121a: SWAP1 0000121b: POP 0000121c: JUMPDEST 0000121d: POP 0000121e: SWAP1 0000121f: POP 00001220: PUSH1 0x03 00001222: PUSH1 0xfc 00001224: SHL 00001225: DUP2 00001226: PUSH1 0x00 00001228: DUP2 00001229: MLOAD 0000122a: DUP2 0000122b: LT 0000122c: PUSH2 0x1237 0000122f: JUMPI 00001230: PUSH2 0x1237 00001233: PUSH2 0x1a2e 00001236: JUMP 00001237: JUMPDEST 00001238: PUSH1 0x20 0000123a: ADD 0000123b: ADD 0000123c: SWAP1 0000123d: PUSH1 0x01 0000123f: PUSH1 0x01 00001241: PUSH1 0xf8 00001243: SHL 00001244: SUB 00001245: NOT 00001246: AND 00001247: SWAP1 00001248: DUP2 00001249: PUSH1 0x00 0000124b: BYTE 0000124c: SWAP1 0000124d: MSTORE8 0000124e: POP 0000124f: PUSH1 0x0f 00001251: PUSH1 0xfb 00001253: SHL 00001254: DUP2 00001255: PUSH1 0x01 00001257: DUP2 00001258: MLOAD 00001259: DUP2 0000125a: LT 0000125b: PUSH2 0x1266 0000125e: JUMPI 0000125f: PUSH2 0x1266 00001262: PUSH2 0x1a2e 00001265: JUMP 00001266: JUMPDEST 00001267: PUSH1 0x20 00001269: ADD 0000126a: ADD 0000126b: SWAP1 0000126c: PUSH1 0x01 0000126e: PUSH1 0x01 00001270: PUSH1 0xf8 00001272: SHL 00001273: SUB 00001274: NOT 00001275: AND 00001276: SWAP1 00001277: DUP2 00001278: PUSH1 0x00 0000127a: BYTE 0000127b: SWAP1 0000127c: MSTORE8 0000127d: POP 0000127e: PUSH1 0x00 00001280: PUSH2 0x128a 00001283: DUP5 00001284: PUSH1 0x02 00001286: PUSH2 0x1d3f 00001289: JUMP 0000128a: JUMPDEST 0000128b: PUSH2 0x1295 0000128e: SWAP1 0000128f: PUSH1 0x01 00001291: PUSH2 0x1c06 00001294: JUMP 00001295: JUMPDEST 00001296: SWAP1 00001297: POP 00001298: JUMPDEST 00001299: PUSH1 0x01 0000129b: DUP2 0000129c: GT 0000129d: ISZERO 0000129e: PUSH2 0x130d 000012a1: JUMPI 000012a2: PUSH16 0x181899199a1a9b1b9c1cb0b131b232b3 000012b3: PUSH1 0x81 000012b5: SHL 000012b6: DUP6 000012b7: PUSH1 0x0f 000012b9: AND 000012ba: PUSH1 0x10 000012bc: DUP2 000012bd: LT 000012be: PUSH2 0x12c9 000012c1: JUMPI 000012c2: PUSH2 0x12c9 000012c5: PUSH2 0x1a2e 000012c8: JUMP 000012c9: JUMPDEST 000012ca: BYTE 000012cb: PUSH1 0xf8 000012cd: SHL 000012ce: DUP3 000012cf: DUP3 000012d0: DUP2 000012d1: MLOAD 000012d2: DUP2 000012d3: LT 000012d4: PUSH2 0x12df 000012d7: JUMPI 000012d8: PUSH2 0x12df 000012db: PUSH2 0x1a2e 000012de: JUMP 000012df: JUMPDEST 000012e0: PUSH1 0x20 000012e2: ADD 000012e3: ADD 000012e4: SWAP1 000012e5: PUSH1 0x01 000012e7: PUSH1 0x01 000012e9: PUSH1 0xf8 000012eb: SHL 000012ec: SUB 000012ed: NOT 000012ee: AND 000012ef: SWAP1 000012f0: DUP2 000012f1: PUSH1 0x00 000012f3: BYTE 000012f4: SWAP1 000012f5: MSTORE8 000012f6: POP 000012f7: PUSH1 0x04 000012f9: SWAP5 000012fa: SWAP1 000012fb: SWAP5 000012fc: SHR 000012fd: SWAP4 000012fe: PUSH2 0x1306 00001301: DUP2 00001302: PUSH2 0x1d56 00001305: JUMP 00001306: JUMPDEST 00001307: SWAP1 00001308: POP 00001309: PUSH2 0x1298 0000130c: JUMP 0000130d: JUMPDEST 0000130e: POP 0000130f: DUP4 00001310: ISZERO 00001311: PUSH2 0x078a 00001314: JUMPI 00001315: PUSH1 0x40 00001317: MLOAD 00001318: PUSH3 0x461bcd 0000131c: PUSH1 0xe5 0000131e: SHL 0000131f: DUP2 00001320: MSTORE 00001321: PUSH1 0x20 00001323: PUSH1 0x04 00001325: DUP3 00001326: ADD 00001327: DUP2 00001328: SWAP1 00001329: MSTORE 0000132a: PUSH1 0x24 0000132c: DUP3 0000132d: ADD 0000132e: MSTORE 0000132f: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74 00001350: PUSH1 0x44 00001352: DUP3 00001353: ADD 00001354: MSTORE 00001355: PUSH1 0x64 00001357: ADD 00001358: PUSH2 0x0840 0000135b: JUMP 0000135c: JUMPDEST 0000135d: DUP1 0000135e: CALLDATALOAD 0000135f: PUSH1 0x01 00001361: PUSH1 0x01 00001363: PUSH1 0xa0 00001365: SHL 00001366: SUB 00001367: DUP2 00001368: AND 00001369: DUP2 0000136a: EQ 0000136b: PUSH2 0x1373 0000136e: JUMPI 0000136f: PUSH1 0x00 00001371: DUP1 00001372: REVERT 00001373: JUMPDEST 00001374: SWAP2 00001375: SWAP1 00001376: POP 00001377: JUMP 00001378: JUMPDEST 00001379: PUSH1 0x00 0000137b: DUP1 0000137c: DUP4 0000137d: PUSH1 0x1f 0000137f: DUP5 00001380: ADD 00001381: SLT 00001382: PUSH2 0x138a 00001385: JUMPI 00001386: PUSH1 0x00 00001388: DUP1 00001389: REVERT 0000138a: JUMPDEST 0000138b: POP 0000138c: DUP2 0000138d: CALLDATALOAD 0000138e: PUSH1 0x01 00001390: PUSH1 0x01 00001392: PUSH1 0x40 00001394: SHL 00001395: SUB 00001396: DUP2 00001397: GT 00001398: ISZERO 00001399: PUSH2 0x13a1 0000139c: JUMPI 0000139d: PUSH1 0x00 0000139f: DUP1 000013a0: REVERT 000013a1: JUMPDEST 000013a2: PUSH1 0x20 000013a4: DUP4 000013a5: ADD 000013a6: SWAP2 000013a7: POP 000013a8: DUP4 000013a9: PUSH1 0x20 000013ab: DUP3 000013ac: DUP6 000013ad: ADD 000013ae: ADD 000013af: GT 000013b0: ISZERO 000013b1: PUSH2 0x13b9 000013b4: JUMPI 000013b5: PUSH1 0x00 000013b7: DUP1 000013b8: REVERT 000013b9: JUMPDEST 000013ba: SWAP3 000013bb: POP 000013bc: SWAP3 000013bd: SWAP1 000013be: POP 000013bf: JUMP 000013c0: JUMPDEST 000013c1: PUSH1 0x00 000013c3: DUP1 000013c4: PUSH1 0x00 000013c6: DUP1 000013c7: PUSH1 0x00 000013c9: DUP1 000013ca: PUSH1 0x00 000013cc: PUSH1 0xc0 000013ce: DUP9 000013cf: DUP11 000013d0: SUB 000013d1: SLT 000013d2: ISZERO 000013d3: PUSH2 0x13db 000013d6: JUMPI 000013d7: PUSH1 0x00 000013d9: DUP1 000013da: REVERT 000013db: JUMPDEST 000013dc: PUSH2 0x13e4 000013df: DUP9 000013e0: PUSH2 0x135c 000013e3: JUMP 000013e4: JUMPDEST 000013e5: SWAP7 000013e6: POP 000013e7: PUSH1 0x20 000013e9: DUP9 000013ea: ADD 000013eb: CALLDATALOAD 000013ec: SWAP6 000013ed: POP 000013ee: PUSH1 0x40 000013f0: DUP9 000013f1: ADD 000013f2: CALLDATALOAD 000013f3: PUSH1 0x01 000013f5: PUSH1 0x01 000013f7: PUSH1 0x40 000013f9: SHL 000013fa: SUB 000013fb: DUP2 000013fc: GT 000013fd: ISZERO 000013fe: PUSH2 0x1406 00001401: JUMPI 00001402: PUSH1 0x00 00001404: DUP1 00001405: REVERT 00001406: JUMPDEST 00001407: PUSH2 0x1412 0000140a: DUP11 0000140b: DUP3 0000140c: DUP12 0000140d: ADD 0000140e: PUSH2 0x1378 00001411: JUMP 00001412: JUMPDEST 00001413: SWAP9 00001414: SWAP12 00001415: SWAP8 00001416: SWAP11 00001417: POP 00001418: SWAP9 00001419: PUSH1 0x60 0000141b: DUP2 0000141c: ADD 0000141d: CALLDATALOAD 0000141e: SWAP8 0000141f: PUSH1 0x80 00001421: DUP3 00001422: ADD 00001423: CALLDATALOAD 00001424: SWAP8 00001425: POP 00001426: PUSH1 0xa0 00001428: SWAP1 00001429: SWAP2 0000142a: ADD 0000142b: CALLDATALOAD 0000142c: SWAP6 0000142d: POP 0000142e: SWAP4 0000142f: POP 00001430: POP 00001431: POP 00001432: POP 00001433: JUMP 00001434: JUMPDEST 00001435: PUSH1 0x00 00001437: PUSH1 0x20 00001439: DUP3 0000143a: DUP5 0000143b: SUB 0000143c: SLT 0000143d: ISZERO 0000143e: PUSH2 0x1446 00001441: JUMPI 00001442: PUSH1 0x00 00001444: DUP1 00001445: REVERT 00001446: JUMPDEST 00001447: DUP2 00001448: CALLDATALOAD 00001449: PUSH1 0x01 0000144b: PUSH1 0x01 0000144d: PUSH1 0xe0 0000144f: SHL 00001450: SUB 00001451: NOT 00001452: DUP2 00001453: AND 00001454: DUP2 00001455: EQ 00001456: PUSH2 0x078a 00001459: JUMPI 0000145a: PUSH1 0x00 0000145c: DUP1 0000145d: REVERT 0000145e: JUMPDEST 0000145f: PUSH1 0x00 00001461: DUP1 00001462: PUSH1 0x00 00001464: DUP1 00001465: PUSH1 0x00 00001467: DUP1 00001468: PUSH1 0xa0 0000146a: DUP8 0000146b: DUP10 0000146c: SUB 0000146d: SLT 0000146e: ISZERO 0000146f: PUSH2 0x1477 00001472: JUMPI 00001473: PUSH1 0x00 00001475: DUP1 00001476: REVERT 00001477: JUMPDEST 00001478: PUSH2 0x1480 0000147b: DUP8 0000147c: PUSH2 0x135c 0000147f: JUMP 00001480: JUMPDEST 00001481: SWAP6 00001482: POP 00001483: PUSH1 0x20 00001485: DUP8 00001486: ADD 00001487: CALLDATALOAD 00001488: SWAP5 00001489: POP 0000148a: PUSH1 0x40 0000148c: DUP8 0000148d: ADD 0000148e: CALLDATALOAD 0000148f: PUSH1 0x01 00001491: PUSH1 0x01 00001493: PUSH1 0x40 00001495: SHL 00001496: SUB 00001497: DUP2 00001498: GT 00001499: ISZERO 0000149a: PUSH2 0x14a2 0000149d: JUMPI 0000149e: PUSH1 0x00 000014a0: DUP1 000014a1: REVERT 000014a2: JUMPDEST 000014a3: PUSH2 0x14ae 000014a6: DUP10 000014a7: DUP3 000014a8: DUP11 000014a9: ADD 000014aa: PUSH2 0x1378 000014ad: JUMP 000014ae: JUMPDEST 000014af: SWAP8 000014b0: SWAP11 000014b1: SWAP7 000014b2: SWAP10 000014b3: POP 000014b4: SWAP8 000014b5: PUSH1 0x60 000014b7: DUP2 000014b8: ADD 000014b9: CALLDATALOAD 000014ba: SWAP7 000014bb: PUSH1 0x80 000014bd: SWAP1 000014be: SWAP2 000014bf: ADD 000014c0: CALLDATALOAD 000014c1: SWAP6 000014c2: POP 000014c3: SWAP4 000014c4: POP 000014c5: POP 000014c6: POP 000014c7: POP 000014c8: JUMP 000014c9: JUMPDEST 000014ca: PUSH1 0x00 000014cc: PUSH1 0x20 000014ce: DUP3 000014cf: DUP5 000014d0: SUB 000014d1: SLT 000014d2: ISZERO 000014d3: PUSH2 0x14db 000014d6: JUMPI 000014d7: PUSH1 0x00 000014d9: DUP1 000014da: REVERT 000014db: JUMPDEST 000014dc: POP 000014dd: CALLDATALOAD 000014de: SWAP2 000014df: SWAP1 000014e0: POP 000014e1: JUMP 000014e2: JUMPDEST 000014e3: PUSH4 0x4e487b71 000014e8: PUSH1 0xe0 000014ea: SHL 000014eb: PUSH1 0x00 000014ed: MSTORE 000014ee: PUSH1 0x41 000014f0: PUSH1 0x04 000014f2: MSTORE 000014f3: PUSH1 0x24 000014f5: PUSH1 0x00 000014f7: REVERT 000014f8: JUMPDEST 000014f9: PUSH1 0x40 000014fb: MLOAD 000014fc: PUSH1 0x1f 000014fe: DUP3 000014ff: ADD 00001500: PUSH1 0x1f 00001502: NOT 00001503: AND 00001504: DUP2 00001505: ADD 00001506: PUSH1 0x01 00001508: PUSH1 0x01 0000150a: PUSH1 0x40 0000150c: SHL 0000150d: SUB 0000150e: DUP2 0000150f: GT 00001510: DUP3 00001511: DUP3 00001512: LT 00001513: OR 00001514: ISZERO 00001515: PUSH2 0x1520 00001518: JUMPI 00001519: PUSH2 0x1520 0000151c: PUSH2 0x14e2 0000151f: JUMP 00001520: JUMPDEST 00001521: PUSH1 0x40 00001523: MSTORE 00001524: SWAP2 00001525: SWAP1 00001526: POP 00001527: JUMP 00001528: JUMPDEST 00001529: PUSH1 0x00 0000152b: DUP3 0000152c: PUSH1 0x1f 0000152e: DUP4 0000152f: ADD 00001530: SLT 00001531: PUSH2 0x1539 00001534: JUMPI 00001535: PUSH1 0x00 00001537: DUP1 00001538: REVERT 00001539: JUMPDEST 0000153a: DUP2 0000153b: CALLDATALOAD 0000153c: PUSH1 0x01 0000153e: PUSH1 0x01 00001540: PUSH1 0x40 00001542: SHL 00001543: SUB 00001544: DUP2 00001545: GT 00001546: ISZERO 00001547: PUSH2 0x1552 0000154a: JUMPI 0000154b: PUSH2 0x1552 0000154e: PUSH2 0x14e2 00001551: JUMP 00001552: JUMPDEST 00001553: PUSH2 0x1565 00001556: PUSH1 0x1f 00001558: DUP3 00001559: ADD 0000155a: PUSH1 0x1f 0000155c: NOT 0000155d: AND 0000155e: PUSH1 0x20 00001560: ADD 00001561: PUSH2 0x14f8 00001564: JUMP 00001565: JUMPDEST 00001566: DUP2 00001567: DUP2 00001568: MSTORE 00001569: DUP5 0000156a: PUSH1 0x20 0000156c: DUP4 0000156d: DUP7 0000156e: ADD 0000156f: ADD 00001570: GT 00001571: ISZERO 00001572: PUSH2 0x157a 00001575: JUMPI 00001576: PUSH1 0x00 00001578: DUP1 00001579: REVERT 0000157a: JUMPDEST 0000157b: DUP2 0000157c: PUSH1 0x20 0000157e: DUP6 0000157f: ADD 00001580: PUSH1 0x20 00001582: DUP4 00001583: ADD 00001584: CALLDATACOPY 00001585: PUSH1 0x00 00001587: SWAP2 00001588: DUP2 00001589: ADD 0000158a: PUSH1 0x20 0000158c: ADD 0000158d: SWAP2 0000158e: SWAP1 0000158f: SWAP2 00001590: MSTORE 00001591: SWAP4 00001592: SWAP3 00001593: POP 00001594: POP 00001595: POP 00001596: JUMP 00001597: JUMPDEST 00001598: PUSH1 0x00 0000159a: DUP1 0000159b: PUSH1 0x00 0000159d: DUP1 0000159e: PUSH1 0x80 000015a0: DUP6 000015a1: DUP8 000015a2: SUB 000015a3: SLT 000015a4: ISZERO 000015a5: PUSH2 0x15ad 000015a8: JUMPI 000015a9: PUSH1 0x00 000015ab: DUP1 000015ac: REVERT 000015ad: JUMPDEST 000015ae: PUSH2 0x15b6 000015b1: DUP6 000015b2: PUSH2 0x135c 000015b5: JUMP 000015b6: JUMPDEST 000015b7: SWAP4 000015b8: POP 000015b9: PUSH2 0x15c4 000015bc: PUSH1 0x20 000015be: DUP7 000015bf: ADD 000015c0: PUSH2 0x135c 000015c3: JUMP 000015c4: JUMPDEST 000015c5: SWAP3 000015c6: POP 000015c7: PUSH1 0x40 000015c9: DUP6 000015ca: ADD 000015cb: CALLDATALOAD 000015cc: SWAP2 000015cd: POP 000015ce: PUSH1 0x60 000015d0: DUP6 000015d1: ADD 000015d2: CALLDATALOAD 000015d3: PUSH1 0x01 000015d5: PUSH1 0x01 000015d7: PUSH1 0x40 000015d9: SHL 000015da: SUB 000015db: DUP2 000015dc: GT 000015dd: ISZERO 000015de: PUSH2 0x15e6 000015e1: JUMPI 000015e2: PUSH1 0x00 000015e4: DUP1 000015e5: REVERT 000015e6: JUMPDEST 000015e7: PUSH2 0x15f2 000015ea: DUP8 000015eb: DUP3 000015ec: DUP9 000015ed: ADD 000015ee: PUSH2 0x1528 000015f1: JUMP 000015f2: JUMPDEST 000015f3: SWAP2 000015f4: POP 000015f5: POP 000015f6: SWAP3 000015f7: SWAP6 000015f8: SWAP2 000015f9: SWAP5 000015fa: POP 000015fb: SWAP3 000015fc: POP 000015fd: JUMP 000015fe: JUMPDEST 000015ff: PUSH1 0x00 00001601: DUP1 00001602: PUSH1 0x40 00001604: DUP4 00001605: DUP6 00001606: SUB 00001607: SLT 00001608: ISZERO 00001609: PUSH2 0x1611 0000160c: JUMPI 0000160d: PUSH1 0x00 0000160f: DUP1 00001610: REVERT 00001611: JUMPDEST 00001612: DUP3 00001613: CALLDATALOAD 00001614: SWAP2 00001615: POP 00001616: PUSH2 0x1621 00001619: PUSH1 0x20 0000161b: DUP5 0000161c: ADD 0000161d: PUSH2 0x135c 00001620: JUMP 00001621: JUMPDEST 00001622: SWAP1 00001623: POP 00001624: SWAP3 00001625: POP 00001626: SWAP3 00001627: SWAP1 00001628: POP 00001629: JUMP 0000162a: JUMPDEST 0000162b: PUSH1 0x00 0000162d: DUP1 0000162e: DUP4 0000162f: PUSH1 0x1f 00001631: DUP5 00001632: ADD 00001633: SLT 00001634: PUSH2 0x163c 00001637: JUMPI 00001638: PUSH1 0x00 0000163a: DUP1 0000163b: REVERT 0000163c: JUMPDEST 0000163d: POP 0000163e: DUP2 0000163f: CALLDATALOAD 00001640: PUSH1 0x01 00001642: PUSH1 0x01 00001644: PUSH1 0x40 00001646: SHL 00001647: SUB 00001648: DUP2 00001649: GT 0000164a: ISZERO 0000164b: PUSH2 0x1653 0000164e: JUMPI 0000164f: PUSH1 0x00 00001651: DUP1 00001652: REVERT 00001653: JUMPDEST 00001654: PUSH1 0x20 00001656: DUP4 00001657: ADD 00001658: SWAP2 00001659: POP 0000165a: DUP4 0000165b: PUSH1 0x20 0000165d: DUP3 0000165e: PUSH1 0x05 00001660: SHL 00001661: DUP6 00001662: ADD 00001663: ADD 00001664: GT 00001665: ISZERO 00001666: PUSH2 0x13b9 00001669: JUMPI 0000166a: PUSH1 0x00 0000166c: DUP1 0000166d: REVERT 0000166e: JUMPDEST 0000166f: PUSH1 0x00 00001671: DUP1 00001672: PUSH1 0x00 00001674: DUP1 00001675: PUSH1 0x00 00001677: DUP1 00001678: PUSH1 0x00 0000167a: DUP1 0000167b: PUSH1 0x00 0000167d: PUSH1 0xc0 0000167f: DUP11 00001680: DUP13 00001681: SUB 00001682: SLT 00001683: ISZERO 00001684: PUSH2 0x168c 00001687: JUMPI 00001688: PUSH1 0x00 0000168a: DUP1 0000168b: REVERT 0000168c: JUMPDEST 0000168d: DUP10 0000168e: CALLDATALOAD 0000168f: PUSH1 0x01 00001691: PUSH1 0x01 00001693: PUSH1 0x40 00001695: SHL 00001696: SUB 00001697: DUP1 00001698: DUP3 00001699: GT 0000169a: ISZERO 0000169b: PUSH2 0x16a3 0000169e: JUMPI 0000169f: PUSH1 0x00 000016a1: DUP1 000016a2: REVERT 000016a3: JUMPDEST 000016a4: PUSH2 0x16af 000016a7: DUP14 000016a8: DUP4 000016a9: DUP15 000016aa: ADD 000016ab: PUSH2 0x162a 000016ae: JUMP 000016af: JUMPDEST 000016b0: SWAP1 000016b1: SWAP12 000016b2: POP 000016b3: SWAP10 000016b4: POP 000016b5: PUSH1 0x20 000016b7: DUP13 000016b8: ADD 000016b9: CALLDATALOAD 000016ba: SWAP2 000016bb: POP 000016bc: DUP1 000016bd: DUP3 000016be: GT 000016bf: ISZERO 000016c0: PUSH2 0x16c8 000016c3: JUMPI 000016c4: PUSH1 0x00 000016c6: DUP1 000016c7: REVERT 000016c8: JUMPDEST 000016c9: PUSH2 0x16d4 000016cc: DUP14 000016cd: DUP4 000016ce: DUP15 000016cf: ADD 000016d0: PUSH2 0x162a 000016d3: JUMP 000016d4: JUMPDEST 000016d5: SWAP1 000016d6: SWAP10 000016d7: POP 000016d8: SWAP8 000016d9: POP 000016da: PUSH1 0x40 000016dc: DUP13 000016dd: ADD 000016de: CALLDATALOAD 000016df: SWAP2 000016e0: POP 000016e1: DUP1 000016e2: DUP3 000016e3: GT 000016e4: ISZERO 000016e5: PUSH2 0x16ed 000016e8: JUMPI 000016e9: PUSH1 0x00 000016eb: DUP1 000016ec: REVERT 000016ed: JUMPDEST 000016ee: POP 000016ef: PUSH2 0x16fa 000016f2: DUP13 000016f3: DUP3 000016f4: DUP14 000016f5: ADD 000016f6: PUSH2 0x162a 000016f9: JUMP 000016fa: JUMPDEST 000016fb: SWAP11 000016fc: SWAP14 000016fd: SWAP10 000016fe: SWAP13 000016ff: POP 00001700: SWAP8 00001701: SWAP11 00001702: SWAP7 00001703: SWAP10 00001704: SWAP8 00001705: SWAP9 00001706: PUSH1 0x60 00001708: DUP9 00001709: ADD 0000170a: CALLDATALOAD 0000170b: SWAP8 0000170c: PUSH1 0x80 0000170e: DUP2 0000170f: ADD 00001710: CALLDATALOAD 00001711: SWAP8 00001712: POP 00001713: PUSH1 0xa0 00001715: ADD 00001716: CALLDATALOAD 00001717: SWAP6 00001718: POP 00001719: SWAP4 0000171a: POP 0000171b: POP 0000171c: POP 0000171d: POP 0000171e: JUMP 0000171f: JUMPDEST 00001720: PUSH1 0x00 00001722: DUP1 00001723: PUSH1 0x00 00001725: DUP1 00001726: PUSH1 0x00 00001728: DUP1 00001729: PUSH1 0x00 0000172b: DUP1 0000172c: PUSH1 0xa0 0000172e: DUP10 0000172f: DUP12 00001730: SUB 00001731: SLT 00001732: ISZERO 00001733: PUSH2 0x173b 00001736: JUMPI 00001737: PUSH1 0x00 00001739: DUP1 0000173a: REVERT 0000173b: JUMPDEST 0000173c: DUP9 0000173d: CALLDATALOAD 0000173e: PUSH1 0x01 00001740: PUSH1 0x01 00001742: PUSH1 0x40 00001744: SHL 00001745: SUB 00001746: DUP1 00001747: DUP3 00001748: GT 00001749: ISZERO 0000174a: PUSH2 0x1752 0000174d: JUMPI 0000174e: PUSH1 0x00 00001750: DUP1 00001751: REVERT 00001752: JUMPDEST 00001753: PUSH2 0x175e 00001756: DUP13 00001757: DUP4 00001758: DUP14 00001759: ADD 0000175a: PUSH2 0x162a 0000175d: JUMP 0000175e: JUMPDEST 0000175f: SWAP1 00001760: SWAP11 00001761: POP 00001762: SWAP9 00001763: POP 00001764: PUSH1 0x20 00001766: DUP12 00001767: ADD 00001768: CALLDATALOAD 00001769: SWAP2 0000176a: POP 0000176b: DUP1 0000176c: DUP3 0000176d: GT 0000176e: ISZERO 0000176f: PUSH2 0x1777 00001772: JUMPI 00001773: PUSH1 0x00 00001775: DUP1 00001776: REVERT 00001777: JUMPDEST 00001778: PUSH2 0x1783 0000177b: DUP13 0000177c: DUP4 0000177d: DUP14 0000177e: ADD 0000177f: PUSH2 0x162a 00001782: JUMP 00001783: JUMPDEST 00001784: SWAP1 00001785: SWAP9 00001786: POP 00001787: SWAP7 00001788: POP 00001789: PUSH1 0x40 0000178b: DUP12 0000178c: ADD 0000178d: CALLDATALOAD 0000178e: SWAP2 0000178f: POP 00001790: DUP1 00001791: DUP3 00001792: GT 00001793: ISZERO 00001794: PUSH2 0x179c 00001797: JUMPI 00001798: PUSH1 0x00 0000179a: DUP1 0000179b: REVERT 0000179c: JUMPDEST 0000179d: POP 0000179e: PUSH2 0x17a9 000017a1: DUP12 000017a2: DUP3 000017a3: DUP13 000017a4: ADD 000017a5: PUSH2 0x162a 000017a8: JUMP 000017a9: JUMPDEST 000017aa: SWAP10 000017ab: SWAP13 000017ac: SWAP9 000017ad: SWAP12 000017ae: POP 000017af: SWAP7 000017b0: SWAP10 000017b1: SWAP6 000017b2: SWAP9 000017b3: SWAP7 000017b4: SWAP8 000017b5: PUSH1 0x60 000017b7: DUP8 000017b8: ADD 000017b9: CALLDATALOAD 000017ba: SWAP7 000017bb: PUSH1 0x80 000017bd: ADD 000017be: CALLDATALOAD 000017bf: SWAP6 000017c0: POP 000017c1: SWAP4 000017c2: POP 000017c3: POP 000017c4: POP 000017c5: POP 000017c6: JUMP 000017c7: JUMPDEST 000017c8: PUSH1 0x00 000017ca: DUP3 000017cb: PUSH1 0x1f 000017cd: DUP4 000017ce: ADD 000017cf: SLT 000017d0: PUSH2 0x17d8 000017d3: JUMPI 000017d4: PUSH1 0x00 000017d6: DUP1 000017d7: REVERT 000017d8: JUMPDEST 000017d9: DUP2 000017da: CALLDATALOAD 000017db: PUSH1 0x20 000017dd: PUSH1 0x01 000017df: PUSH1 0x01 000017e1: PUSH1 0x40 000017e3: SHL 000017e4: SUB 000017e5: DUP3 000017e6: GT 000017e7: ISZERO 000017e8: PUSH2 0x17f3 000017eb: JUMPI 000017ec: PUSH2 0x17f3 000017ef: PUSH2 0x14e2 000017f2: JUMP 000017f3: JUMPDEST 000017f4: DUP2 000017f5: PUSH1 0x05 000017f7: SHL 000017f8: PUSH2 0x1802 000017fb: DUP3 000017fc: DUP3 000017fd: ADD 000017fe: PUSH2 0x14f8 00001801: JUMP 00001802: JUMPDEST 00001803: SWAP3 00001804: DUP4 00001805: MSTORE 00001806: DUP5 00001807: DUP2 00001808: ADD 00001809: DUP3 0000180a: ADD 0000180b: SWAP3 0000180c: DUP3 0000180d: DUP2 0000180e: ADD 0000180f: SWAP1 00001810: DUP8 00001811: DUP6 00001812: GT 00001813: ISZERO 00001814: PUSH2 0x181c 00001817: JUMPI 00001818: PUSH1 0x00 0000181a: DUP1 0000181b: REVERT 0000181c: JUMPDEST 0000181d: DUP4 0000181e: DUP8 0000181f: ADD 00001820: SWAP3 00001821: POP 00001822: JUMPDEST 00001823: DUP5 00001824: DUP4 00001825: LT 00001826: ISZERO 00001827: PUSH2 0x183b 0000182a: JUMPI 0000182b: DUP3 0000182c: CALLDATALOAD 0000182d: DUP3 0000182e: MSTORE 0000182f: SWAP2 00001830: DUP4 00001831: ADD 00001832: SWAP2 00001833: SWAP1 00001834: DUP4 00001835: ADD 00001836: SWAP1 00001837: PUSH2 0x1822 0000183a: JUMP 0000183b: JUMPDEST 0000183c: SWAP8 0000183d: SWAP7 0000183e: POP 0000183f: POP 00001840: POP 00001841: POP 00001842: POP 00001843: POP 00001844: POP 00001845: JUMP 00001846: JUMPDEST 00001847: PUSH1 0x00 00001849: DUP1 0000184a: PUSH1 0x00 0000184c: DUP1 0000184d: PUSH1 0x00 0000184f: PUSH1 0xa0 00001851: DUP7 00001852: DUP9 00001853: SUB 00001854: SLT 00001855: ISZERO 00001856: PUSH2 0x185e 00001859: JUMPI 0000185a: PUSH1 0x00 0000185c: DUP1 0000185d: REVERT 0000185e: JUMPDEST 0000185f: PUSH2 0x1867 00001862: DUP7 00001863: PUSH2 0x135c 00001866: JUMP 00001867: JUMPDEST 00001868: SWAP5 00001869: POP 0000186a: PUSH2 0x1875 0000186d: PUSH1 0x20 0000186f: DUP8 00001870: ADD 00001871: PUSH2 0x135c 00001874: JUMP 00001875: JUMPDEST 00001876: SWAP4 00001877: POP 00001878: PUSH1 0x40 0000187a: DUP7 0000187b: ADD 0000187c: CALLDATALOAD 0000187d: PUSH1 0x01 0000187f: PUSH1 0x01 00001881: PUSH1 0x40 00001883: SHL 00001884: SUB 00001885: DUP1 00001886: DUP3 00001887: GT 00001888: ISZERO 00001889: PUSH2 0x1891 0000188c: JUMPI 0000188d: PUSH1 0x00 0000188f: DUP1 00001890: REVERT 00001891: JUMPDEST 00001892: PUSH2 0x189d 00001895: DUP10 00001896: DUP4 00001897: DUP11 00001898: ADD 00001899: PUSH2 0x17c7 0000189c: JUMP 0000189d: JUMPDEST 0000189e: SWAP5 0000189f: POP 000018a0: PUSH1 0x60 000018a2: DUP9 000018a3: ADD 000018a4: CALLDATALOAD 000018a5: SWAP2 000018a6: POP 000018a7: DUP1 000018a8: DUP3 000018a9: GT 000018aa: ISZERO 000018ab: PUSH2 0x18b3 000018ae: JUMPI 000018af: PUSH1 0x00 000018b1: DUP1 000018b2: REVERT 000018b3: JUMPDEST 000018b4: PUSH2 0x18bf 000018b7: DUP10 000018b8: DUP4 000018b9: DUP11 000018ba: ADD 000018bb: PUSH2 0x17c7 000018be: JUMP 000018bf: JUMPDEST 000018c0: SWAP4 000018c1: POP 000018c2: PUSH1 0x80 000018c4: DUP9 000018c5: ADD 000018c6: CALLDATALOAD 000018c7: SWAP2 000018c8: POP 000018c9: DUP1 000018ca: DUP3 000018cb: GT 000018cc: ISZERO 000018cd: PUSH2 0x18d5 000018d0: JUMPI 000018d1: PUSH1 0x00 000018d3: DUP1 000018d4: REVERT 000018d5: JUMPDEST 000018d6: POP 000018d7: PUSH2 0x18e2 000018da: DUP9 000018db: DUP3 000018dc: DUP10 000018dd: ADD 000018de: PUSH2 0x1528 000018e1: JUMP 000018e2: JUMPDEST 000018e3: SWAP2 000018e4: POP 000018e5: POP 000018e6: SWAP3 000018e7: SWAP6 000018e8: POP 000018e9: SWAP3 000018ea: SWAP6 000018eb: SWAP1 000018ec: SWAP4 000018ed: POP 000018ee: JUMP 000018ef: JUMPDEST 000018f0: PUSH1 0x00 000018f2: DUP1 000018f3: PUSH1 0x00 000018f5: DUP1 000018f6: PUSH1 0x00 000018f8: PUSH1 0xa0 000018fa: DUP7 000018fb: DUP9 000018fc: SUB 000018fd: SLT 000018fe: ISZERO 000018ff: PUSH2 0x1907 00001902: JUMPI 00001903: PUSH1 0x00 00001905: DUP1 00001906: REVERT 00001907: JUMPDEST 00001908: PUSH2 0x1910 0000190b: DUP7 0000190c: PUSH2 0x135c 0000190f: JUMP 00001910: JUMPDEST 00001911: SWAP5 00001912: POP 00001913: PUSH2 0x191e 00001916: PUSH1 0x20 00001918: DUP8 00001919: ADD 0000191a: PUSH2 0x135c 0000191d: JUMP 0000191e: JUMPDEST 0000191f: SWAP4 00001920: POP 00001921: PUSH1 0x40 00001923: DUP7 00001924: ADD 00001925: CALLDATALOAD 00001926: SWAP3 00001927: POP 00001928: PUSH1 0x60 0000192a: DUP7 0000192b: ADD 0000192c: CALLDATALOAD 0000192d: SWAP2 0000192e: POP 0000192f: PUSH1 0x80 00001931: DUP7 00001932: ADD 00001933: CALLDATALOAD 00001934: PUSH1 0x01 00001936: PUSH1 0x01 00001938: PUSH1 0x40 0000193a: SHL 0000193b: SUB 0000193c: DUP2 0000193d: GT 0000193e: ISZERO 0000193f: PUSH2 0x1947 00001942: JUMPI 00001943: PUSH1 0x00 00001945: DUP1 00001946: REVERT 00001947: JUMPDEST 00001948: PUSH2 0x18e2 0000194b: DUP9 0000194c: DUP3 0000194d: DUP10 0000194e: ADD 0000194f: PUSH2 0x1528 00001952: JUMP 00001953: JUMPDEST 00001954: DUP2 00001955: DUP4 00001956: MSTORE 00001957: DUP2 00001958: DUP2 00001959: PUSH1 0x20 0000195b: DUP6 0000195c: ADD 0000195d: CALLDATACOPY 0000195e: POP 0000195f: PUSH1 0x00 00001961: DUP3 00001962: DUP3 00001963: ADD 00001964: PUSH1 0x20 00001966: SWAP1 00001967: DUP2 00001968: ADD 00001969: SWAP2 0000196a: SWAP1 0000196b: SWAP2 0000196c: MSTORE 0000196d: PUSH1 0x1f 0000196f: SWAP1 00001970: SWAP2 00001971: ADD 00001972: PUSH1 0x1f 00001974: NOT 00001975: AND 00001976: SWAP1 00001977: SWAP2 00001978: ADD 00001979: ADD 0000197a: SWAP1 0000197b: JUMP 0000197c: JUMPDEST 0000197d: PUSH1 0x01 0000197f: DUP1 00001980: PUSH1 0xa0 00001982: SHL 00001983: SUB 00001984: DUP8 00001985: AND 00001986: DUP2 00001987: MSTORE 00001988: DUP6 00001989: PUSH1 0x20 0000198b: DUP3 0000198c: ADD 0000198d: MSTORE 0000198e: PUSH1 0xa0 00001990: PUSH1 0x40 00001992: DUP3 00001993: ADD 00001994: MSTORE 00001995: PUSH1 0x00 00001997: PUSH2 0x19a4 0000199a: PUSH1 0xa0 0000199c: DUP4 0000199d: ADD 0000199e: DUP7 0000199f: DUP9 000019a0: PUSH2 0x1953 000019a3: JUMP 000019a4: JUMPDEST 000019a5: PUSH1 0x60 000019a7: DUP4 000019a8: ADD 000019a9: SWAP5 000019aa: SWAP1 000019ab: SWAP5 000019ac: MSTORE 000019ad: POP 000019ae: PUSH1 0x80 000019b0: ADD 000019b1: MSTORE 000019b2: SWAP5 000019b3: SWAP4 000019b4: POP 000019b5: POP 000019b6: POP 000019b7: POP 000019b8: JUMP 000019b9: JUMPDEST 000019ba: PUSH1 0x01 000019bc: DUP1 000019bd: PUSH1 0xa0 000019bf: SHL 000019c0: SUB 000019c1: DUP6 000019c2: AND 000019c3: DUP2 000019c4: MSTORE 000019c5: DUP4 000019c6: PUSH1 0x20 000019c8: DUP3 000019c9: ADD 000019ca: MSTORE 000019cb: PUSH1 0x60 000019cd: PUSH1 0x40 000019cf: DUP3 000019d0: ADD 000019d1: MSTORE 000019d2: PUSH1 0x00 000019d4: PUSH2 0x19e1 000019d7: PUSH1 0x60 000019d9: DUP4 000019da: ADD 000019db: DUP5 000019dc: DUP7 000019dd: PUSH2 0x1953 000019e0: JUMP 000019e1: JUMPDEST 000019e2: SWAP7 000019e3: SWAP6 000019e4: POP 000019e5: POP 000019e6: POP 000019e7: POP 000019e8: POP 000019e9: POP 000019ea: JUMP 000019eb: JUMPDEST 000019ec: PUSH1 0x20 000019ee: DUP1 000019ef: DUP3 000019f0: MSTORE 000019f1: PUSH1 0x23 000019f3: SWAP1 000019f4: DUP3 000019f5: ADD 000019f6: MSTORE 000019f7: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d61 00001a18: PUSH1 0x40 00001a1a: DUP3 00001a1b: ADD 00001a1c: MSTORE 00001a1d: PUSH3 0x0e8c6d 00001a21: PUSH1 0xeb 00001a23: SHL 00001a24: PUSH1 0x60 00001a26: DUP3 00001a27: ADD 00001a28: MSTORE 00001a29: PUSH1 0x80 00001a2b: ADD 00001a2c: SWAP1 00001a2d: JUMP 00001a2e: JUMPDEST 00001a2f: PUSH4 0x4e487b71 00001a34: PUSH1 0xe0 00001a36: SHL 00001a37: PUSH1 0x00 00001a39: MSTORE 00001a3a: PUSH1 0x32 00001a3c: PUSH1 0x04 00001a3e: MSTORE 00001a3f: PUSH1 0x24 00001a41: PUSH1 0x00 00001a43: REVERT 00001a44: JUMPDEST 00001a45: PUSH1 0x00 00001a47: PUSH1 0x20 00001a49: DUP3 00001a4a: DUP5 00001a4b: SUB 00001a4c: SLT 00001a4d: ISZERO 00001a4e: PUSH2 0x1a56 00001a51: JUMPI 00001a52: PUSH1 0x00 00001a54: DUP1 00001a55: REVERT 00001a56: JUMPDEST 00001a57: PUSH2 0x078a 00001a5a: DUP3 00001a5b: PUSH2 0x135c 00001a5e: JUMP 00001a5f: JUMPDEST 00001a60: PUSH1 0x00 00001a62: DUP1 00001a63: DUP4 00001a64: CALLDATALOAD 00001a65: PUSH1 0x1e 00001a67: NOT 00001a68: DUP5 00001a69: CALLDATASIZE 00001a6a: SUB 00001a6b: ADD 00001a6c: DUP2 00001a6d: SLT 00001a6e: PUSH2 0x1a76 00001a71: JUMPI 00001a72: PUSH1 0x00 00001a74: DUP1 00001a75: REVERT 00001a76: JUMPDEST 00001a77: DUP4 00001a78: ADD 00001a79: DUP1 00001a7a: CALLDATALOAD 00001a7b: SWAP2 00001a7c: POP 00001a7d: PUSH1 0x01 00001a7f: PUSH1 0x01 00001a81: PUSH1 0x40 00001a83: SHL 00001a84: SUB 00001a85: DUP3 00001a86: GT 00001a87: ISZERO 00001a88: PUSH2 0x1a90 00001a8b: JUMPI 00001a8c: PUSH1 0x00 00001a8e: DUP1 00001a8f: REVERT 00001a90: JUMPDEST 00001a91: PUSH1 0x20 00001a93: ADD 00001a94: SWAP2 00001a95: POP 00001a96: CALLDATASIZE 00001a97: DUP2 00001a98: SWAP1 00001a99: SUB 00001a9a: DUP3 00001a9b: SGT 00001a9c: ISZERO 00001a9d: PUSH2 0x13b9 00001aa0: JUMPI 00001aa1: PUSH1 0x00 00001aa3: DUP1 00001aa4: REVERT 00001aa5: JUMPDEST 00001aa6: PUSH4 0x4e487b71 00001aab: PUSH1 0xe0 00001aad: SHL 00001aae: PUSH1 0x00 00001ab0: MSTORE 00001ab1: PUSH1 0x11 00001ab3: PUSH1 0x04 00001ab5: MSTORE 00001ab6: PUSH1 0x24 00001ab8: PUSH1 0x00 00001aba: REVERT 00001abb: JUMPDEST 00001abc: PUSH1 0x00 00001abe: PUSH1 0x01 00001ac0: DUP3 00001ac1: ADD 00001ac2: PUSH2 0x1acd 00001ac5: JUMPI 00001ac6: PUSH2 0x1acd 00001ac9: PUSH2 0x1aa5 00001acc: JUMP 00001acd: JUMPDEST 00001ace: POP 00001acf: PUSH1 0x01 00001ad1: ADD 00001ad2: SWAP1 00001ad3: JUMP 00001ad4: JUMPDEST 00001ad5: DUP2 00001ad6: DUP4 00001ad7: MSTORE 00001ad8: PUSH1 0x00 00001ada: PUSH1 0x20 00001adc: DUP1 00001add: DUP6 00001ade: ADD 00001adf: DUP1 00001ae0: DUP2 00001ae1: SWAP7 00001ae2: POP 00001ae3: DUP6 00001ae4: PUSH1 0x05 00001ae6: SHL 00001ae7: DUP2 00001ae8: ADD 00001ae9: SWAP2 00001aea: POP 00001aeb: DUP5 00001aec: PUSH1 0x00 00001aee: JUMPDEST 00001aef: DUP8 00001af0: DUP2 00001af1: LT 00001af2: ISZERO 00001af3: PUSH2 0x1b58 00001af6: JUMPI 00001af7: DUP3 00001af8: DUP5 00001af9: SUB 00001afa: DUP10 00001afb: MSTORE 00001afc: DUP2 00001afd: CALLDATALOAD 00001afe: PUSH1 0x1e 00001b00: NOT 00001b01: DUP9 00001b02: CALLDATASIZE 00001b03: SUB 00001b04: ADD 00001b05: DUP2 00001b06: SLT 00001b07: PUSH2 0x1b0f 00001b0a: JUMPI 00001b0b: PUSH1 0x00 00001b0d: DUP1 00001b0e: REVERT 00001b0f: JUMPDEST 00001b10: DUP8 00001b11: ADD 00001b12: DUP6 00001b13: DUP2 00001b14: ADD 00001b15: SWAP1 00001b16: CALLDATALOAD 00001b17: PUSH1 0x01 00001b19: PUSH1 0x01 00001b1b: PUSH1 0x40 00001b1d: SHL 00001b1e: SUB 00001b1f: DUP2 00001b20: GT 00001b21: ISZERO 00001b22: PUSH2 0x1b2a 00001b25: JUMPI 00001b26: PUSH1 0x00 00001b28: DUP1 00001b29: REVERT 00001b2a: JUMPDEST 00001b2b: DUP1 00001b2c: CALLDATASIZE 00001b2d: SUB 00001b2e: DUP3 00001b2f: SGT 00001b30: ISZERO 00001b31: PUSH2 0x1b39 00001b34: JUMPI 00001b35: PUSH1 0x00 00001b37: DUP1 00001b38: REVERT 00001b39: JUMPDEST 00001b3a: PUSH2 0x1b44 00001b3d: DUP7 00001b3e: DUP3 00001b3f: DUP5 00001b40: PUSH2 0x1953 00001b43: JUMP 00001b44: JUMPDEST 00001b45: SWAP11 00001b46: DUP8 00001b47: ADD 00001b48: SWAP11 00001b49: SWAP6 00001b4a: POP 00001b4b: POP 00001b4c: POP 00001b4d: SWAP1 00001b4e: DUP5 00001b4f: ADD 00001b50: SWAP1 00001b51: PUSH1 0x01 00001b53: ADD 00001b54: PUSH2 0x1aee 00001b57: JUMP 00001b58: JUMPDEST 00001b59: POP 00001b5a: SWAP2 00001b5b: SWAP8 00001b5c: SWAP7 00001b5d: POP 00001b5e: POP 00001b5f: POP 00001b60: POP 00001b61: POP 00001b62: POP 00001b63: POP 00001b64: JUMP 00001b65: JUMPDEST 00001b66: PUSH1 0xa0 00001b68: DUP1 00001b69: DUP3 00001b6a: MSTORE 00001b6b: DUP2 00001b6c: ADD 00001b6d: DUP9 00001b6e: SWAP1 00001b6f: MSTORE 00001b70: PUSH1 0x00 00001b72: DUP10 00001b73: PUSH1 0xc0 00001b75: DUP4 00001b76: ADD 00001b77: DUP3 00001b78: JUMPDEST 00001b79: DUP12 00001b7a: DUP2 00001b7b: LT 00001b7c: ISZERO 00001b7d: PUSH2 0x1ba6 00001b80: JUMPI 00001b81: PUSH1 0x01 00001b83: PUSH1 0x01 00001b85: PUSH1 0xa0 00001b87: SHL 00001b88: SUB 00001b89: PUSH2 0x1b91 00001b8c: DUP5 00001b8d: PUSH2 0x135c 00001b90: JUMP 00001b91: JUMPDEST 00001b92: AND 00001b93: DUP3 00001b94: MSTORE 00001b95: PUSH1 0x20 00001b97: SWAP3 00001b98: DUP4 00001b99: ADD 00001b9a: SWAP3 00001b9b: SWAP1 00001b9c: SWAP2 00001b9d: ADD 00001b9e: SWAP1 00001b9f: PUSH1 0x01 00001ba1: ADD 00001ba2: PUSH2 0x1b78 00001ba5: JUMP 00001ba6: JUMPDEST 00001ba7: POP 00001ba8: DUP4 00001ba9: DUP2 00001baa: SUB 00001bab: PUSH1 0x20 00001bad: DUP6 00001bae: ADD 00001baf: MSTORE 00001bb0: DUP9 00001bb1: DUP2 00001bb2: MSTORE 00001bb3: PUSH1 0x01 00001bb5: PUSH1 0x01 00001bb7: PUSH1 0xfb 00001bb9: SHL 00001bba: SUB 00001bbb: DUP10 00001bbc: GT 00001bbd: ISZERO 00001bbe: PUSH2 0x1bc6 00001bc1: JUMPI 00001bc2: PUSH1 0x00 00001bc4: DUP1 00001bc5: REVERT 00001bc6: JUMPDEST 00001bc7: DUP9 00001bc8: PUSH1 0x05 00001bca: SHL 00001bcb: SWAP2 00001bcc: POP 00001bcd: DUP2 00001bce: DUP11 00001bcf: PUSH1 0x20 00001bd1: DUP4 00001bd2: ADD 00001bd3: CALLDATACOPY 00001bd4: ADD 00001bd5: DUP3 00001bd6: DUP2 00001bd7: SUB 00001bd8: PUSH1 0x20 00001bda: SWAP1 00001bdb: DUP2 00001bdc: ADD 00001bdd: PUSH1 0x40 00001bdf: DUP6 00001be0: ADD 00001be1: MSTORE 00001be2: PUSH2 0x1bee 00001be5: SWAP1 00001be6: DUP3 00001be7: ADD 00001be8: DUP8 00001be9: DUP10 00001bea: PUSH2 0x1ad4 00001bed: JUMP 00001bee: JUMPDEST 00001bef: PUSH1 0x60 00001bf1: DUP5 00001bf2: ADD 00001bf3: SWAP6 00001bf4: SWAP1 00001bf5: SWAP6 00001bf6: MSTORE 00001bf7: POP 00001bf8: POP 00001bf9: PUSH1 0x80 00001bfb: ADD 00001bfc: MSTORE 00001bfd: SWAP7 00001bfe: SWAP6 00001bff: POP 00001c00: POP 00001c01: POP 00001c02: POP 00001c03: POP 00001c04: POP 00001c05: JUMP 00001c06: JUMPDEST 00001c07: DUP1 00001c08: DUP3 00001c09: ADD 00001c0a: DUP1 00001c0b: DUP3 00001c0c: GT 00001c0d: ISZERO 00001c0e: PUSH2 0x06b0 00001c11: JUMPI 00001c12: PUSH2 0x06b0 00001c15: PUSH2 0x1aa5 00001c18: JUMP 00001c19: JUMPDEST 00001c1a: PUSH1 0x00 00001c1c: JUMPDEST 00001c1d: DUP4 00001c1e: DUP2 00001c1f: LT 00001c20: ISZERO 00001c21: PUSH2 0x1c34 00001c24: JUMPI 00001c25: DUP2 00001c26: DUP2 00001c27: ADD 00001c28: MLOAD 00001c29: DUP4 00001c2a: DUP3 00001c2b: ADD 00001c2c: MSTORE 00001c2d: PUSH1 0x20 00001c2f: ADD 00001c30: PUSH2 0x1c1c 00001c33: JUMP 00001c34: JUMPDEST 00001c35: POP 00001c36: POP 00001c37: PUSH1 0x00 00001c39: SWAP2 00001c3a: ADD 00001c3b: MSTORE 00001c3c: JUMP 00001c3d: JUMPDEST 00001c3e: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000 00001c5f: DUP2 00001c60: MSTORE 00001c61: PUSH1 0x00 00001c63: DUP4 00001c64: MLOAD 00001c65: PUSH2 0x1c75 00001c68: DUP2 00001c69: PUSH1 0x17 00001c6b: DUP6 00001c6c: ADD 00001c6d: PUSH1 0x20 00001c6f: DUP9 00001c70: ADD 00001c71: PUSH2 0x1c19 00001c74: JUMP 00001c75: JUMPDEST 00001c76: PUSH17 0x01034b99036b4b9b9b4b733903937b6329 00001c88: PUSH1 0x7d 00001c8a: SHL 00001c8b: PUSH1 0x17 00001c8d: SWAP2 00001c8e: DUP5 00001c8f: ADD 00001c90: SWAP2 00001c91: DUP3 00001c92: ADD 00001c93: MSTORE 00001c94: DUP4 00001c95: MLOAD 00001c96: PUSH2 0x1ca6 00001c99: DUP2 00001c9a: PUSH1 0x28 00001c9c: DUP5 00001c9d: ADD 00001c9e: PUSH1 0x20 00001ca0: DUP9 00001ca1: ADD 00001ca2: PUSH2 0x1c19 00001ca5: JUMP 00001ca6: JUMPDEST 00001ca7: ADD 00001ca8: PUSH1 0x28 00001caa: ADD 00001cab: SWAP5 00001cac: SWAP4 00001cad: POP 00001cae: POP 00001caf: POP 00001cb0: POP 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: PUSH1 0x20 00001cb5: DUP2 00001cb6: MSTORE 00001cb7: PUSH1 0x00 00001cb9: DUP3 00001cba: MLOAD 00001cbb: DUP1 00001cbc: PUSH1 0x20 00001cbe: DUP5 00001cbf: ADD 00001cc0: MSTORE 00001cc1: PUSH2 0x1cd1 00001cc4: DUP2 00001cc5: PUSH1 0x40 00001cc7: DUP6 00001cc8: ADD 00001cc9: PUSH1 0x20 00001ccb: DUP8 00001ccc: ADD 00001ccd: PUSH2 0x1c19 00001cd0: JUMP 00001cd1: JUMPDEST 00001cd2: PUSH1 0x1f 00001cd4: ADD 00001cd5: PUSH1 0x1f 00001cd7: NOT 00001cd8: AND 00001cd9: SWAP2 00001cda: SWAP1 00001cdb: SWAP2 00001cdc: ADD 00001cdd: PUSH1 0x40 00001cdf: ADD 00001ce0: SWAP3 00001ce1: SWAP2 00001ce2: POP 00001ce3: POP 00001ce4: JUMP 00001ce5: JUMPDEST 00001ce6: PUSH1 0x20 00001ce8: DUP1 00001ce9: DUP3 00001cea: MSTORE 00001ceb: PUSH1 0x2a 00001ced: SWAP1 00001cee: DUP3 00001cef: ADD 00001cf0: MSTORE 00001cf1: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973 00001d12: PUSH1 0x40 00001d14: DUP3 00001d15: ADD 00001d16: MSTORE 00001d17: PUSH10 0x206e6f74207265616479 00001d22: PUSH1 0xb0 00001d24: SHL 00001d25: PUSH1 0x60 00001d27: DUP3 00001d28: ADD 00001d29: MSTORE 00001d2a: PUSH1 0x80 00001d2c: ADD 00001d2d: SWAP1 00001d2e: JUMP 00001d2f: JUMPDEST 00001d30: DUP2 00001d31: DUP4 00001d32: DUP3 00001d33: CALLDATACOPY 00001d34: PUSH1 0x00 00001d36: SWAP2 00001d37: ADD 00001d38: SWAP1 00001d39: DUP2 00001d3a: MSTORE 00001d3b: SWAP2 00001d3c: SWAP1 00001d3d: POP 00001d3e: JUMP 00001d3f: JUMPDEST 00001d40: DUP1 00001d41: DUP3 00001d42: MUL 00001d43: DUP2 00001d44: ISZERO 00001d45: DUP3 00001d46: DUP3 00001d47: DIV 00001d48: DUP5 00001d49: EQ 00001d4a: OR 00001d4b: PUSH2 0x06b0 00001d4e: JUMPI 00001d4f: PUSH2 0x06b0 00001d52: PUSH2 0x1aa5 00001d55: JUMP 00001d56: JUMPDEST 00001d57: PUSH1 0x00 00001d59: DUP2 00001d5a: PUSH2 0x1d65 00001d5d: JUMPI 00001d5e: PUSH2 0x1d65 00001d61: PUSH2 0x1aa5 00001d64: JUMP 00001d65: JUMPDEST 00001d66: POP 00001d67: PUSH1 0x00 00001d69: NOT 00001d6a: ADD 00001d6b: SWAP1 00001d6c: JUMP 00001d6d: INVALID 00001d6e: LOG2 00001d6f: PUSH5 0x6970667358 00001d75: UNKNOWN(0x22) 00001d76: SLT 00001d77: KECCAK256 00001d78: UNKNOWN(0xCB) 00001d79: UNKNOWN(0xB3) 00001d7a: ADDRESS 00001d7b: LOG3 00001d7c: UNKNOWN(0xB5) 00001d7d: UNKNOWN(0xA7) 00001d7e: UNKNOWN(0xF6) 00001d7f: MSTORE8 00001d80: UNKNOWN(0xAF) 00001d81: PC 00001d82: UNKNOWN(0xF8) 00001d83: UNKNOWN(0xC8) 00001d84: PUSH19 0xa0a51f2b0f9536670f31c4282982245dae3f72 00001d98: PUSH5 0x736f6c6343 00001d9e: STOP 00001d9f: ADDMOD 00001da0: GT 00001da1: STOP 00001da2: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | slither | TimelockController._execute(address,uint256,bytes) (contracts/Contract.sol#1485-1491) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
1485,
1486,
1487,
1488,
1489,
1490,
1491
],
"start": 52935,
"length": 265,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 35,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
},
{
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
1488,
1489
],
"start": 53062,
"length": 50,
"ending_column": 25,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
1485,
1486,
1487,
1488,
1489,
1490,
1491
],
"start": 52935,
"length": 265,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 35,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_execute",
"type": "function",
"lines": [
1485,
1486,
1487,
1488,
1489,
1490,
1491
]
},
{
"file": "contracts/Contract.sol",
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"lines": [
1488,
1489
]
}
],
"description": "TimelockController._execute(address,uint256,bytes) (contracts/Contract.sol#1485-1491) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)"
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x024b10c878ca87bd793de7b01863717f70ee15447fd58ecc418656f3ef80b87f
call_targets:
0x528fb7f75384ec26c1a65c088b637f0d1bf35702
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x024b10c878ca87bd793de7b01863717f70ee15447fd58ecc418656f3ef80b87f",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x528fb7f75384ec26c1a65c088b637f0d1bf35702"
],
"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": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe38335e5",
"selector": "0xe38335e5",
"calldata_variants": [
"0xe38335e5",
"0xe38335e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf27a0c92",
"selector": "0xf27a0c92",
"calldata_variants": [
"0xf27a0c92",
"0xf27a0c920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d252f5",
"selector": "0xc4d252f5",
"calldata_variants": [
"0xc4d252f5",
"0xc4d252f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd45c4435",
"selector": "0xd45c4435",
"calldata_variants": [
"0xd45c4435",
"0xd45c44350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91d14854",
"selector": "0x91d14854",
"calldata_variants": [
"0x91d14854",
"0x91d148540000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4068,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x024b10c878ca87bd793de7b01863717f70ee15447fd58ecc418656f3ef80b87f
call_targets:
0x528fb7f75384ec26c1a65c088b637f0d1bf35702
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x024b10c878ca87bd793de7b01863717f70ee15447fd58ecc418656f3ef80b87f",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x528fb7f75384ec26c1a65c088b637f0d1bf35702"
],
"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": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe38335e5",
"selector": "0xe38335e5",
"calldata_variants": [
"0xe38335e5",
"0xe38335e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf27a0c92",
"selector": "0xf27a0c92",
"calldata_variants": [
"0xf27a0c92",
"0xf27a0c920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d252f5",
"selector": "0xc4d252f5",
"calldata_variants": [
"0xc4d252f5",
"0xc4d252f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd45c4435",
"selector": "0xd45c4435",
"calldata_variants": [
"0xd45c4435",
"0xd45c44350000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x91d14854",
"selector": "0x91d14854",
"calldata_variants": [
"0x91d14854",
"0x91d148540000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4068,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | reentrancy | slither | Reentrancy in TimelockController.execute(address,uint256,bytes,bytes32,bytes32) (contracts/Contract.sol#1437-1448): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "execute",
"type": "function",
"source_mapping": {
"lines": [
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448
],
"start": 51270,
"length": 459,
"ending_column": 84,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 76,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "execute(address,uint256,bytes,bytes32,bytes32)"
}
},
{
"name": "_execute(target,value,payload)",
"type": "node",
"source_mapping": {
"lines": [
1447
],
"start": 51608,
"length": 32,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "execute",
"type": "function",
"source_mapping": {
"lines": [
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448
],
"start": 51270,
"length": 459,
"ending_column": 84,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 76,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "execute(address,uint256,bytes,bytes32,bytes32)"
}
}
}
},
{
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
1488,
1489
],
"start": 53062,
"length": 50,
"ending_column": 25,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
1485,
1486,
1487,
1488,
1489,
1490,
1491
],
"start": 52935,
"length": 265,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 35,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
},
{
"name": "_afterCall(id)",
"type": "node",
"source_mapping": {
"lines": [
1448
],
"start": 51708,
"length": 14,
"ending_column": 77,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 63,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "execute",
"type": "function",
"source_mapping": {
"lines": [
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448
],
"start": 51270,
"length": 459,
"ending_column": 84,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 76,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "execute(address,uint256,bytes,bytes32,bytes32)"
}
}
}
},
{
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"source_mapping": {
"lines": [
1510
],
"start": 53777,
"length": 33,
"ending_column": 69,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 36,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_afterCall",
"type": "function",
"source_mapping": {
"lines": [
1507,
1508,
1509,
1510
],
"start": 53642,
"length": 175,
"ending_column": 76,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_afterCall(bytes32)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "execute",
"type": "function",
"lines": [
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448
]
},
{
"file": "contracts/Contract.sol",
"name": "_execute(target,value,payload)",
"type": "node",
"lines": [
1447
]
},
{
"file": "contracts/Contract.sol",
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"lines": [
1488,
1489
]
},
{
"file": "contracts/Contract.sol",
"name": "_afterCall(id)",
"type": "node",
"lines": [
1448
]
},
{
"file": "contracts/Contract.sol",
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"lines": [
1510
]
}
],
"description": "Reentrancy in TimelockController.execute(address,uint256,bytes,bytes32,bytes32) (contracts/Contract.sol#1437-1448):\n\tExternal calls:\n\t- _execute(target,value,payload) (contracts/Contract.sol#1447)\n\t\t- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)\n\tState variables written after the call(s):\n\t- _afterCall(id) (contracts/Contract.sol#1448)\n\t\t- _timestamps[id] = _DONE_TIMESTAMP (contracts/Contract.sol#1510)\n\tTimelockController._timestamps (contracts/Contract.sol#1189-1196) can be used in cross function reentrancies:\n\t- TimelockController._afterCall(bytes32) (contracts/Contract.sol#1507-1510)\n\t- TimelockController._schedule(bytes32,uint256) (contracts/Contract.sol#1406-1414)\n\t- TimelockController.cancel(bytes32) (contracts/Contract.sol#1418-1427)\n\t- TimelockController.getTimestamp(bytes32) (contracts/Contract.sol#1316-1317)"
}
|
| high | reentrancy | slither | Reentrancy in TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (contracts/Contract.sol#1458-1483): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483
],
"start": 51989,
"length": 883,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
},
{
"name": "_execute(target,value,payload)",
"type": "node",
"source_mapping": {
"lines": [
1478,
1479,
1480
],
"start": 52737,
"length": 32,
"ending_column": 3,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 43,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483
],
"start": 51989,
"length": 883,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
}
}
},
{
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
1488,
1489
],
"start": 53062,
"length": 50,
"ending_column": 25,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
1485,
1486,
1487,
1488,
1489,
1490,
1491
],
"start": 52935,
"length": 265,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 35,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
},
{
"name": "_afterCall(id)",
"type": "node",
"source_mapping": {
"lines": [
1483
],
"start": 52851,
"length": 14,
"ending_column": 17,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483
],
"start": 51989,
"length": 883,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
}
}
},
{
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"source_mapping": {
"lines": [
1510
],
"start": 53777,
"length": 33,
"ending_column": 69,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 36,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_afterCall",
"type": "function",
"source_mapping": {
"lines": [
1507,
1508,
1509,
1510
],
"start": 53642,
"length": 175,
"ending_column": 76,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockController",
"type": "contract",
"source_mapping": {
"lines": [
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355,
1356,
1357,
1358,
1359,
1360,
1361,
1362,
1363,
1364,
1365,
1366,
1367,
1368,
1369,
1370,
1371,
1372,
1373,
1374,
1375,
1376,
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551
],
"start": 42084,
"length": 13261,
"ending_column": 27,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-zaf6gzsb/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_afterCall(bytes32)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "executeBatch",
"type": "function",
"lines": [
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483
]
},
{
"file": "contracts/Contract.sol",
"name": "_execute(target,value,payload)",
"type": "node",
"lines": [
1478,
1479,
1480
]
},
{
"file": "contracts/Contract.sol",
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"lines": [
1488,
1489
]
},
{
"file": "contracts/Contract.sol",
"name": "_afterCall(id)",
"type": "node",
"lines": [
1483
]
},
{
"file": "contracts/Contract.sol",
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"lines": [
1510
]
}
],
"description": "Reentrancy in TimelockController.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (contracts/Contract.sol#1458-1483):\n\tExternal calls:\n\t- _execute(target,value,payload) (contracts/Contract.sol#1478-1480)\n\t\t- (success,None) = target.call{value: value}(data) (contracts/Contract.sol#1488-1489)\n\tState variables written after the call(s):\n\t- _afterCall(id) (contracts/Contract.sol#1483)\n\t\t- _timestamps[id] = _DONE_TIMESTAMP (contracts/Contract.sol#1510)\n\tTimelockController._timestamps (contracts/Contract.sol#1189-1196) can be used in cross function reentrancies:\n\t- TimelockController._afterCall(bytes32) (contracts/Contract.sol#1507-1510)\n\t- TimelockController._schedule(bytes32,uint256) (contracts/Contract.sol#1406-1414)\n\t- TimelockController.cancel(bytes32) (contracts/Contract.sol#1418-1427)\n\t- TimelockController.getTimestamp(bytes32) (contracts/Contract.sol#1316-1317)"
}
|
| low | access_control | codex | Deployer retains TIMELOCK_ADMIN_ROLE, enabling immediate role changes outside timelock | 65 | no | — |
viewevidence_json{
"evidence": "Constructor passes msg.sender as the admin to TimelockController.",
"locations": [
"contracts/Contract.sol:1620"
],
"recommendation": "Consider renouncing TIMELOCK_ADMIN_ROLE after initial setup or pass address(0) as the admin so role changes must go through timelock governance (or transfer admin to a multisig with clear operational controls).",
"exploit_scenario": "If the deployer/admin key is compromised or malicious, it can instantly grant or revoke PROPOSER/EXECUTOR roles without going through the timelock, undermining governance assumptions (e.g., self-grant proposer/executor and schedule malicious operations with minimal delay)."
}
|