From b0966561ade695e434f42898711ef177a6f777c3 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Tue, 22 Sep 2026 13:05:24 -0500 Subject: [PATCH 01/10] feat(mainnet): add Cobalt rollout Co-authored-by: Codex --- .../2026-09-14-cobalt-upgrade/FACILITATOR.md | 94 ++++++++++-------- .../tasks/2026-09-14-cobalt-upgrade/Makefile | 68 ++++++++++--- .../config/mainnet/.env | 39 ++++++++ .../config/mainnet/README.md | 28 ++++++ .../config/mainnet/addresses.json | 1 + .../script/DeployCobaltCoreImpls.s.sol | 26 ++--- .../script/DeployCobaltProofImpls.s.sol | 6 +- .../script/ExecuteCobaltUpgrade.s.sol | 98 ++++++++++++------- 8 files changed, 255 insertions(+), 105 deletions(-) create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md index 8b221908b..456338524 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md @@ -1,14 +1,14 @@ # Cobalt Upgrade — Facilitator Guide -This task delivers the three Cobalt L1 changes in a single ProxyAdmin-owner transaction. -On Sepolia it also folds in the hinted Nitro TEE registry cutover as a sixth call: +This task delivers the Cobalt L1 changes in a single ProxyAdmin-owner transaction. Sepolia and +mainnet also fold in the hinted Nitro TEE registry cutover. | Change | Contracts touched | | --- | --- | -| Dynamic upgrades | `ProtocolVersions` (new proxy + implementation), `AggregateVerifier` (redeployed to bind it) | +| Dynamic upgrades | `ProtocolVersions`, `AggregateVerifier` (redeployed to bind it) | | EthLockbox removal | `OptimismPortal2`, `SystemConfig` | | CREATE2 for dispute games | `DisputeGameFactory` | -| Hinted Nitro TEE cutover (Sepolia) | `TEEProverRegistry` proxy, plus EOA-deployed `P384Verifier` / `CertManager` / `NitroValidator` | +| Hinted Nitro TEE cutover | `TEEProverRegistry` proxy, plus EOA-deployed `P384Verifier` / `CertManager` / `NitroValidator` | Replace `` with the network you are rolling out, for example `zeronet`. Every command requires `TASK_NETWORK` explicitly — there is no default. Run everything from this directory @@ -21,15 +21,16 @@ make TASK_NETWORK= deps ``` This pins `base/contracts` at `BASE_CONTRACTS_COMMIT`, installs the extra OpenZeppelin, solmate, -and `nitro-validator` dependencies that building those sources requires, and applies +and `nitro-validator` dependencies that building those sources requires. Networks with +`APPLY_MAX_GAS_LIMIT_PATCH=false` use the stock `SystemConfig`; the others apply `patch/max-gas-limit.patch`. The patch matters. Zeronet runs a `SystemConfig` that raises `MAX_GAS_LIMIT` to 2,000,000,000, and Cobalt modifies `SystemConfig`. Deploying a stock build would quietly drop the chain back to 500,000,000. The patch re-applies the raise and tags the semver `3.14.0+max-gas-limit-2000M`, and the deploy script refuses to proceed if that version string is missing. On a network that does not -run the patched build, drop `apply-patches` from the `deps` prerequisites and relax the version -assertions in `DeployCobaltCoreImpls` and `ExecuteCobaltUpgrade` to the stock `3.14.0`. +run the patched build, set `APPLY_MAX_GAS_LIMIT_PATCH=false` and +`EXPECTED_SYSTEM_CONFIG_VERSION=3.14.0`. ## 2. Review the network config @@ -47,6 +48,9 @@ Open `config//.env` and confirm every value, in particular: - `PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION` — must be non-zero and fit in 128 bits. The comment above it gives the `cast` command to re-derive the packed value from the human-readable version. - `PROTOCOL_VERSIONS_INCIDENT_RESPONDER` — the address allowed to use the incident path. +- `PROTOCOL_VERSIONS_DEPLOYMENT_JSON` — when set, the task reuses the proxy and implementation from + the standalone deployment instead of deploying or initializing another registry. Mainnet uses + this path and verifies the already initialized Cobalt schedule without modifying it. - `OLD_*` — the currently deployed implementations. `ExecuteCobaltUpgrade` asserts these match the live proxies before building any calls, so a stale value stops the task rather than upgrading from an unexpected base. @@ -57,9 +61,9 @@ Open `config//.env` and confirm every value, in particular: [`releases/v1.4.0`](https://github.com/base/base/tree/releases/v1.4.0). The deploy script refuses a zero hash or a hash that still matches the live verifier. Every other `AggregateVerifier` constructor argument is read back from the live implementation at deploy time. -- Sepolia TEE anchors — `OLD_TEE_PROVER_REGISTRY_IMPL`, `OLD_NITRO_VERIFIER`, +- TEE anchors — `OLD_TEE_PROVER_REGISTRY_IMPL`, `OLD_NITRO_VERIFIER`, `CERT_MANAGER_OWNER`, and `CERT_MANAGER_REVOKER`. Re-check the live registry implementation - and `NITRO_VERIFIER()` before deploying. `ExecuteCobaltUpgrade` only emits the sixth call + and `NITRO_VERIFIER()` before deploying. `ExecuteCobaltUpgrade` only emits the TEE upgrade call when `NEW_TEE_PROVER_REGISTRY_IMPL` is present in `addresses.json`. ## 3. Deploy @@ -72,13 +76,13 @@ This runs two steps because `base/contracts` pins different optimizer settings p reproducible bytecode requires honouring them: 1. `deploy-core` (5000 runs) — `OptimismPortal2`, `SystemConfig`, `DisputeGameFactory` - implementations and the `ProtocolVersions` proxy. -2. `deploy-proofs` (999999 runs) — the `ProtocolVersions` implementation and `AggregateVerifier`. + implementations and, unless predeployed, the `ProtocolVersions` proxy. +2. `deploy-proofs` (999999 runs) — `AggregateVerifier` and, unless predeployed, the + `ProtocolVersions` implementation. -The proxy is deployed in the first step because `AggregateVerifier` takes its address as a -constructor immutable. It is left pointing at no implementation; the upgrade transaction sets and -initializes it atomically. Each step writes to `config//addresses.json` and asserts its own -postconditions, so a wrong constructor argument fails at deploy time rather than at signing time. +Each step writes to `config//addresses.json` and asserts its own postconditions. Mainnet +must complete `2026-09-21-deploy-protocol-versions` first; these steps copy that task's deployed +addresses and bind the new `AggregateVerifier` to the initialized registry. Then verify the source: @@ -87,26 +91,27 @@ VERIFIER_API_KEY= make TASK_NETWORK= verify-core VERIFIER_API_KEY= make TASK_NETWORK= verify-proofs ``` -On Sepolia, also deploy the hinted Nitro stack. These targets are not part of `make deploy`, -so a Zeronet re-run cannot accidentally redeploy them: +Mainnet sets `DEPLOY_TEE_WITH_COBALT=true`, so its `make deploy` runs the Nitro and TEE deployments +after `deploy-core` and `deploy-proofs`. Other networks can run the same steps separately: ```bash -make TASK_NETWORK=sepolia deploy-nitro-validator -VERIFIER_API_KEY= make TASK_NETWORK=sepolia verify-nitro-validator -make TASK_NETWORK=sepolia deploy-tee-registry-impl -VERIFIER_API_KEY= make TASK_NETWORK=sepolia verify-tee-registry-impl +make TASK_NETWORK= deploy-nitro-validator +VERIFIER_API_KEY= make TASK_NETWORK= verify-nitro-validator +make TASK_NETWORK= deploy-tee-registry-impl +VERIFIER_API_KEY= make TASK_NETWORK= verify-tee-registry-impl ``` This writes `p384Verifier`, `certManager`, `nitroValidator`, and `teeProverRegistryImpl` into -`config/sepolia/addresses.json` without overwriting the Cobalt addresses. +`config//addresses.json` without overwriting the Cobalt addresses. Commit `config//addresses.json` and the `records/` broadcast artifacts. -Before generating Sepolia validations, register the new-PCR0 Cobalt enclaves on the live `0.5.0` -registry. Call 5 rotates `TEE_IMAGE_HASH`, so only those signers stay valid after execute. +Before generating validations for a TEE cutover, register the new-PCR0 Cobalt enclaves on the live +`0.5.0` registry. Registering the new AggregateVerifier rotates `TEE_IMAGE_HASH`, so only those +signers stay valid after execute. `signerImageHash` is storage and survives the implementation swap. -Then migrate the offchain registrar to signer `0x8074b32bD7d06C8f27596F3D6fbf867A36eA22a3` and keep +Then migrate the offchain registrar to the network's configured `CERT_MANAGER_REVOKER` and keep `BASE_REGISTRAR_CRL_NITRO_VERIFIER_ADDRESS` so AWS CRL checks still work. Stop the old registrar immediately before `execute`. There is no standalone TEE rollback in this task: a failed cutover means rolling the whole Cobalt bundle back. After execute, start the migrated registrar and rotate @@ -120,8 +125,7 @@ make TASK_NETWORK= gen-validation-sc ``` These write `config//validations/base-signer.json` and `security-council-signer.json`. -For Sepolia (and any non-mainnet rollout) remove each generated `taskOriginConfig` and add this -root field: +For any non-mainnet rollout, remove each generated `taskOriginConfig` and add this root field: ```json "skipTaskOriginValidation": true @@ -130,6 +134,14 @@ root field: Commit them, then set the `config//README.md` status to `READY TO SIGN` and share it with signers. +For mainnet, generate and commit the task-origin signatures after the validations are final: + +```bash +make TASK_NETWORK=mainnet sign-as-task-creator +make TASK_NETWORK=mainnet sign-as-base-facilitator +make TASK_NETWORK=mainnet sign-as-sc-facilitator +``` + ## 5. Collect signatures and execute The ProxyAdmin owner is a 2-of-2 of the Base multisig and the Security Council, so each approves @@ -146,20 +158,20 @@ than land a partial upgrade. ## What the upgrade transaction does -Five calls on Zeronet, six on Sepolia, all from the ProxyAdmin owner Safe: +Five calls on Zeronet and mainnet, six on Sepolia, all from the ProxyAdmin owner Safe: -1. `ProxyAdmin.upgradeAndCall(protocolVersionsProxy, protocolVersionsImpl, initialize(...))` — - `initialize` is `reinitializer(1)` on a never-initialized proxy, so it must be bundled with the - implementation set rather than sent separately. +1. Networks without a predeployed registry use + `ProxyAdmin.upgradeAndCall(protocolVersionsProxy, protocolVersionsImpl, initialize(...))`. + Mainnet skips this call because the standalone task already initialized the complete schedule. 2. `ProxyAdmin.upgrade(optimismPortal, newImpl)` 3. `ProxyAdmin.upgrade(systemConfig, newImpl)` 4. `ProxyAdmin.upgrade(disputeGameFactory, newImpl)` 5. `DisputeGameFactory.setImplementation(621, newAggregateVerifier)` -6. `ProxyAdmin.upgrade(teeProverRegistryProxy, newTeeProverRegistryImpl)` — Sepolia only, when +6. `ProxyAdmin.upgrade(teeProverRegistryProxy, newTeeProverRegistryImpl)` — when `NEW_TEE_PROVER_REGISTRY_IMPL` is set. Storage (owners, signers, per-signer image hashes, - proposers, game type) is unchanged; only the implementation and nitro wiring change. Call 5 - does rotate the expected TEE image hash, because the registry reads it from the new - AggregateVerifier. + proposers, game type) is unchanged; only the implementation and nitro wiring change. Registering + the AggregateVerifier rotates the expected TEE image hash, because the registry reads it from the + new AggregateVerifier. Calls 2–4 and 6 are bare upgrades: none of those implementations adds state or bumps its init version, so there is nothing to reinitialize. @@ -168,10 +180,10 @@ version, so there is nothing to reinitialize. - **Every changed contract bumps its version.** `OptimismPortal2` goes `5.2.0` -> `6.0.0`, `DisputeGameFactory` `1.4.0` -> `1.5.0`, `AggregateVerifier` `0.1.0` -> `0.2.0`, and `SystemConfig` - `3.13.2+max-gas-limit-2000M` -> `3.14.0+max-gas-limit-2000M`, so `version()` read through each - proxy is a sound check that the upgrade landed. On Sepolia, `TEEProverRegistry` goes + moves to the configured `EXPECTED_SYSTEM_CONFIG_VERSION`, so `version()` read through each proxy + is a sound check that the upgrade landed. On TEE cutovers, `TEEProverRegistry` goes `0.5.0` -> `0.6.1` and `NITRO_VERIFIER` is replaced by `NITRO_VALIDATOR`. -- **The Cobalt activation is scheduled, so the transaction is time-sensitive.** - `ProtocolVersions.initialize` enforces one hour of notice on future timestamps, so it reverts if - the upgrade lands within the hour before the configured Cobalt activation. Execute well before - that window, or push the timestamp out. +- **A scheduled Cobalt activation is time-sensitive.** Networks that initialize the registry in + this transaction must execute before the one-hour notice window. Mainnet's standalone registry + task already scheduled Cobalt for September 30, 2026 at 18:00 UTC; this transaction leaves that + schedule unchanged. diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile index 6dd734e18..d4887bb62 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile @@ -13,10 +13,26 @@ PROJECT_DIR := $(abspath ../..) include $(REPO_ROOT)/config/$(TASK_NETWORK).env include config/$(TASK_NETWORK)/.env +EXPECTED_SYSTEM_CONFIG_VERSION ?= 3.14.0+max-gas-limit-2000M +PROTOCOL_VERSIONS_PREDEPLOYED ?= false +DEPLOY_TEE_WITH_COBALT ?= false + SIGNER_TOOL_PATH := $(REPO_ROOT)/signer-tool VALIDATIONS_DIR := $(CURDIR)/config/$(TASK_NETWORK)/validations RPC_URL := $(L1_RPC_URL) ADDRESSES_JSON := $(CURDIR)/config/$(TASK_NETWORK)/addresses.json +TASK_ORIGIN_DIR := $(CURDIR)/config/$(TASK_NETWORK) +SIGNATURE_DIR := $(CURDIR)/signatures/$(TASK_NETWORK) + +ifneq ($(strip $(PROTOCOL_VERSIONS_DEPLOYMENT_JSON)),) +PROTOCOL_VERSIONS_DEPLOYMENT_JSON := $(abspath $(PROTOCOL_VERSIONS_DEPLOYMENT_JSON)) +EXISTING_PROTOCOL_VERSIONS_PROXY = $(shell jq -r '.protocolVersionsProxy // empty' $(PROTOCOL_VERSIONS_DEPLOYMENT_JSON) 2>/dev/null) +EXISTING_PROTOCOL_VERSIONS_IMPL = $(shell jq -r '.protocolVersionsImpl // empty' $(PROTOCOL_VERSIONS_DEPLOYMENT_JSON) 2>/dev/null) +PROTOCOL_VERSIONS_DEPLOY_ENV = \ + EXISTING_PROTOCOL_VERSIONS_PROXY=$(EXISTING_PROTOCOL_VERSIONS_PROXY) \ + EXISTING_PROTOCOL_VERSIONS_IMPL=$(EXISTING_PROTOCOL_VERSIONS_IMPL) +PROTOCOL_VERSIONS_DEPLOY_PREREQUISITE = validate-protocol-versions-deployment +endif TASK_DIR := tasks/2026-09-14-cobalt-upgrade DEPLOY_CORE_SCRIPT := $(TASK_DIR)/script/DeployCobaltCoreImpls.s.sol:DeployCobaltCoreImpls @@ -55,7 +71,9 @@ DEPLOY_ENV = ADDRESSES_JSON=$(ADDRESSES_JSON) \ L2_BLOCK_TIME=$(L2_BLOCK_TIME) \ AGGREGATE_VERIFIER_TEE_IMAGE_HASH=$(AGGREGATE_VERIFIER_TEE_IMAGE_HASH) \ AGGREGATE_VERIFIER_ZK_RANGE_HASH=$(AGGREGATE_VERIFIER_ZK_RANGE_HASH) \ - AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH=$(AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH) + AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH=$(AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH) \ + EXPECTED_SYSTEM_CONFIG_VERSION=$(EXPECTED_SYSTEM_CONFIG_VERSION) \ + $(PROTOCOL_VERSIONS_DEPLOY_ENV) UPGRADE_ENV = PROXY_ADMIN_OWNER=$(PROXY_ADMIN_OWNER) \ L1_PROXY_ADMIN=$(L1_PROXY_ADMIN) \ @@ -74,12 +92,13 @@ UPGRADE_ENV = PROXY_ADMIN_OWNER=$(PROXY_ADMIN_OWNER) \ PROTOCOL_VERSIONS_IMPL=$(PROTOCOL_VERSIONS_IMPL) \ PROTOCOL_VERSIONS_INCIDENT_RESPONDER=$(PROTOCOL_VERSIONS_INCIDENT_RESPONDER) \ PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION) \ + PROTOCOL_VERSIONS_PREDEPLOYED=$(PROTOCOL_VERSIONS_PREDEPLOYED) \ PROTOCOL_VERSIONS_INITIAL_SCHEDULE=$(PROTOCOL_VERSIONS_INITIAL_SCHEDULE) \ + EXPECTED_SYSTEM_CONFIG_VERSION=$(EXPECTED_SYSTEM_CONFIG_VERSION) \ $(TEE_UPGRADE_ENV) -# Sepolia (and later networks that still need the hinted Nitro cutover) pass these -# so ExecuteCobaltUpgrade emits a sixth ProxyAdmin.upgrade. Zeronet leaves them -# unset and stays on the original five-call transaction. +# Networks that still need the hinted Nitro cutover pass these so ExecuteCobaltUpgrade +# appends a ProxyAdmin.upgrade for the registry. ifneq ($(NEW_TEE_PROVER_REGISTRY_IMPL),) TEE_UPGRADE_ENV = \ TEE_PROVER_REGISTRY_PROXY=$(TEE_PROVER_REGISTRY_PROXY) \ @@ -102,7 +121,11 @@ endif # Prerequisites merge with the root `deps` rule, so these run after `forge-deps` # has installed base/contracts at BASE_CONTRACTS_COMMIT. .PHONY: deps -deps: task-extra-deps apply-patches +deps: task-extra-deps + +ifneq ($(APPLY_MAX_GAS_LIMIT_PATCH),false) +deps: apply-patches +endif # The shared project installs only forge-std, solady and lib-keccak. Building the # Cobalt implementations from source additionally needs base/contracts' own pinned @@ -122,11 +145,22 @@ task-extra-deps: apply-patches: cd $(PROJECT_DIR)/lib/contracts && patch -p1 --forward < $(CURDIR)/patch/max-gas-limit.patch +.PHONY: validate-protocol-versions-deployment +validate-protocol-versions-deployment: + @jq -e '.protocolVersionsProxy and .protocolVersionsImpl' "$(PROTOCOL_VERSIONS_DEPLOYMENT_JSON)" >/dev/null || \ + (echo "complete the standalone ProtocolVersions deployment first" && exit 1) + ## # Deployment ## .PHONY: deploy -deploy: deploy-core deploy-proofs +deploy: + $(MAKE) TASK_NETWORK=$(TASK_NETWORK) deploy-core + $(MAKE) TASK_NETWORK=$(TASK_NETWORK) deploy-proofs +ifeq ($(DEPLOY_TEE_WITH_COBALT),true) + $(MAKE) TASK_NETWORK=$(TASK_NETWORK) deploy-nitro-validator + $(MAKE) TASK_NETWORK=$(TASK_NETWORK) deploy-tee-registry-impl +endif # base/contracts pins OptimismPortal2, SystemConfig, DisputeGameFactory and Proxy to # 5000 optimizer runs, and ProtocolVersions and AggregateVerifier to 999999, and builds @@ -137,14 +171,14 @@ deploy: deploy-core deploy-proofs COBALT_BUILD = FOUNDRY_OPTIMIZER=true FOUNDRY_BYTECODE_HASH=none FOUNDRY_EVM_VERSION=cancun .PHONY: deploy-core -deploy-core: +deploy-core: $(PROTOCOL_VERSIONS_DEPLOY_PREREQUISITE) @test -f "$(ADDRESSES_JSON)" || echo '{}' > "$(ADDRESSES_JSON)" cd $(PROJECT_DIR) && $(DEPLOY_ENV) $(COBALT_BUILD) FOUNDRY_OPTIMIZER_RUNS=5000 \ $(MISE_EXEC) forge script --rpc-url $(L1_RPC_URL) $(DEPLOY_CORE_SCRIPT) \ --ledger --hd-paths $(LEDGER_HD_PATH) --broadcast -vvvv .PHONY: deploy-proofs -deploy-proofs: +deploy-proofs: $(PROTOCOL_VERSIONS_DEPLOY_PREREQUISITE) cd $(PROJECT_DIR) && $(DEPLOY_ENV) $(COBALT_BUILD) FOUNDRY_OPTIMIZER_RUNS=999999 \ $(MISE_EXEC) forge script --rpc-url $(L1_RPC_URL) $(DEPLOY_PROOFS_SCRIPT) \ --ledger --hd-paths $(LEDGER_HD_PATH) --broadcast -vvvv @@ -203,10 +237,12 @@ endif $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=5000 \ $(MISE_EXEC) forge verify-contract $(NEW_DISPUTE_GAME_FACTORY_IMPL) src/L1/proofs/DisputeGameFactory.sol:DisputeGameFactory \ --num-of-optimizations 5000 $(VERIFY_COMMON); \ - $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=5000 \ - $(MISE_EXEC) forge verify-contract $(PROTOCOL_VERSIONS_PROXY) src/universal/Proxy.sol:Proxy \ - --constructor-args $(PROTOCOL_VERSIONS_PROXY_CTOR_ARGS) \ - --num-of-optimizations 5000 $(VERIFY_COMMON) + if [ "$(PROTOCOL_VERSIONS_PREDEPLOYED)" != "true" ]; then \ + $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=5000 \ + $(MISE_EXEC) forge verify-contract $(PROTOCOL_VERSIONS_PROXY) src/universal/Proxy.sol:Proxy \ + --constructor-args $(PROTOCOL_VERSIONS_PROXY_CTOR_ARGS) \ + --num-of-optimizations 5000 $(VERIFY_COMMON); \ + fi .PHONY: verify-proofs verify-proofs: @@ -215,9 +251,11 @@ ifndef VERIFIER_API_KEY endif @set -e; $(LINK_VERIFY_DEPS); \ cd $(PROJECT_DIR); \ - $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=999999 \ - $(MISE_EXEC) forge verify-contract $(PROTOCOL_VERSIONS_IMPL) src/L1/ProtocolVersions.sol:ProtocolVersions \ - --num-of-optimizations 999999 $(VERIFY_COMMON); \ + if [ "$(PROTOCOL_VERSIONS_PREDEPLOYED)" != "true" ]; then \ + $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=999999 \ + $(MISE_EXEC) forge verify-contract $(PROTOCOL_VERSIONS_IMPL) src/L1/ProtocolVersions.sol:ProtocolVersions \ + --num-of-optimizations 999999 $(VERIFY_COMMON); \ + fi; \ $(VERIFY_ENV) FOUNDRY_OPTIMIZER_RUNS=999999 \ $(MISE_EXEC) forge verify-contract $(NEW_AGGREGATE_VERIFIER) src/L1/proofs/AggregateVerifier.sol:AggregateVerifier \ --constructor-args $(AGGREGATE_VERIFIER_CTOR_ARGS) \ diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env new file mode 100644 index 000000000..84b4b1e21 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env @@ -0,0 +1,39 @@ +# https://github.com/base/contracts/commits/releases/v8.3.0/ +BASE_CONTRACTS_COMMIT=385f21a41f277d287db92fffe88dca41299162ea + +# Use the registry deployed and initialized by the archived prerequisite mainnet task. +PROTOCOL_VERSIONS_DEPLOYMENT_JSON=$(REPO_ROOT)/archive/evm/2026-09-21-deploy-protocol-versions/config/mainnet/addresses.json +PROTOCOL_VERSIONS_PREDEPLOYED=true + +# Rollback anchors verified against Base mainnet on 2026-09-21. +OLD_OPTIMISM_PORTAL_IMPL=0x66d94Ee8f529B683eD6013729784e8Bb44697a64 +OLD_SYSTEM_CONFIG_IMPL=0x0507aAa21C678976fCdC7e804836ACD6Ebc17A44 +OLD_DISPUTE_GAME_FACTORY_IMPL=0x468c2345D1D409D5B0F2F8be4Ae2082150Cc1A0c +OLD_AGGREGATE_VERIFIER=0xeE303bA054c5F1E14A8EF87f1C7E285af45A1ba2 + +# Mainnet uses the stock SystemConfig build. +APPLY_MAX_GAS_LIMIT_PATCH=false +EXPECTED_SYSTEM_CONFIG_VERSION=3.14.0 + +# Hinted Nitro TEE cutover. The owner and revoker preserve the live registry custody. +DEPLOY_TEE_WITH_COBALT=true +OLD_TEE_PROVER_REGISTRY_IMPL=0xEab9B34bDd26aD451b381b0934a30fAA6Ed5e316 +OLD_NITRO_VERIFIER=0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb +CERT_MANAGER_OWNER=0x9855054731540A48b28990B63DcF4f33d8AE46A1 +CERT_MANAGER_REVOKER=0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04 + +# The standalone task initialized the complete schedule through Cobalt. +PROTOCOL_VERSIONS_INITIAL_SCHEDULE=1686789347,1704992401,1708560000,1710374401,1720627201,1726070401,1736445601,0,1746806401,1764691201,1779991200,1782410400,1790791200 + +# v1.4.1, already set by the standalone task. +PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 +PROTOCOL_VERSIONS_INCIDENT_RESPONDER=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 + +# Cobalt proof program hashes from base/base releases/v1.4.0. +AGGREGATE_VERIFIER_TEE_IMAGE_HASH=0xe8dc2300cf325b2527cbfa5e664a70acc40a9f2fc0617bd35cdfa61652a5fc30 +AGGREGATE_VERIFIER_ZK_RANGE_HASH=0x7713943c2c2412314b135c5606cdb3923a54f7555d91d9f31c2f64e34e16f2f4 +AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH=0x002663a1072dc1e1938e13d3b269fff88e843eb4ef76d6c6953dde4f5152973b + +L2_GENESIS_BLOCK_NUMBER=0 +L2_GENESIS_TIMESTAMP=1686789347 +L2_BLOCK_TIME=2 diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md new file mode 100644 index 000000000..c499cfb79 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md @@ -0,0 +1,28 @@ +# Cobalt Upgrade + +Status: READY TO SIGN + +## Description + +Upgrades Base mainnet's L1 contracts for Cobalt and cuts the TEE registry over to hinted Nitro +validation. The transaction: + +1. Upgrades `OptimismPortal2`, `SystemConfig`, and `DisputeGameFactory`. +2. Registers the Cobalt `AggregateVerifier`, bound to the initialized `ProtocolVersions` registry. +3. Upgrades `TEEProverRegistry` to the hinted Nitro implementation. + +The separately deployed registry already schedules Cobalt for September 30, 2026 at 18:00 UTC and +sets the minimum protocol version to v1.4.1. This transaction does not modify it. No ETH moves. + +`make TASK_NETWORK=mainnet deploy` deploys the Cobalt implementations first, followed by the Nitro +validator stack and hinted `TEEProverRegistry` implementation. + +## Sign + +From the repository root: + +```bash +make sign-task +``` + +Select this mainnet task, sign, and send the signature to the facilitator. diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json @@ -0,0 +1 @@ +{} diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltCoreImpls.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltCoreImpls.s.sol index 224b74f85..f2e59f960 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltCoreImpls.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltCoreImpls.s.sol @@ -8,15 +8,13 @@ import {OptimismPortal2} from "@base-contracts/src/L1/OptimismPortal2.sol"; import {Proxy} from "@base-contracts/src/universal/Proxy.sol"; import {SystemConfig} from "@base-contracts/src/L1/SystemConfig.sol"; -/// @notice Deploys the Cobalt implementations that base/contracts compiles at 5000 optimizer runs, -/// plus the proxy that will front the new ProtocolVersions registry. -/// @dev The ProtocolVersions proxy is deployed here, ahead of the implementations in -/// DeployCobaltProofImpls, because AggregateVerifier takes its address as a constructor -/// immutable. The proxy is left pointing at no implementation; the upgrade transaction -/// atomically sets the implementation and initializes it via ProxyAdmin.upgradeAndCall. +/// @notice Deploys the Cobalt implementations that base/contracts compiles at 5000 optimizer runs. +/// @dev Also deploys the ProtocolVersions proxy unless a previous task supplied one. contract DeployCobaltCoreImpls is Script { address internal immutable l1ProxyAdmin; address internal immutable optimismPortal; + address internal immutable existingProtocolVersionsProxy; + bytes32 internal immutable expectedSystemConfigVersionHash; /// @dev Copied from the live portal so the redeploy cannot change the delay. uint256 internal immutable proofMaturityDelaySeconds; string internal addressesJson; @@ -29,6 +27,8 @@ contract DeployCobaltCoreImpls is Script { constructor() { l1ProxyAdmin = vm.envAddress("L1_PROXY_ADMIN"); optimismPortal = vm.envAddress("OPTIMISM_PORTAL"); + existingProtocolVersionsProxy = vm.envOr("EXISTING_PROTOCOL_VERSIONS_PROXY", address(0)); + expectedSystemConfigVersionHash = keccak256(bytes(vm.envString("EXPECTED_SYSTEM_CONFIG_VERSION"))); proofMaturityDelaySeconds = OptimismPortal2(payable(optimismPortal)).proofMaturityDelaySeconds(); addressesJson = vm.envString("ADDRESSES_JSON"); } @@ -44,7 +44,9 @@ contract DeployCobaltCoreImpls is Script { optimismPortalImpl = new OptimismPortal2(proofMaturityDelaySeconds); systemConfigImpl = new SystemConfig(); disputeGameFactoryImpl = new DisputeGameFactory(); - protocolVersionsProxy = new Proxy(l1ProxyAdmin); + protocolVersionsProxy = existingProtocolVersionsProxy == address(0) + ? new Proxy(l1ProxyAdmin) + : Proxy(payable(existingProtocolVersionsProxy)); vm.stopBroadcast(); @@ -62,11 +64,9 @@ contract DeployCobaltCoreImpls is Script { optimismPortalImpl.proofMaturityDelaySeconds() == proofMaturityDelaySeconds, "portal proof delay mismatch" ); require(keccak256(bytes(optimismPortalImpl.version())) == keccak256(bytes("6.0.0")), "portal version mismatch"); - // Zeronet runs a patched SystemConfig that raises MAX_GAS_LIMIT to 2e9. The patch carries a - // build-suffixed semver so a stock build cannot be deployed here by mistake. require( - keccak256(bytes(systemConfigImpl.version())) == keccak256(bytes("3.14.0+max-gas-limit-2000M")), - "system config patch not applied" + keccak256(bytes(systemConfigImpl.version())) == expectedSystemConfigVersionHash, + "system config version mismatch" ); require( keccak256(bytes(disputeGameFactoryImpl.version())) == keccak256(bytes("1.5.0")), @@ -90,6 +90,8 @@ contract DeployCobaltCoreImpls is Script { vm.writeJson( vm.toString(abi.encode(proofMaturityDelaySeconds)), addressesJson, ".optimismPortalImplConstructorArgs" ); - vm.writeJson(vm.toString(abi.encode(l1ProxyAdmin)), addressesJson, ".protocolVersionsProxyConstructorArgs"); + if (existingProtocolVersionsProxy == address(0)) { + vm.writeJson(vm.toString(abi.encode(l1ProxyAdmin)), addressesJson, ".protocolVersionsProxyConstructorArgs"); + } } } diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltProofImpls.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltProofImpls.s.sol index d398cb042..e6b665675 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltProofImpls.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/DeployCobaltProofImpls.s.sol @@ -33,6 +33,7 @@ contract DeployCobaltProofImpls is Script { uint64 internal immutable l2GenesisTimestamp; uint64 internal immutable l2BlockTime; address internal immutable protocolVersionsProxy; + address internal immutable existingProtocolVersionsImpl; // Copied from the live implementation registered for game type 621. address internal immutable liveAggregateVerifier; @@ -62,6 +63,7 @@ contract DeployCobaltProofImpls is Script { addressesJson = vm.envString("ADDRESSES_JSON"); protocolVersionsProxy = vm.parseJsonAddress(vm.readFile(addressesJson), ".protocolVersionsProxy"); + existingProtocolVersionsImpl = vm.envOr("EXISTING_PROTOCOL_VERSIONS_IMPL", address(0)); address factory = vm.envAddress("DISPUTE_GAME_FACTORY_PROXY"); liveAggregateVerifier = address(IDisputeGameFactory(factory).gameImpls(AGGREGATE_VERIFIER_GAME_TYPE)); @@ -103,7 +105,9 @@ contract DeployCobaltProofImpls is Script { function run() external { vm.startBroadcast(); - protocolVersionsImpl = new ProtocolVersions(); + protocolVersionsImpl = existingProtocolVersionsImpl == address(0) + ? new ProtocolVersions() + : ProtocolVersions(existingProtocolVersionsImpl); aggregateVerifier = new AggregateVerifier({ gameType_: AGGREGATE_VERIFIER_GAME_TYPE, anchorStateRegistry_: anchorStateRegistry, diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol index 5b452c8be..9ace4f403 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol @@ -88,10 +88,10 @@ interface ICertManagerView { /// @notice Executes the Cobalt L1 upgrade on a Base chain. /// @dev Bundles the three Cobalt contract changes into a single ProxyAdmin-owner transaction: -/// dynamic upgrades (a new ProtocolVersions registry plus the AggregateVerifier that binds it), +/// dynamic upgrades (ProtocolVersions plus the AggregateVerifier that binds it), /// the EthLockbox removal (OptimismPortal2 and SystemConfig), and CREATE2 dispute game proxies /// (DisputeGameFactory). Networks that still need the hinted Nitro TEE cutover also pass -/// `NEW_TEE_PROVER_REGISTRY_IMPL`, which adds a sixth ProxyAdmin.upgrade on the registry. +/// `NEW_TEE_PROVER_REGISTRY_IMPL`, which appends a ProxyAdmin upgrade for the registry. contract ExecuteCobaltUpgrade is MultisigScript { /// @notice EIP-1967 implementation slot. bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; @@ -124,6 +124,8 @@ contract ExecuteCobaltUpgrade is MultisigScript { address internal immutable protocolVersionsIncidentResponder; uint256 internal immutable protocolVersionsMinimumProtocolVersion; + bool internal immutable protocolVersionsPredeployed; + bytes32 internal immutable expectedSystemConfigVersionHash; /// @dev Solidity has no immutable arrays, so the imported activation schedule is read from the /// environment into storage during construction. @@ -173,6 +175,8 @@ contract ExecuteCobaltUpgrade is MultisigScript { protocolVersionsIncidentResponder = vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); protocolVersionsMinimumProtocolVersion = vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); + protocolVersionsPredeployed = vm.envOr("PROTOCOL_VERSIONS_PREDEPLOYED", false); + expectedSystemConfigVersionHash = keccak256(bytes(vm.envString("EXPECTED_SYSTEM_CONFIG_VERSION"))); uint256[] memory schedule = vm.envUint("PROTOCOL_VERSIONS_INITIAL_SCHEDULE", ","); for (uint256 i = 0; i < schedule.length; i++) { @@ -206,41 +210,41 @@ contract ExecuteCobaltUpgrade is MultisigScript { } function _buildCalls() internal view override returns (Call[] memory) { - Call[] memory calls = new Call[](_teeCutover() ? 6 : 5); + Call[] memory calls = new Call[]((protocolVersionsPredeployed ? 4 : 5) + (_teeCutover() ? 1 : 0)); + uint256 i; - // Dynamic upgrades: point the new proxy at the registry implementation and seed the - // activation schedule atomically. `initialize` is `reinitializer(1)` and the proxy has - // never been initialized, so this must be `upgradeAndCall` rather than a bare upgrade. - calls[0] = Call({ - operation: Enum.Operation.Call, - target: proxyAdmin, - data: abi.encodeCall( - IProxyAdmin.upgradeAndCall, - ( - payable(protocolVersionsProxy), - protocolVersionsImpl, - abi.encodeCall( - IProtocolVersions.initialize, - ( - protocolVersionsIncidentResponder, - protocolVersionsInitialSchedule, - protocolVersionsMinimumProtocolVersion + if (!protocolVersionsPredeployed) { + calls[i++] = Call({ + operation: Enum.Operation.Call, + target: proxyAdmin, + data: abi.encodeCall( + IProxyAdmin.upgradeAndCall, + ( + payable(protocolVersionsProxy), + protocolVersionsImpl, + abi.encodeCall( + IProtocolVersions.initialize, + ( + protocolVersionsIncidentResponder, + protocolVersionsInitialSchedule, + protocolVersionsMinimumProtocolVersion + ) ) ) - ) - ), - value: 0 - }); + ), + value: 0 + }); + } // EthLockbox removal. Both implementations are already at their current init version and // the upgrade adds no state, so they are upgrade-only. - calls[1] = Call({ + calls[i++] = Call({ operation: Enum.Operation.Call, target: proxyAdmin, data: abi.encodeCall(IProxyAdmin.upgrade, (payable(optimismPortal), newOptimismPortalImpl)), value: 0 }); - calls[2] = Call({ + calls[i++] = Call({ operation: Enum.Operation.Call, target: proxyAdmin, data: abi.encodeCall(IProxyAdmin.upgrade, (payable(systemConfig), newSystemConfigImpl)), @@ -248,7 +252,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { }); // CREATE2 dispute game proxies. - calls[3] = Call({ + calls[i++] = Call({ operation: Enum.Operation.Call, target: proxyAdmin, data: abi.encodeCall(IProxyAdmin.upgrade, (payable(disputeGameFactory), newDisputeGameFactoryImpl)), @@ -257,7 +261,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { // Register the AggregateVerifier that binds the new registry. This is `onlyOwner` on the // factory itself, not a ProxyAdmin call, and the factory owner is the same Safe. - calls[4] = Call({ + calls[i++] = Call({ operation: Enum.Operation.Call, target: disputeGameFactory, data: abi.encodeCall( @@ -267,7 +271,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { }); if (_teeCutover()) { - calls[5] = Call({ + calls[i] = Call({ operation: Enum.Operation.Call, target: proxyAdmin, data: abi.encodeCall(IProxyAdmin.upgrade, (payable(teeProverRegistryProxy), newTeeProverRegistryImpl)), @@ -299,9 +303,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { (bool ok, bytes memory raw) = optimismPortal.staticcall(abi.encodeWithSignature("ethLockbox()")); require(!ok || abi.decode(raw, (address)) == address(0), "portal still uses an ETHLockbox"); - // The new registry must be an uninitialized proxy under the same ProxyAdmin. require(protocolVersionsProxy.code.length != 0, "protocol versions proxy not deployed"); - require(_implementation(protocolVersionsProxy) == address(0), "protocol versions proxy already upgraded"); require(_admin(protocolVersionsProxy) == proxyAdmin, "protocol versions proxy admin mismatch"); require( @@ -313,9 +315,8 @@ contract ExecuteCobaltUpgrade is MultisigScript { "portal implementation version mismatch" ); require( - keccak256(bytes(IVersioned(newSystemConfigImpl).version())) - == keccak256(bytes("3.14.0+max-gas-limit-2000M")), - "system config implementation is not the patched build" + keccak256(bytes(IVersioned(newSystemConfigImpl).version())) == expectedSystemConfigVersionHash, + "system config implementation version mismatch" ); require( keccak256(bytes(IVersioned(newDisputeGameFactoryImpl).version())) == keccak256(bytes("1.5.0")), @@ -334,6 +335,31 @@ contract ExecuteCobaltUpgrade is MultisigScript { require(protocolVersionsMinimumProtocolVersion != 0, "minimum protocol version not set"); require(protocolVersionsMinimumProtocolVersion <= type(uint128).max, "minimum protocol version too large"); + if (protocolVersionsPredeployed) { + require( + _implementation(protocolVersionsProxy) == protocolVersionsImpl, + "protocol versions implementation mismatch" + ); + require(protocolVersionsInitialSchedule.length != 0, "protocol versions schedule empty"); + + IProtocolVersions registry = IProtocolVersions(protocolVersionsProxy); + require(registry.incidentResponder() == protocolVersionsIncidentResponder, "registry responder mismatch"); + require( + registry.minimumProtocolVersion() == protocolVersionsMinimumProtocolVersion, + "registry minimum protocol version mismatch" + ); + uint64[] memory currentSchedule = registry.getSchedule(); + require( + currentSchedule.length == protocolVersionsInitialSchedule.length, "registry schedule length mismatch" + ); + for (uint256 i = 0; i < currentSchedule.length; i++) { + require(currentSchedule[i] == protocolVersionsInitialSchedule[i], "registry schedule mismatch"); + } + require(registry.scheduleId() == _expectedScheduleId(), "registry schedule commitment mismatch"); + } else { + require(_implementation(protocolVersionsProxy) == address(0), "protocol versions proxy already upgraded"); + } + if (_teeCutover()) { _preCheckTee(); } @@ -395,8 +421,8 @@ contract ExecuteCobaltUpgrade is MultisigScript { require(ISystemConfig(systemConfig).paused() == pausedBefore, "pause state changed"); require(ISystemConfig(systemConfig).gasLimit() == gasLimitBefore, "gas limit changed"); require( - keccak256(bytes(ISystemConfig(systemConfig).version())) == keccak256(bytes("3.14.0+max-gas-limit-2000M")), - "system config lost the max gas limit patch" + keccak256(bytes(ISystemConfig(systemConfig).version())) == expectedSystemConfigVersionHash, + "system config version mismatch" ); if (_teeCutover()) { From 4215951fbb0a02c93d0736c60c872759747b5a03 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Wed, 23 Sep 2026 08:40:10 -0400 Subject: [PATCH 02/10] fix(mainnet): address Cobalt review feedback Co-authored-by: Codex --- .../2026-09-14-cobalt-upgrade/FACILITATOR.md | 17 ++--- .../tasks/2026-09-14-cobalt-upgrade/Makefile | 13 ++-- .../config/mainnet/.env | 16 ++--- .../script/ExecuteCobaltUpgrade.s.sol | 69 ++++++++++--------- 4 files changed, 57 insertions(+), 58 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md index 456338524..d3b666b44 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md @@ -36,7 +36,8 @@ run the patched build, set `APPLY_MAX_GAS_LIMIT_PATCH=false` and Open `config//.env` and confirm every value, in particular: -- `PROTOCOL_VERSIONS_INITIAL_SCHEDULE` — the activation timestamp imported for each upgrade id. +- For networks initializing `ProtocolVersions` in this task, `PROTOCOL_VERSIONS_INITIAL_SCHEDULE` + is the activation timestamp imported for each upgrade id. Ids should stay aligned with the Base mainnet registry so that a given index means the same fork on every chain. Entries may be `0` for an unscheduled fork. Every entry except Cobalt's is a fork that has already happened, so each one must match the network's chain config in @@ -45,12 +46,11 @@ Open `config//.env` and confirm every value, in particular: genesis timestamp: on Zeronet, Azul and Beryl activated a few minutes after genesis, and id 7 (PectraBlobSchedule) is unscheduled at `0`. Cobalt (id 12) is the activation this task schedules, and the node config carries no Cobalt timestamp until its own rollout lands. -- `PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION` — must be non-zero and fit in 128 bits. The comment - above it gives the `cast` command to re-derive the packed value from the human-readable version. -- `PROTOCOL_VERSIONS_INCIDENT_RESPONDER` — the address allowed to use the incident path. +- For those same networks, `PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION` must be non-zero and fit in + 128 bits, and `PROTOCOL_VERSIONS_INCIDENT_RESPONDER` is the incident path address. - `PROTOCOL_VERSIONS_DEPLOYMENT_JSON` — when set, the task reuses the proxy and implementation from the standalone deployment instead of deploying or initializing another registry. Mainnet uses - this path and verifies the already initialized Cobalt schedule without modifying it. + this path and verifies that the registry's schedule commitment remains unchanged. - `OLD_*` — the currently deployed implementations. `ExecuteCobaltUpgrade` asserts these match the live proxies before building any calls, so a stale value stops the task rather than upgrading from an unexpected base. @@ -58,9 +58,10 @@ Open `config//.env` and confirm every value, in particular: `AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH` — all three rotate for Cobalt. The TEE value is PCR0 of the Nitro enclave; the ZK values are the SP1 keys from `just succinct vkeys --build`. Zeronet and Sepolia use the same values from - [`releases/v1.4.0`](https://github.com/base/base/tree/releases/v1.4.0). The deploy script refuses a - zero hash or a hash that still matches the live verifier. Every other `AggregateVerifier` - constructor argument is read back from the live implementation at deploy time. + the network's finalized node release. Mainnet's values come from `releases/v1.4.1` and remain + blank until that release is final. The deploy script refuses a zero hash or a hash that still + matches the live verifier. Every other `AggregateVerifier` constructor argument is read back from + the live implementation at deploy time. - TEE anchors — `OLD_TEE_PROVER_REGISTRY_IMPL`, `OLD_NITRO_VERIFIER`, `CERT_MANAGER_OWNER`, and `CERT_MANAGER_REVOKER`. Re-check the live registry implementation and `NITRO_VERIFIER()` before deploying. `ExecuteCobaltUpgrade` only emits the TEE upgrade call diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile index d4887bb62..edf3b552f 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile @@ -15,7 +15,7 @@ include config/$(TASK_NETWORK)/.env EXPECTED_SYSTEM_CONFIG_VERSION ?= 3.14.0+max-gas-limit-2000M PROTOCOL_VERSIONS_PREDEPLOYED ?= false -DEPLOY_TEE_WITH_COBALT ?= false +DEPLOY_TEE_WITH_COBALT ?= $(if $(filter mainnet,$(TASK_NETWORK)),true,false) SIGNER_TOOL_PATH := $(REPO_ROOT)/signer-tool VALIDATIONS_DIR := $(CURDIR)/config/$(TASK_NETWORK)/validations @@ -75,6 +75,13 @@ DEPLOY_ENV = ADDRESSES_JSON=$(ADDRESSES_JSON) \ EXPECTED_SYSTEM_CONFIG_VERSION=$(EXPECTED_SYSTEM_CONFIG_VERSION) \ $(PROTOCOL_VERSIONS_DEPLOY_ENV) +ifneq ($(PROTOCOL_VERSIONS_PREDEPLOYED),true) +PROTOCOL_VERSIONS_STATE_ENV = \ + PROTOCOL_VERSIONS_INCIDENT_RESPONDER=$(PROTOCOL_VERSIONS_INCIDENT_RESPONDER) \ + PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION) \ + PROTOCOL_VERSIONS_INITIAL_SCHEDULE=$(PROTOCOL_VERSIONS_INITIAL_SCHEDULE) +endif + UPGRADE_ENV = PROXY_ADMIN_OWNER=$(PROXY_ADMIN_OWNER) \ L1_PROXY_ADMIN=$(L1_PROXY_ADMIN) \ OPTIMISM_PORTAL=$(OPTIMISM_PORTAL) \ @@ -90,11 +97,9 @@ UPGRADE_ENV = PROXY_ADMIN_OWNER=$(PROXY_ADMIN_OWNER) \ NEW_AGGREGATE_VERIFIER=$(NEW_AGGREGATE_VERIFIER) \ PROTOCOL_VERSIONS_PROXY=$(PROTOCOL_VERSIONS_PROXY) \ PROTOCOL_VERSIONS_IMPL=$(PROTOCOL_VERSIONS_IMPL) \ - PROTOCOL_VERSIONS_INCIDENT_RESPONDER=$(PROTOCOL_VERSIONS_INCIDENT_RESPONDER) \ - PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION) \ PROTOCOL_VERSIONS_PREDEPLOYED=$(PROTOCOL_VERSIONS_PREDEPLOYED) \ - PROTOCOL_VERSIONS_INITIAL_SCHEDULE=$(PROTOCOL_VERSIONS_INITIAL_SCHEDULE) \ EXPECTED_SYSTEM_CONFIG_VERSION=$(EXPECTED_SYSTEM_CONFIG_VERSION) \ + $(PROTOCOL_VERSIONS_STATE_ENV) \ $(TEE_UPGRADE_ENV) # Networks that still need the hinted Nitro cutover pass these so ExecuteCobaltUpgrade diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env index 84b4b1e21..edb502097 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env @@ -16,23 +16,15 @@ APPLY_MAX_GAS_LIMIT_PATCH=false EXPECTED_SYSTEM_CONFIG_VERSION=3.14.0 # Hinted Nitro TEE cutover. The owner and revoker preserve the live registry custody. -DEPLOY_TEE_WITH_COBALT=true OLD_TEE_PROVER_REGISTRY_IMPL=0xEab9B34bDd26aD451b381b0934a30fAA6Ed5e316 OLD_NITRO_VERIFIER=0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb CERT_MANAGER_OWNER=0x9855054731540A48b28990B63DcF4f33d8AE46A1 CERT_MANAGER_REVOKER=0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04 -# The standalone task initialized the complete schedule through Cobalt. -PROTOCOL_VERSIONS_INITIAL_SCHEDULE=1686789347,1704992401,1708560000,1710374401,1720627201,1726070401,1736445601,0,1746806401,1764691201,1779991200,1782410400,1790791200 - -# v1.4.1, already set by the standalone task. -PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 -PROTOCOL_VERSIONS_INCIDENT_RESPONDER=0x14536667Cd30e52C0b458BaACcB9faDA7046E056 - -# Cobalt proof program hashes from base/base releases/v1.4.0. -AGGREGATE_VERIFIER_TEE_IMAGE_HASH=0xe8dc2300cf325b2527cbfa5e664a70acc40a9f2fc0617bd35cdfa61652a5fc30 -AGGREGATE_VERIFIER_ZK_RANGE_HASH=0x7713943c2c2412314b135c5606cdb3923a54f7555d91d9f31c2f64e34e16f2f4 -AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH=0x002663a1072dc1e1938e13d3b269fff88e843eb4ef76d6c6953dde4f5152973b +# Cobalt proof program hashes from base/base releases/v1.4.1. Fill these after the release is final. +AGGREGATE_VERIFIER_TEE_IMAGE_HASH= +AGGREGATE_VERIFIER_ZK_RANGE_HASH= +AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH= L2_GENESIS_BLOCK_NUMBER=0 L2_GENESIS_TIMESTAMP=1686789347 diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol index 9ace4f403..47b96b5b5 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol @@ -125,6 +125,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { address internal immutable protocolVersionsIncidentResponder; uint256 internal immutable protocolVersionsMinimumProtocolVersion; bool internal immutable protocolVersionsPredeployed; + bytes32 internal immutable protocolVersionsScheduleIdBefore; bytes32 internal immutable expectedSystemConfigVersionHash; /// @dev Solidity has no immutable arrays, so the imported activation schedule is read from the @@ -173,15 +174,23 @@ contract ExecuteCobaltUpgrade is MultisigScript { protocolVersionsProxy = vm.envAddress("PROTOCOL_VERSIONS_PROXY"); protocolVersionsImpl = vm.envAddress("PROTOCOL_VERSIONS_IMPL"); - protocolVersionsIncidentResponder = vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); - protocolVersionsMinimumProtocolVersion = vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); protocolVersionsPredeployed = vm.envOr("PROTOCOL_VERSIONS_PREDEPLOYED", false); expectedSystemConfigVersionHash = keccak256(bytes(vm.envString("EXPECTED_SYSTEM_CONFIG_VERSION"))); - uint256[] memory schedule = vm.envUint("PROTOCOL_VERSIONS_INITIAL_SCHEDULE", ","); - for (uint256 i = 0; i < schedule.length; i++) { - require(schedule[i] <= type(uint64).max, "schedule timestamp exceeds uint64"); - protocolVersionsInitialSchedule.push(uint64(schedule[i])); + if (protocolVersionsPredeployed) { + protocolVersionsIncidentResponder = address(0); + protocolVersionsMinimumProtocolVersion = 0; + protocolVersionsScheduleIdBefore = IProtocolVersions(protocolVersionsProxy).scheduleId(); + } else { + protocolVersionsIncidentResponder = vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); + protocolVersionsMinimumProtocolVersion = vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); + protocolVersionsScheduleIdBefore = bytes32(0); + + uint256[] memory schedule = vm.envUint("PROTOCOL_VERSIONS_INITIAL_SCHEDULE", ","); + for (uint256 i = 0; i < schedule.length; i++) { + require(schedule[i] <= type(uint64).max, "schedule timestamp exceeds uint64"); + protocolVersionsInitialSchedule.push(uint64(schedule[i])); + } } portalBalanceBefore = optimismPortal.balance; @@ -332,32 +341,19 @@ contract ExecuteCobaltUpgrade is MultisigScript { "aggregate verifier is not bound to the new registry" ); - require(protocolVersionsMinimumProtocolVersion != 0, "minimum protocol version not set"); - require(protocolVersionsMinimumProtocolVersion <= type(uint128).max, "minimum protocol version too large"); - if (protocolVersionsPredeployed) { require( _implementation(protocolVersionsProxy) == protocolVersionsImpl, "protocol versions implementation mismatch" ); - require(protocolVersionsInitialSchedule.length != 0, "protocol versions schedule empty"); - - IProtocolVersions registry = IProtocolVersions(protocolVersionsProxy); - require(registry.incidentResponder() == protocolVersionsIncidentResponder, "registry responder mismatch"); - require( - registry.minimumProtocolVersion() == protocolVersionsMinimumProtocolVersion, - "registry minimum protocol version mismatch" - ); - uint64[] memory currentSchedule = registry.getSchedule(); require( - currentSchedule.length == protocolVersionsInitialSchedule.length, "registry schedule length mismatch" + IProtocolVersions(protocolVersionsProxy).scheduleId() == protocolVersionsScheduleIdBefore, + "protocol versions schedule changed" ); - for (uint256 i = 0; i < currentSchedule.length; i++) { - require(currentSchedule[i] == protocolVersionsInitialSchedule[i], "registry schedule mismatch"); - } - require(registry.scheduleId() == _expectedScheduleId(), "registry schedule commitment mismatch"); } else { require(_implementation(protocolVersionsProxy) == address(0), "protocol versions proxy already upgraded"); + require(protocolVersionsMinimumProtocolVersion != 0, "minimum protocol version not set"); + require(protocolVersionsMinimumProtocolVersion <= type(uint128).max, "minimum protocol version too large"); } if (_teeCutover()) { @@ -388,21 +384,26 @@ contract ExecuteCobaltUpgrade is MultisigScript { "dispute game factory not serving the new implementation" ); - // Dynamic upgrades: the registry is live and committed to the imported schedule. + // Dynamic upgrades: a predeployed registry must remain untouched; newly initialized + // registries must match the configured state exactly. IProtocolVersions registry = IProtocolVersions(protocolVersionsProxy); require(keccak256(bytes(registry.version())) == keccak256(bytes("1.0.0")), "registry version mismatch"); - require(registry.incidentResponder() == protocolVersionsIncidentResponder, "registry responder mismatch"); - require( - registry.minimumProtocolVersion() == protocolVersionsMinimumProtocolVersion, - "registry minimum protocol version mismatch" - ); + if (protocolVersionsPredeployed) { + require(registry.scheduleId() == protocolVersionsScheduleIdBefore, "protocol versions schedule changed"); + } else { + require(registry.incidentResponder() == protocolVersionsIncidentResponder, "registry responder mismatch"); + require( + registry.minimumProtocolVersion() == protocolVersionsMinimumProtocolVersion, + "registry minimum protocol version mismatch" + ); - uint64[] memory schedule = registry.getSchedule(); - require(schedule.length == protocolVersionsInitialSchedule.length, "registry schedule length mismatch"); - for (uint256 i = 0; i < schedule.length; i++) { - require(schedule[i] == protocolVersionsInitialSchedule[i], "registry schedule entry mismatch"); + uint64[] memory schedule = registry.getSchedule(); + require(schedule.length == protocolVersionsInitialSchedule.length, "registry schedule length mismatch"); + for (uint256 i = 0; i < schedule.length; i++) { + require(schedule[i] == protocolVersionsInitialSchedule[i], "registry schedule entry mismatch"); + } + require(registry.scheduleId() == _expectedScheduleId(), "registry schedule commitment mismatch"); } - require(registry.scheduleId() == _expectedScheduleId(), "registry schedule commitment mismatch"); // CREATE2 dispute games: the factory keeps its full history and serves the new verifier. require( From d86ed1aecd18c7bf6fdb33cc7d2e6e779e2251b8 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 09:03:12 -0400 Subject: [PATCH 03/10] feat(mainnet): require protocol version v1.4.2 Co-authored-by: Codex --- .../2026-09-14-cobalt-upgrade/FACILITATOR.md | 16 ++++---- .../tasks/2026-09-14-cobalt-upgrade/Makefile | 8 +++- .../config/mainnet/.env | 6 ++- .../config/mainnet/README.md | 9 +++-- .../script/ExecuteCobaltUpgrade.s.sol | 39 +++++++++++++++++-- 5 files changed, 62 insertions(+), 16 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md index d3b666b44..1677607a0 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md @@ -50,7 +50,9 @@ Open `config//.env` and confirm every value, in particular: 128 bits, and `PROTOCOL_VERSIONS_INCIDENT_RESPONDER` is the incident path address. - `PROTOCOL_VERSIONS_DEPLOYMENT_JSON` — when set, the task reuses the proxy and implementation from the standalone deployment instead of deploying or initializing another registry. Mainnet uses - this path and verifies that the registry's schedule commitment remains unchanged. + this path, verifies that the registry's schedule commitment remains unchanged, and raises its + minimum protocol version from `PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION` to + `PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION`. - `OLD_*` — the currently deployed implementations. `ExecuteCobaltUpgrade` asserts these match the live proxies before building any calls, so a stale value stops the task rather than upgrading from an unexpected base. @@ -58,10 +60,10 @@ Open `config//.env` and confirm every value, in particular: `AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH` — all three rotate for Cobalt. The TEE value is PCR0 of the Nitro enclave; the ZK values are the SP1 keys from `just succinct vkeys --build`. Zeronet and Sepolia use the same values from - the network's finalized node release. Mainnet's values come from `releases/v1.4.1` and remain - blank until that release is final. The deploy script refuses a zero hash or a hash that still - matches the live verifier. Every other `AggregateVerifier` constructor argument is read back from - the live implementation at deploy time. + the network's finalized node release. Mainnet's values come from the finalized + `releases/v1.4.2` enclave and vkey builds and remain blank until those exact outputs are recorded. + The deploy script refuses a zero hash or a hash that still matches the live verifier. Every other + `AggregateVerifier` constructor argument is read back from the live implementation at deploy time. - TEE anchors — `OLD_TEE_PROVER_REGISTRY_IMPL`, `OLD_NITRO_VERIFIER`, `CERT_MANAGER_OWNER`, and `CERT_MANAGER_REVOKER`. Re-check the live registry implementation and `NITRO_VERIFIER()` before deploying. `ExecuteCobaltUpgrade` only emits the TEE upgrade call @@ -159,11 +161,11 @@ than land a partial upgrade. ## What the upgrade transaction does -Five calls on Zeronet and mainnet, six on Sepolia, all from the ProxyAdmin owner Safe: +Five calls on Zeronet, six on Sepolia and mainnet, all from the ProxyAdmin owner Safe: 1. Networks without a predeployed registry use `ProxyAdmin.upgradeAndCall(protocolVersionsProxy, protocolVersionsImpl, initialize(...))`. - Mainnet skips this call because the standalone task already initialized the complete schedule. + Mainnet instead calls `ProtocolVersions.setMinimumProtocolVersion` to move from v1.4.1 to v1.4.2. 2. `ProxyAdmin.upgrade(optimismPortal, newImpl)` 3. `ProxyAdmin.upgrade(systemConfig, newImpl)` 4. `ProxyAdmin.upgrade(disputeGameFactory, newImpl)` diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile index edf3b552f..f75d91680 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/Makefile @@ -75,7 +75,13 @@ DEPLOY_ENV = ADDRESSES_JSON=$(ADDRESSES_JSON) \ EXPECTED_SYSTEM_CONFIG_VERSION=$(EXPECTED_SYSTEM_CONFIG_VERSION) \ $(PROTOCOL_VERSIONS_DEPLOY_ENV) -ifneq ($(PROTOCOL_VERSIONS_PREDEPLOYED),true) +ifeq ($(PROTOCOL_VERSIONS_PREDEPLOYED),true) +ifneq ($(strip $(PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION)),) +PROTOCOL_VERSIONS_STATE_ENV = \ + PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION) \ + PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION) +endif +else PROTOCOL_VERSIONS_STATE_ENV = \ PROTOCOL_VERSIONS_INCIDENT_RESPONDER=$(PROTOCOL_VERSIONS_INCIDENT_RESPONDER) \ PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=$(PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION) \ diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env index edb502097..993b2923d 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env @@ -21,7 +21,11 @@ OLD_NITRO_VERIFIER=0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb CERT_MANAGER_OWNER=0x9855054731540A48b28990B63DcF4f33d8AE46A1 CERT_MANAGER_REVOKER=0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04 -# Cobalt proof program hashes from base/base releases/v1.4.1. Fill these after the release is final. +# Raise the minimum protocol version from v1.4.1 to v1.4.2. +PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 +PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313896972091392 + +# Cobalt proof program hashes from the finalized base/base releases/v1.4.2 build. AGGREGATE_VERIFIER_TEE_IMAGE_HASH= AGGREGATE_VERIFIER_ZK_RANGE_HASH= AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH= diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md index c499cfb79..ebff5023c 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/README.md @@ -7,12 +7,13 @@ Status: READY TO SIGN Upgrades Base mainnet's L1 contracts for Cobalt and cuts the TEE registry over to hinted Nitro validation. The transaction: -1. Upgrades `OptimismPortal2`, `SystemConfig`, and `DisputeGameFactory`. -2. Registers the Cobalt `AggregateVerifier`, bound to the initialized `ProtocolVersions` registry. -3. Upgrades `TEEProverRegistry` to the hinted Nitro implementation. +1. Raises the `ProtocolVersions` minimum protocol version from v1.4.1 to v1.4.2. +2. Upgrades `OptimismPortal2`, `SystemConfig`, and `DisputeGameFactory`. +3. Registers the Cobalt `AggregateVerifier`, bound to the initialized `ProtocolVersions` registry. +4. Upgrades `TEEProverRegistry` to the hinted Nitro implementation. The separately deployed registry already schedules Cobalt for September 30, 2026 at 18:00 UTC and -sets the minimum protocol version to v1.4.1. This transaction does not modify it. No ETH moves. +this transaction does not change that timestamp. No ETH moves. `make TASK_NETWORK=mainnet deploy` deploys the Cobalt implementations first, followed by the Nitro validator stack and hinted `TEEProverRegistry` implementation. diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol index 47b96b5b5..b90ccc96d 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol @@ -18,6 +18,7 @@ interface IProtocolVersions { function getSchedule() external view returns (uint64[] memory); function incidentResponder() external view returns (address); function minimumProtocolVersion() external view returns (uint256); + function setMinimumProtocolVersion(uint256 minimumProtocolVersion) external; function scheduleId() external view returns (bytes32); function version() external view returns (string memory); } @@ -123,6 +124,7 @@ contract ExecuteCobaltUpgrade is MultisigScript { address internal immutable protocolVersionsImpl; address internal immutable protocolVersionsIncidentResponder; + uint256 internal immutable protocolVersionsCurrentMinimumProtocolVersion; uint256 internal immutable protocolVersionsMinimumProtocolVersion; bool internal immutable protocolVersionsPredeployed; bytes32 internal immutable protocolVersionsScheduleIdBefore; @@ -179,10 +181,13 @@ contract ExecuteCobaltUpgrade is MultisigScript { if (protocolVersionsPredeployed) { protocolVersionsIncidentResponder = address(0); - protocolVersionsMinimumProtocolVersion = 0; + protocolVersionsCurrentMinimumProtocolVersion = + vm.envOr("PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION", uint256(0)); + protocolVersionsMinimumProtocolVersion = vm.envOr("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION", uint256(0)); protocolVersionsScheduleIdBefore = IProtocolVersions(protocolVersionsProxy).scheduleId(); } else { protocolVersionsIncidentResponder = vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); + protocolVersionsCurrentMinimumProtocolVersion = 0; protocolVersionsMinimumProtocolVersion = vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); protocolVersionsScheduleIdBefore = bytes32(0); @@ -219,10 +224,21 @@ contract ExecuteCobaltUpgrade is MultisigScript { } function _buildCalls() internal view override returns (Call[] memory) { - Call[] memory calls = new Call[]((protocolVersionsPredeployed ? 4 : 5) + (_teeCutover() ? 1 : 0)); + bool updateProtocolVersion = protocolVersionsPredeployed && protocolVersionsMinimumProtocolVersion != 0; + Call[] memory calls = + new Call[]((protocolVersionsPredeployed && !updateProtocolVersion ? 4 : 5) + (_teeCutover() ? 1 : 0)); uint256 i; - if (!protocolVersionsPredeployed) { + if (updateProtocolVersion) { + calls[i++] = Call({ + operation: Enum.Operation.Call, + target: protocolVersionsProxy, + data: abi.encodeCall( + IProtocolVersions.setMinimumProtocolVersion, (protocolVersionsMinimumProtocolVersion) + ), + value: 0 + }); + } else if (!protocolVersionsPredeployed) { calls[i++] = Call({ operation: Enum.Operation.Call, target: proxyAdmin, @@ -350,6 +366,17 @@ contract ExecuteCobaltUpgrade is MultisigScript { IProtocolVersions(protocolVersionsProxy).scheduleId() == protocolVersionsScheduleIdBefore, "protocol versions schedule changed" ); + if (protocolVersionsMinimumProtocolVersion != 0) { + require( + IProtocolVersions(protocolVersionsProxy).minimumProtocolVersion() + == protocolVersionsCurrentMinimumProtocolVersion, + "current minimum protocol version mismatch" + ); + require( + protocolVersionsMinimumProtocolVersion > protocolVersionsCurrentMinimumProtocolVersion, + "minimum protocol version not increased" + ); + } } else { require(_implementation(protocolVersionsProxy) == address(0), "protocol versions proxy already upgraded"); require(protocolVersionsMinimumProtocolVersion != 0, "minimum protocol version not set"); @@ -390,6 +417,12 @@ contract ExecuteCobaltUpgrade is MultisigScript { require(keccak256(bytes(registry.version())) == keccak256(bytes("1.0.0")), "registry version mismatch"); if (protocolVersionsPredeployed) { require(registry.scheduleId() == protocolVersionsScheduleIdBefore, "protocol versions schedule changed"); + if (protocolVersionsMinimumProtocolVersion != 0) { + require( + registry.minimumProtocolVersion() == protocolVersionsMinimumProtocolVersion, + "minimum protocol version not updated" + ); + } } else { require(registry.incidentResponder() == protocolVersionsIncidentResponder, "registry responder mismatch"); require( From 36b811380e53bc8e462ffc5825f66b55ea5cb540 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 09:57:04 -0400 Subject: [PATCH 04/10] chore(mainnet): set v1.4.2 proof hashes Co-authored-by: Codex --- .../evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env index 993b2923d..b408c9963 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/.env @@ -26,9 +26,9 @@ PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313896972091392 # Cobalt proof program hashes from the finalized base/base releases/v1.4.2 build. -AGGREGATE_VERIFIER_TEE_IMAGE_HASH= -AGGREGATE_VERIFIER_ZK_RANGE_HASH= -AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH= +AGGREGATE_VERIFIER_TEE_IMAGE_HASH=0x45c538bc396fe4a01b3f9ddc999494c3b993480ecac0a917e2f1af230d78b0e0 +AGGREGATE_VERIFIER_ZK_RANGE_HASH=0x25e035df08601f4b0b862be24c4bd08b1ee0524623fe737e7e8e378458ec7c21 +AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH=0x00f500229b99db6a14c508c444e4527793f2f178168847acf3f755118614568a L2_GENESIS_BLOCK_NUMBER=0 L2_GENESIS_TIMESTAMP=1686789347 From 9cfab5a83ed693d3e97322e683ad151cd434701b Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 10:24:26 -0400 Subject: [PATCH 05/10] docs(mainnet): finalize v1.4.2 hash guidance Co-authored-by: Codex --- active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md index 1677607a0..e8383e0af 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md @@ -60,10 +60,10 @@ Open `config//.env` and confirm every value, in particular: `AGGREGATE_VERIFIER_ZK_AGGREGATE_HASH` — all three rotate for Cobalt. The TEE value is PCR0 of the Nitro enclave; the ZK values are the SP1 keys from `just succinct vkeys --build`. Zeronet and Sepolia use the same values from - the network's finalized node release. Mainnet's values come from the finalized - `releases/v1.4.2` enclave and vkey builds and remain blank until those exact outputs are recorded. - The deploy script refuses a zero hash or a hash that still matches the live verifier. Every other - `AggregateVerifier` constructor argument is read back from the live implementation at deploy time. + the network's finalized node release. Mainnet's values are recorded from the finalized + `releases/v1.4.2` enclave and vkey builds. The deploy script refuses a zero hash or a hash that + still matches the live verifier. Every other `AggregateVerifier` constructor argument is read + back from the live implementation at deploy time. - TEE anchors — `OLD_TEE_PROVER_REGISTRY_IMPL`, `OLD_NITRO_VERIFIER`, `CERT_MANAGER_OWNER`, and `CERT_MANAGER_REVOKER`. Re-check the live registry implementation and `NITRO_VERIFIER()` before deploying. `ExecuteCobaltUpgrade` only emits the TEE upgrade call From b9ab37f109533afb1d82947268180a91043547eb Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 11:51:01 -0400 Subject: [PATCH 06/10] chore(mainnet): record Cobalt deployments --- .../config/mainnet/addresses.json | 15 +- .../1/run-1790264510035.json | 161 ++++++++++++++++++ .../1/run-1790264557895.json | 59 +++++++ .../1/run-1790264629089.json | 154 +++++++++++++++++ .../1/run-1790264666822.json | 128 ++++++++++++++ 5 files changed, 516 insertions(+), 1 deletion(-) create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltCoreImpls.s.sol/1/run-1790264510035.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltProofImpls.s.sol/1/run-1790264557895.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployNitroValidatorStack.s.sol/1/run-1790264629089.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployTEEProverRegistryImpl.s.sol/1/run-1790264666822.json diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json index 0967ef424..2363d9f2c 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/addresses.json @@ -1 +1,14 @@ -{} +{ + "optimismPortalImpl": "0xcA5ca23502eFf4254bc11Ac0bEC4Dbb7495Bd06C", + "systemConfigImpl": "0x56ca4f4F5Ba9B42d360B48429e8C4a60C5A0795D", + "disputeGameFactoryImpl": "0x94eab8f73fd83407D26C006D159923760D483029", + "protocolVersionsProxy": "0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095", + "optimismPortalImplConstructorArgs": "0x0000000000000000000000000000000000000000000000000000000000015180", + "protocolVersionsImpl": "0xE01aF68e2cb6c4335b17279393E0D60f6F0406f2", + "aggregateVerifier": "0xeF9eCeA15265321753047EBF7D54C858D53cB94f", + "aggregateVerifierConstructorArgs": "0x000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000909f6cf47ed12f010a796527f562bfc26c7f4e72000000000000000000000000d0d07924add740a87e41ca8a0d4cbbf6b074ef710000000000000000000000001fba0c57b07af804a9717e51dec9cc27fbc12228000000000000000000000000b88d95bdf6972508942d184866890c1834219b7545c538bc396fe4a01b3f9ddc999494c3b993480ecac0a917e2f1af230d78b0e025e035df08601f4b0b862be24c4bd08b1ee0524623fe737e7e8e378458ec7c2100f500229b99db6a14c508c444e4527793f2f178168847acf3f755118614568a1607709d90d40904f790574404e2ad614eac858f6162faa0ec34c6bf5e5f3c5700000000000000000000000000000000000000000000000000000000000021050000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000007480afc8d99a5c645c247db5a1e4a4f440e6e095000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000648a5ce30000000000000000000000000000000000000000000000000000000000000002", + "p384Verifier": "0xe0aa6868e14300355001130C6DC29f2f4467D86c", + "certManager": "0x7227d8C477CD0A9EC1446A19b1FCf940Ba3Fba17", + "nitroValidator": "0x47C1ab20fac92c789d9e5708D06641c79b03C460", + "teeProverRegistryImpl": "0x1d8728CabC8BC022005dd08D02a749B8a32Af440" +} \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltCoreImpls.s.sol/1/run-1790264510035.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltCoreImpls.s.sol/1/run-1790264510035.json new file mode 100644 index 000000000..fe31b795f --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltCoreImpls.s.sol/1/run-1790264510035.json @@ -0,0 +1,161 @@ +{ + "transactions": [ + { + "hash": "0x3b38688336ec66627d2d5e1f2b9ba1433da8795de832584b9078095d912c76ff", + "transactionType": "CREATE", + "contractName": "OptimismPortal2", + "contractAddress": "0xca5ca23502eff4254bc11ac0bec4dbb7495bd06c", + "function": null, + "arguments": [ + "86400" + ], + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x53f5e9", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b5060405162004d0f38038062004d0f833981016040819052620000349162000111565b600360805260a0819052620000486200004f565b506200012b565b600054610100900460ff1615620000bc5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200010f576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012457600080fd5b5051919050565b60805160a051614bb06200015f600039600081816105d10152611a0f0152600081816102580152610ee50152614bb06000f3fe6080604052600436106101c65760003560e01c80635c975abb116100f7578063a35d99df11610095578063cff0ab9611610064578063cff0ab96146105f5578063dad544e014610696578063e9e05c42146106ab578063f2b4e617146106be57600080fd5b8063a35d99df146104f5578063a3860f4814610515578063bb2c727e14610535578063bf653a5c146105c257600080fd5b80638c3152e9116100d15780638c3152e914610470578063952b2797146104905780639bf62d82146104a5578063a14238e7146104c557600080fd5b80635c975abb1461043b57806371c1566e146104505780638b4c40b0146101eb57600080fd5b806345884d32116101645780634fd0434c1161013e5780634fd0434c14610366578063513747ab1461039457806354fd4d50146103cf5780635c0cba331461041b57600080fd5b806345884d32146102f6578063485cc955146103265780634870496f1461034657600080fd5b80633c9f397c116101a05780633c9f397c146102825780633e47158c146102ac57806343ca1c50146102c1578063452a9320146102e157600080fd5b806333d7e2bd146101f257806335e80ab31461022f57806338d38c971461024457600080fd5b366101ed576101eb3334620186a06000604051806020016040528060008152506106d3565b005b600080fd5b3480156101fe57600080fd5b50603754610212906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023b57600080fd5b506102126108b3565b34801561025057600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610226565b34801561028e57600080fd5b5061029761093f565b60405163ffffffff9091168152602001610226565b3480156102b857600080fd5b506102126109c6565b3480156102cd57600080fd5b506101eb6102dc366004614123565b610baa565b3480156102ed57600080fd5b50610212610df2565b34801561030257600080fd5b50610316610311366004614175565b610e55565b6040519015158152602001610226565b34801561033257600080fd5b506101eb610341366004614192565b610ee3565b34801561035257600080fd5b506101eb6103613660046141c0565b6110b9565b34801561037257600080fd5b5061037b611784565b60405167ffffffffffffffff9091168152602001610226565b3480156103a057600080fd5b506103c16103af36600461429c565b6000908152603c602052604090205490565b604051908152602001610226565b3480156103db57600080fd5b50604080518082018252600581527f362e302e3000000000000000000000000000000000000000000000000000000060208201529051610226919061430d565b34801561042757600080fd5b50603e54610212906001600160a01b031681565b34801561044757600080fd5b5061031661180b565b34801561045c57600080fd5b506101eb61046b366004614320565b611892565b34801561047c57600080fd5b506101eb61048b366004614345565b611b3e565b34801561049c57600080fd5b506103c1611b4b565b3480156104b157600080fd5b50603254610212906001600160a01b031681565b3480156104d157600080fd5b506103166104e036600461429c565b60336020526000908152604090205460ff1681565b34801561050157600080fd5b5061037b610510366004614398565b611bd2565b34801561052157600080fd5b506102126105303660046143b5565b611beb565b34801561054157600080fd5b5061059a610550366004614320565b60396020908152600092835260408084209091529082529020546001600160a01b0381169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b604080516001600160a01b03909316835267ffffffffffffffff909116602083015201610226565b3480156105ce57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006103c1565b34801561060157600080fd5b5060015461065d906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff9283166020850152911690820152606001610226565b3480156106a257600080fd5b50610212611c23565b6101eb6106b93660046143e5565b6106d3565b3480156106ca57600080fd5b50610212611c6a565b8260005a90506106e1611ccd565b1561071e57341561071e576040517fbd58e0a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83801561073357506001600160a01b03871615155b1561076a576040517fc5defbad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107748351611bd2565b67ffffffffffffffff168567ffffffffffffffff1610156107c1576040517f70c8bdbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6201d4c0835111156107ff576040517f5aa3bac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610808611d4f565b610825575033731111000000000000000000000000000000001111015b60003488888888604051602001610840959493929190614464565b60405160208183030381529060405290506000896001600160a01b0316836001600160a01b03167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051610896919061430d565b60405180910390a450506108aa8282611d8c565b50505050505050565b603754604080517f35e80ab300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916335e80ab39160048083019260209291908290030181865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a91906144c9565b905090565b603e54604080517f3c9f397c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691633c9f397c9160048083019260209291908290030181865afa1580156109a2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a91906144f8565b6000806109f17fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b90506001600160a01b03811615610a0757919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000815250516002610a4a9190614544565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000009190911790610aa5906060015b604051602081830303815290604052805190602001205490565b14610adc576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051306020820152600191810191909152600090610afe90606001610a8b565b90506001600160a01b03811615610b7857806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7191906144c9565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb2612063565b610bba611ccd565b15610bfb57606082015115610bfb576040517fbd58e0a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6032546001600160a01b031661dead14610c41576040517fdfeaaeb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c5782604001516001600160a01b0316301490565b15610c8e576040517fc5defbad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c99836120a2565b9050610ca58183611892565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590850151603280546001600160a01b039092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558401516080850151606086015160a0870151610d3a939291906120ef565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90610d9f90841515815260200190565b60405180910390a280158015610db55750326001145b15610dec576040517fab58103600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b603754604080517f452a932000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163452a93209160048083019260209291908290030181865afa158015610916573d6000803e3d6000fd5b603e546040517f45884d320000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009216906345884d3290602401602060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190614563565b92915050565b7f0000000000000000000000000000000000000000000000000000000000000000600054610100900460ff16158015610f23575060005460ff8083169116105b610f9a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100179055610fd361214d565b603780546001600160a01b038086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603e805485841692169190911790556032541661104e57603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6110566121b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6110c1612063565b6110d785604001516001600160a01b0316301490565b1561110e576040517fc5defbad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611116611ccd565b1561115757606085015115611157576040517fbd58e0a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611161611c6a565b6001600160a01b031663bb8aa1fc866040518263ffffffff1660e01b815260040161118e91815260200190565b606060405180830381865afa1580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190614580565b603e546040517f496b9c160000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301529295509116925063496b9c169150602401602060405180830381865afa158015611236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125a9190614563565b611290576040517ff395240e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603e546040517f04e50fed0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906304e50fed90602401602060405180830381865afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190614563565b61134d576040517fe29927ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001816001600160a01b031663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b191906145fc565b60028111156113c2576113c26145cd565b036113f9576040517fe29927ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61146b816001600160a01b031663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145e919061461d565b67ffffffffffffffff1690565b67ffffffffffffffff1642116114ad576040517fb4caa4e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c46114bf3686900386018661463a565b6122ad565b61152c826001600160a01b031663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611505573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152991906146a0565b90565b14611563576040517f426149af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061156e876120a2565b9050600081600060405160200161158f929190918252602082015260400190565b60408051601f1981840301815282825280516020918201209083018190529250611606910160408051601f19818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906115fc87896146b9565b89604001356122ec565b1515600003611641576040517f2e57ef3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820182526001600160a01b03808616825267ffffffffffffffff42811660208085019182526000888152603982528681203380835290835287822096518754945190951674010000000000000000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009094169486169490941792909217909455868152603c845284812080546001810182559082528482200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091558b840151928c01519351928216939091169185917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6291a4604051339083907f798f9f13695f8f045aa5f80ed8efebb695f3c7fe65da381969f2f28bf3c60b9790600090a35050505050505050565b603e54604080517f4086d18300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691634086d1839160048083019260209291908290030181865afa1580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a919061461d565b603754604080517f5c975abb00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635c975abb9160048083019260209291908290030181865afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190614563565b60008281526039602090815260408083206001600160a01b0385811685529083528184208251808401845290549182168082527401000000000000000000000000000000000000000090920467ffffffffffffffff1681850152868552603390935292205490919060ff1615611934576040517f730a107400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816020015167ffffffffffffffff1660000361197c576040517fcca6afda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bd816001600160a01b031663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143a573d6000803e3d6000fd5b67ffffffffffffffff16826020015167ffffffffffffffff1611611a0d576040517fb4caa4e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000826020015167ffffffffffffffff1642611a48919061473d565b11611a7f576040517fd9bc01be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603e546040517f6c4f44670000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690636c4f446790602401602060405180830381865afa158015611ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b069190614563565b610dec576040517f332a57f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611b488133610baa565b50565b603e54604080517f952b279700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163952b27979160048083019260209291908290030181865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a91906146a0565b6000611bdf826028614754565b610edd90615208614784565b603c6020528160005260406000208181548110611c0757600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000611c2d6109c6565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610916573d6000803e3d6000fd5b603e54604080517ff2b4e61700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f2b4e6179160048083019260209291908290030181865afa158015610916573d6000803e3d6000fd5b6037546040517f47af267b0000000000000000000000000000000000000000000000000000000081527f435553544f4d5f4741535f544f4b454e0000000000000000000000000000000060048201526000916001600160a01b0316906347af267b90602401602060405180830381865afa15801561186e573d6000803e3d6000fd5b6000323303611d5e5750600190565b333b601703611d8657604051602081016040526020600082333c5160e81c62ef010014905090565b50600090565b600154600090611dc2907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361473d565b90506000611dce612310565b90506000816020015160ff16826000015163ffffffff16611def91906147df565b90508215611f2657600154600090611e26908390700100000000000000000000000000000000900467ffffffffffffffff16614829565b90506000836040015160ff1683611e3d919061489d565b600154611e5d9084906fffffffffffffffffffffffffffffffff1661489d565b611e6791906147df565b600154909150600090611eb890611e919084906fffffffffffffffffffffffffffffffff16614959565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166123c9565b90506001861115611ee757611ee4611e9182876040015160ff1660018a611edf919061473d565b6123e8565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611f59908490700100000000000000000000000000000000900467ffffffffffffffff16614784565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611fe6576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600090612012906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816614544565b9050600061202448633b9aca0061243d565b61202e90836149cd565b905060005a61203d908861473d565b90508082111561205957612059612054828461473d565b612454565b5050505050505050565b61206b61180b565b15611b3c576040517fb9c3c2ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516020808301516040808501516060860151608087015160a088015193516000976120d29790969591016149e1565b604051602081830303815290604052805190602001209050919050565b60008060006120ff866000612482565b905080612135576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b336121566109c6565b6001600160a01b03161415801561217d575033612171611c23565b6001600160a01b031614155b15611b3c576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff166122315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f91565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611b3c5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b600081600001518260200151836040015184606001516040516020016120d2949392919093845260208401929092526040830152606082015260800190565b6000806122f8866124a0565b9050612306818686866124d2565b9695505050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152603754604080517fcc731b0200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc731b029160048083019260c09291908290030181865afa1580156123a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190614a41565b60006123de6123d88585612502565b83612512565b90505b9392505050565b6000670de0b6b3a764000061242961240085836147df565b61241290670de0b6b3a7640000614829565b61242485670de0b6b3a764000061489d565b612521565b612433908661489d565b6123de91906147df565b60008183101561244d57816123e1565b5090919050565b6000805a90505b825a612467908361473d565b101561247d5761247682614afd565b915061245b565b505050565b600080603f83619c4001026040850201603f5a021015949350505050565b606081805190602001206040516020016124bc91815260200190565b6040516020818303038152906040529050919050565b60006124f9846124e3878686612552565b8051602091820120825192909101919091201490565b95945050505050565b60008183121561244d57816123e1565b600081831261244d57816123e1565b60006123e1670de0b6b3a76400008361253986612e64565b612543919061489d565b61254d91906147df565b61308e565b606060008451116125a55760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610f91565b60006125b0846132b3565b905060006125bd8661339f565b90506000846040516020016125d491815260200190565b60405160208183030381529060405290506000805b8451811015612df557600085828151811061260657612606614b17565b6020026020010151905084518311156126875760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610f91565b8260000361272657805180516020918201206040516126d5926126af92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6127215760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610f91565b612849565b8051516020116127c25780518051602091820120604051612750926126af92910190815260200190565b6127215760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610f91565b8051845160208087019190912082519190920120146128495760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610f91565b61285560106001614b46565b816020015151036129fd57845183036129955761288f816020015160108151811061288257612882614b17565b6020026020010151613402565b965060008751116129085760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610f91565b60018651612916919061473d565b821461298a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610f91565b5050505050506123e1565b60008584815181106129a9576129a9614b17565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106129d4576129d4614b17565b602002602001015190506129e7816134b6565b95506129f4600186614b46565b94505050612de2565b600281602001515103612d74576000612a15826134db565b9050600081600081518110612a2c57612a2c614b17565b016020015160f81c90506000612a43600283614b5e565b612a4e906002614b80565b90506000612a5f848360ff166134ff565b90506000612a6d8a896134ff565b90506000612a7b8383613535565b905080835114612af35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610f91565b60ff851660021480612b08575060ff85166003145b15612ca95780825114612b835760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610f91565b612b9d876020015160018151811061288257612882614b17565b9c5060008d5111612c165760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610f91565b60018c51612c24919061473d565b8814612c985760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610f91565b5050505050505050505050506123e1565b60ff85161580612cbc575060ff85166001145b15612cfb57612ce88760200151600181518110612cdb57612cdb614b17565b60200260200101516134b6565b9950612cf4818a614b46565b9850612d69565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610f91565b505050505050612de2565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610f91565b5080612ded81614afd565b9150506125e9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610f91565b6000808213612eb55760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610f91565b60006060612ec2846135e9565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136130bf57506000919050565b680755bf798b4a1bf1e582126131175760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610f91565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156132d1576132d1613f8f565b60405190808252806020026020018201604052801561331657816020015b60408051808201909152606080825260208201528152602001906001900390816132ef5790505b50915060005b8181101561339857604051806040016040528085838151811061334157613341614b17565b6020026020010151815260200161337086848151811061336357613363614b17565b60200260200101516136a5565b81525083828151811061338557613385614b17565b602090810291909101015260010161331c565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156133f7578060011b82018184015160001a8060041c8253600f8116600183015350506001016133c9565b509295945050505050565b60606000806000613412856136b8565b91945092509050600081600181111561342d5761342d6145cd565b14613464576040517f1ff9b2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61346e8284614b46565b8551146134a7576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124f985602001518484613b56565b606060208260000151106134d2576134cd82613402565b610edd565b610edd82613bea565b6060610edd6134fa836020015160008151811061288257612882614b17565b61339f565b60608251821061351e5750604080516020810190915260008152610edd565b6123e18383848651613530919061473d565b613c00565b600080825184511061354857825161354b565b83515b90505b80821080156135d2575082828151811061356a5761356a614b17565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106135a9576135a9614b17565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156135e25781600101915061354e565b5092915050565b600080821161363a5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610f91565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060610edd6136b383613d6c565b613dd9565b600080600083600001516000036136fb576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151805160001a607f8111613720576000600160009450945094505050613b4f565b60b7811161383657600061373560808361473d565b905080876000015111613774576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001838101517fff000000000000000000000000000000000000000000000000000000000000001690821480156137ec57507f80000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216105b15613823576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060019550935060009250613b4f915050565b60bf811161399457600061384b60b78361473d565b90508087600001511161388a576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036138ec576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111613934576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61393e8184614b46565b895111613977576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613982836001614b46565b9750955060009450613b4f9350505050565b60f781116139f95760006139a960c08361473d565b9050808760000151116139e8576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600195509350849250613b4f915050565b6000613a0660f78361473d565b905080876000015111613a45576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613aa7576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c60378111613aef576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613af98184614b46565b895111613b32576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b3d836001614b46565b9750955060019450613b4f9350505050565b9193909250565b60608167ffffffffffffffff811115613b7157613b71613f8f565b6040519080825280601f01601f191660200182016040528015613b9b576020820181803683370190505b50905081156123e1576000613bb08486614b46565b90506020820160005b84811015613bd1578281015182820152602001613bb9565b84811115613be0576000858301525b5050509392505050565b6060610edd826020015160008460000151613b56565b60608182601f011015613c555760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610f91565b828284011015613ca75760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610f91565b81830184511015613cfa5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610f91565b606082158015613d195760405191506000825260208201604052613d63565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613d52578051835260209283019201613d3a565b5050858452601f01601f1916604052505b50949350505050565b60408051808201909152600080825260208201528151600003613dbb576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60606000806000613de9856136b8565b919450925090506001816001811115613e0457613e046145cd565b14613e3b576040517f4b9c6abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451613e478385614b46565b14613e7e576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081613e955790505093506000835b8651811015613f8357600080613f086040518060400160405280858c60000151613eec919061473d565b8152602001858c60200151613f019190614b46565b90526136b8565b509150915060405180604001604052808383613f249190614b46565b8152602001848b60200151613f399190614b46565b815250888581518110613f4e57613f4e614b17565b6020908102919091010152613f64600185614b46565b9350613f708183614b46565b613f7a9084614b46565b92505050613ec2565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613fe757613fe7613f8f565b604052919050565b6001600160a01b0381168114611b4857600080fd5b600082601f83011261401557600080fd5b813567ffffffffffffffff81111561402f5761402f613f8f565b6140426020601f19601f84011601613fbe565b81815284602083860101111561405757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561408657600080fd5b60405160c0810167ffffffffffffffff82821081831117156140aa576140aa613f8f565b8160405282935084358352602085013591506140c582613fef565b816020840152604085013591506140db82613fef565b816040840152606085013560608401526080850135608084015260a085013591508082111561410957600080fd5b5061411685828601614004565b60a0830152505092915050565b6000806040838503121561413657600080fd5b823567ffffffffffffffff81111561414d57600080fd5b61415985828601614074565b925050602083013561416a81613fef565b809150509250929050565b60006020828403121561418757600080fd5b81356123e181613fef565b600080604083850312156141a557600080fd5b82356141b081613fef565b9150602083013561416a81613fef565b600080600080600085870360e08112156141d957600080fd5b863567ffffffffffffffff808211156141f157600080fd5b6141fd8a838b01614074565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561423657600080fd5b60408901955060c089013592508083111561425057600080fd5b828901925089601f84011261426457600080fd5b823591508082111561427557600080fd5b508860208260051b840101111561428b57600080fd5b959894975092955050506020019190565b6000602082840312156142ae57600080fd5b5035919050565b60005b838110156142d05781810151838201526020016142b8565b83811115610dec5750506000910152565b600081518084526142f98160208601602086016142b5565b601f01601f19169290920160200192915050565b6020815260006123e160208301846142e1565b6000806040838503121561433357600080fd5b82359150602083013561416a81613fef565b60006020828403121561435757600080fd5b813567ffffffffffffffff81111561436e57600080fd5b61437a84828501614074565b949350505050565b67ffffffffffffffff81168114611b4857600080fd5b6000602082840312156143aa57600080fd5b81356123e181614382565b600080604083850312156143c857600080fd5b50508035926020909101359150565b8015158114611b4857600080fd5b600080600080600060a086880312156143fd57600080fd5b853561440881613fef565b945060208601359350604086013561441f81614382565b9250606086013561442f816143d7565b9150608086013567ffffffffffffffff81111561444b57600080fd5b61445788828901614004565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b6048820152600082516144b88160498501602087016142b5565b919091016049019695505050505050565b6000602082840312156144db57600080fd5b81516123e181613fef565b63ffffffff81168114611b4857600080fd5b60006020828403121561450a57600080fd5b81516123e1816144e6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600081600019048311821515161561455e5761455e614515565b500290565b60006020828403121561457557600080fd5b81516123e1816143d7565b60008060006060848603121561459557600080fd5b83516145a0816144e6565b60208501519093506145b181614382565b60408501519092506145c281613fef565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561460e57600080fd5b8151600381106123e157600080fd5b60006020828403121561462f57600080fd5b81516123e181614382565b60006080828403121561464c57600080fd5b6040516080810181811067ffffffffffffffff8211171561466f5761466f613f8f565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000602082840312156146b257600080fd5b5051919050565b600067ffffffffffffffff808411156146d4576146d4613f8f565b8360051b60206146e5818301613fbe565b8681529185019181810190368411156146fd57600080fd5b865b84811015614731578035868111156147175760008081fd5b61472336828b01614004565b8452509183019183016146ff565b50979650505050505050565b60008282101561474f5761474f614515565b500390565b600067ffffffffffffffff8083168185168183048111821515161561477b5761477b614515565b02949350505050565b600067ffffffffffffffff8083168185168083038211156147a7576147a7614515565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826147ee576147ee6147b0565b60001983147f80000000000000000000000000000000000000000000000000000000000000008314161561482457614824614515565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561486357614863614515565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561489757614897614515565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156148de576148de614515565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561491957614919614515565b6000871292508782058712848416161561493557614935614515565b8785058712818416161561494b5761494b614515565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561499357614993614515565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156149c7576149c7614515565b50500190565b6000826149dc576149dc6147b0565b500490565b86815260006001600160a01b03808816602084015280871660408401525084606083015283608083015260c060a0830152614a1f60c08301846142e1565b98975050505050505050565b805160ff81168114614a3c57600080fd5b919050565b600060c08284031215614a5357600080fd5b60405160c0810181811067ffffffffffffffff82111715614a7657614a76613f8f565b6040528251614a84816144e6565b8152614a9260208401614a2b565b6020820152614aa360408401614a2b565b60408201526060830151614ab6816144e6565b60608201526080830151614ac9816144e6565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114614af157600080fd5b60a08201529392505050565b60006000198203614b1057614b10614515565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115614b5957614b59614515565b500190565b600060ff831680614b7157614b716147b0565b8060ff84160691505092915050565b600060ff821660ff841680821015614b9a57614b9a614515565b9003939250505056fea164736f6c634300080f000a0000000000000000000000000000000000000000000000000000000000015180", + "nonce": "0x5", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6952fbc7f113fe887aa916a98572225d6f9455a1d75a62c6f95c4e7c55b499a5", + "transactionType": "CREATE", + "contractName": "SystemConfig", + "contractAddress": "0x56ca4f4f5ba9b42d360b48429e8c4a60c5a0795d", + "function": null, + "arguments": null, + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x314ce8", + "value": "0x0", + "input": "0x60a06040523480156200001157600080fd5b5060046080526200005f6200004860017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a062000135565b60001b6000196200006f60201b620017c71760201c565b6200006962000073565b6200015b565b9055565b600054610100900460ff1615620000e05760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000133576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000828210156200015657634e487b7160e01b600052601160045260246000fd5b500390565b608051612b486200017e600039600081816105480152610af70152612b486000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80637e54b8ad116101f4578063d220a9e01161011a578063f2c4bc9e116100ad578063f8c68de01161007c578063f8c68de01461099e578063fd32aa0f146109a6578063fe3d5710146109ae578063ffa1ad74146109e757600080fd5b8063f2c4bc9e1461095b578063f2fde38b1461096e578063f45e65d814610981578063f68016b71461098a57600080fd5b8063e0e2016d116100e9578063e0e2016d14610922578063e81b2c6d1461092a578063ec70751714610933578063f2b4e6171461095357600080fd5b8063d220a9e0146108f9578063d6ae3cd514610909578063dac6e63a14610912578063dad544e01461091a57600080fd5b8063b40a817c11610192578063c4e8ddfa11610161578063c4e8ddfa14610792578063c9b26f611461079a578063c9ff2d16146107ad578063cc731b02146107c557600080fd5b8063b40a817c14610748578063bc49ce5f1461075b578063bfb14fb714610763578063c0fd4b411461077f57600080fd5b80639b7d7f0a116101ce5780639b7d7f0a146106a3578063a39fac12146106ab578063a62611a214610714578063a71198691461074057600080fd5b80637e54b8ad146106775780638da5cb5b1461067f578063935f029e1461069057600080fd5b806321d7fde5116102d95780634add321d116102775780635c975abb116102465780635c975abb1461064c5780635d73369c14610654578063715018a61461065c5780637616f0e81461066457600080fd5b80634add321d146105ad5780634d5d9a2a146105b55780634f16540b146105e657806354fd4d501461060d57600080fd5b80633e47158c116102b35780633e47158c14610572578063452a93201461057a57806347af267b1461058257806348cd4cb1146105a557600080fd5b806321d7fde51461051b57806335e80ab31461052e57806338d38c971461054157600080fd5b806316d3bc7f116103515780631fd19ee1116103205780631fd19ee11461049957806320f06fdc146104a157806321326849146104b4578063215b7a1c1461051357600080fd5b806316d3bc7f1461044757806318d139181461046b57806319f5cea81461047e5780631edd50981461048657600080fd5b80630a49cb031161038d5780630a49cb03146104045780630ae14b1b1461040c5780630c18c1621461042b578063155b6c6f1461043457600080fd5b806306c92657146103b4578063078f29cf146103cf5780630a2ca2a9146103ef575b600080fd5b6103bc6109ef565b6040519081526020015b60405180910390f35b6103d7610a1d565b6040516001600160a01b0390911681526020016103c6565b6104026103fd366004612551565b610a56565b005b6103d7610a73565b631dcd65005b60405167ffffffffffffffff90911681526020016103c6565b6103bc60655481565b6104026104423660046125a1565b610aa3565b606a54610412906c01000000000000000000000000900467ffffffffffffffff1681565b610402610479366004612551565b610ab9565b6103bc610aca565b61040261049436600461270b565b610af5565b6103d7610e6a565b6104026104af36600461287b565b610e94565b7f435553544f4d5f4741535f544f4b454e00000000000000000000000000000000600052606d6020527f3ec9a18bd22a834e2a13465cc2aa2a9aebb161ffdebf39cdb0028dbb1b5394b45460ff165b60405190151581526020016103c6565b6103d7610ea5565b61040261052936600461289f565b610ed5565b606c546103d7906001600160a01b031681565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103c6565b6103d7610ee7565b6103d76110cb565b6105036105903660046128c9565b606d6020526000908152604090205460ff1681565b6103bc611152565b610412611182565b606a546105d19068010000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016103c6565b6103bc7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b604080518082018252600681527f332e31342e300000000000000000000000000000000000000000000000000000602082015290516103c6919061292f565b6105036111a8565b6103bc6112ce565b6104026112f9565b610402610672366004612942565b61130d565b6103bc61131e565b6033546001600160a01b03166103d7565b61040261069e36600461295d565b611349565b6103d761135b565b6106b361138b565b6040516103c69190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b606c546104129074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b6103d761144e565b610402610756366004612942565b61147e565b6103bc61148f565b6068546105d19068010000000000000000900463ffffffff1681565b61040261078d36600461289f565b6114ba565b6103d76114cc565b6104026107a83660046128c9565b6114fc565b606a546105d190640100000000900463ffffffff1681565b6108896040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b6040516103c69190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b606a546105d19063ffffffff1681565b6103bc606b5481565b6103d761150d565b6103d761153d565b6103bc611584565b6103bc60675481565b6068546105d1906c01000000000000000000000000900463ffffffff1681565b6103d76115af565b61040261096936600461298d565b611624565b61040261097c366004612551565b6116e4565b6103bc60665481565b6068546104129067ffffffffffffffff1681565b6103bc611771565b6103bc61179c565b606a546109d49074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020016103c6565b6103bc600081565b610a1a60017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6129ec565b81565b6000610a51610a4d60017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776129ec565b5490565b905090565b610a5e6117cb565b610a706001600160a01b038216611825565b50565b6000610a51610a4d60017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6129ec565b610aab6117cb565b610ab58282611886565b5050565b610ac16117cb565b610a7081611978565b610a1a60017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86129ec565b7f0000000000000000000000000000000000000000000000000000000000000000600054610100900460ff16158015610b35575060005460ff8083169116105b610bac5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100179055610be56119d1565b610bed611a38565b610bf68c6116e4565b610bff89611825565b610c098b8b611abd565b610c1288611ba4565b610c3b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08889055565b610c6e610c6960017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986129ec565b869055565b610ca2610c9c60017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376129ec565b85519055565b610cd9610cd060017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86129ec565b60208601519055565b610d10610d0760017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776129ec565b60408601519055565b610d47610d3e60017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6129ec565b60608601519055565b610d7e610d7560017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6129ec565b60808601519055565b610db5610dac60017f51547f31a231e1007dca33017faa3da20d959b95087c588a7768bfb922fd59006129ec565b60a08601519055565b610dbd611cc6565b610dc686611d2e565b606b839055606c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416179055600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b6000610a517f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c085490565b610e9c6117cb565b610a7081612120565b6000610a51610a4d60017f51547f31a231e1007dca33017faa3da20d959b95087c588a7768bfb922fd59006129ec565b610edd6117cb565b610ab58282611abd565b600080610f127fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b90506001600160a01b03811615610f2857919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e676572000000000000815250516002610f6b9190612a03565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000009190911790610fc6906060015b604051602081830303815290604052805190602001205490565b14610ffd576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805130602082015260019181019190915260009061101f90606001610fac565b90506001600160a01b0381161561109957806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190612a40565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606c54604080517f452a932000000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163452a93209160048083019260209291908290030181865afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190612a40565b6000610a51610a4d60017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06129ec565b606954600090610a519063ffffffff6a0100000000000000000000820481169116612a5d565b606c546040517f2e48152c000000000000000000000000000000000000000000000000000000008152600060048201819052916001600160a01b031690632e48152c90602401602060405180830381865afa15801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f9190612a89565b80610a515750606c546001600160a01b0316632e48152c61124e610a73565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190612a89565b610a1a60017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376129ec565b6113016117cb565b61130b600061218d565b565b6113156117cb565b610a70816121f7565b610a1a60017f51547f31a231e1007dca33017faa3da20d959b95087c588a7768bfb922fd59006129ec565b6113516117cb565b610ab5828261226a565b6000610a51610a4d60017fa04c5bb938ca6fc46d95553abf0a76345ce3e722a30bf4f74928b8e7d852320d6129ec565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526040518060c001604052806113d061144e565b6001600160a01b031681526020016113e66114cc565b6001600160a01b031681526020016113fc610a1d565b6001600160a01b03168152602001611412610a73565b6001600160a01b0316815260200161142861135b565b6001600160a01b0316815260200161143e610ea5565b6001600160a01b03169052919050565b6000610a51610a4d60017f383f291819e6d54073bc9a648251d97421076bdd101933c0c022219ce95806376129ec565b6114866117cb565b610a7081611ba4565b610a1a60017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986129ec565b6114c26117cb565b610ab58282612326565b6000610a51610a4d60017f46adcbebc6be8ce551740c29c47c8798210f23f7f4086c41752944352568d5a86129ec565b6115046117cb565b610a7081611825565b6000610a51610a4d60017f71ac12829d66ee73d8d95bff50b3589745ce57edae70a3fb111a2342464dc5986129ec565b6000611547610ee7565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112e573d6000803e3d6000fd5b610a1a60017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06129ec565b6000806115ba610a73565b9050806001600160a01b031663f2b4e6176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190612a40565b91505090565b61162c6119d1565b6000828152606d602052604090205460ff1615158115150361167a576040517ff5828b0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152606d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091559051909184917fb876f6594132c89891d2fd198e925e999be741ec809abb58bfe9b966876cc06c9190a35050565b6116ec6117cb565b6001600160a01b0381166117685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ba3565b610a708161218d565b610a1a60017f9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad63776129ec565b610a1a60017f4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ad6129ec565b9055565b6033546001600160a01b0316331461130b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba3565b60678190556040805160208082018490528251808303909101815290820190915260005b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161187a919061292f565b60405180910390a35050565b606a80547fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff166801000000000000000063ffffffff8516027fffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffff16176c0100000000000000000000000067ffffffffffffffff841690810291909117909155604080516bffffffff000000000000000085831b1690921760208301526000910160408051601f19818403018152919052905060055b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161196b919061292f565b60405180910390a3505050565b6119a17f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08829055565b604080516001600160a01b03831660208201526000910160408051601f1981840301815291905290506003611849565b336119da610ee7565b6001600160a01b031614158015611a015750336119f561153d565b6001600160a01b031614155b1561130b576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16611ab55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ba3565b61130b6124a6565b606880547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000063ffffffff8581169182027fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff16929092176c0100000000000000000000000092851692909202919091179091557f0100000000000000000000000000000000000000000000000000000000000000602083811b67ffffffff000000001690921717606681905560655460408051938401919091528201526000906060015b60408051601f198184030181529190529050600161193a565b611bac611182565b67ffffffffffffffff168167ffffffffffffffff161015611c0f5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610ba3565b631dcd650067ffffffffffffffff82161115611c6d5760405162461bcd60e51b815260206004820181905260248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f20686967686044820152606401610ba3565b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002611849565b611cf4610a4d60017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06129ec565b60000361130b5761130b611d2960017fa11ee3ab75b40e88a0105e935d17cd36c8faee0138320d776c411291bdbbb1a06129ec565b439055565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115611dc45760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d6178206261736500000000000000000000006064820152608401610ba3565b6001816040015160ff1611611e415760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e203100000000000000000000000000000000006064820152608401610ba3565b6068546080820151825167ffffffffffffffff90921691611e629190612aa6565b63ffffffff161115611eb65760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f77006044820152606401610ba3565b6000816020015160ff1611611f335760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f74206265203000000000000000000000000000000000006064820152608401610ba3565b8051602082015163ffffffff82169160ff90911690611f53908290612ac5565b611f5d9190612b0f565b63ffffffff1614611fd65760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d69740000000000000000006064820152608401610ba3565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b606a80547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040805160208082019390935281518082039093018352810190526007611849565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606c80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040805160208082019390935281518082039093018352810190526006611849565b7fff000000000000000000000000000000000000000000000000000000000000008116156123005760405162461bcd60e51b815260206004820152602160248201527f53797374656d436f6e6669673a207363616c61722065786365656473206d617860448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610ba3565b606582905560668190556040805160208101849052908101829052600090606001611b8b565b60018263ffffffff1610156123a35760405162461bcd60e51b815260206004820152602660248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65203e3d203100000000000000000000000000000000000000000000000000006064820152608401610ba3565b60018163ffffffff1610156124205760405162461bcd60e51b815260206004820152602560248201527f53797374656d436f6e6669673a20656c6173746963697479206d75737420626560448201527f203e3d20310000000000000000000000000000000000000000000000000000006064820152608401610ba3565b606a805463ffffffff83811664010000000081027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909316918616919091179190911790915560405160009161248d91602086811b67ffffffff0000000016909217910190815260200190565b60408051601f198184030181529190529050600461193a565b600054610100900460ff166125235760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ba3565b61130b3361218d565b6001600160a01b0381168114610a7057600080fd5b803561254c8161252c565b919050565b60006020828403121561256357600080fd5b813561256e8161252c565b9392505050565b803563ffffffff8116811461254c57600080fd5b803567ffffffffffffffff8116811461254c57600080fd5b600080604083850312156125b457600080fd5b6125bd83612575565b91506125cb60208401612589565b90509250929050565b60405160c0810167ffffffffffffffff8111828210171561261e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff8116811461254c57600080fd5b600060c0828403121561264757600080fd5b60405160c0810181811067ffffffffffffffff82111715612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290508082356126a28161252c565b815260208301356126b28161252c565b602082015260408301356126c58161252c565b604082015260608301356126d88161252c565b606082015260808301356126eb8161252c565b608082015260a08301356126fe8161252c565b60a0919091015292915050565b60008060008060008060008060008060008b8d036102a081121561272e57600080fd5b8c356127398161252c565b9b5061274760208e01612575565b9a5061275560408e01612575565b995060608d0135985061276a60808e01612589565b975060a08d013561277a8161252c565b965060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40820112156127ac57600080fd5b506127b56125d4565b6127c160c08e01612575565b81526127cf60e08e01612624565b60208201526127e16101008e01612624565b60408201526127f36101208e01612575565b60608201526128056101408e01612575565b60808201526101608d01356fffffffffffffffffffffffffffffffff8116811461282e57600080fd5b60a082015294506128426101808d01612541565b93506128528d6101a08e01612635565b92506102608c013591506128696102808d01612541565b90509295989b509295989b9093969950565b60006020828403121561288d57600080fd5b813561ffff8116811461256e57600080fd5b600080604083850312156128b257600080fd5b6128bb83612575565b91506125cb60208401612575565b6000602082840312156128db57600080fd5b5035919050565b6000815180845260005b81811015612908576020818501810151868301820152016128ec565b8181111561291a576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061256e60208301846128e2565b60006020828403121561295457600080fd5b61256e82612589565b6000806040838503121561297057600080fd5b50508035926020909101359150565b8015158114610a7057600080fd5b600080604083850312156129a057600080fd5b8235915060208301356129b28161297f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156129fe576129fe6129bd565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a3b57612a3b6129bd565b500290565b600060208284031215612a5257600080fd5b815161256e8161252c565b600067ffffffffffffffff808316818516808303821115612a8057612a806129bd565b01949350505050565b600060208284031215612a9b57600080fd5b815161256e8161297f565b600063ffffffff808316818516808303821115612a8057612a806129bd565b600063ffffffff80841680612b03577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff80831681851681830481118215151615612b3257612b326129bd565b0294935050505056fea164736f6c634300080f000a", + "nonce": "0x6", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf0f82ea5623d52cd4538bed4f84d378223ef8f86dc4abcbe3dfcefae3308afd4", + "transactionType": "CREATE", + "contractName": "DisputeGameFactory", + "contractAddress": "0x94eab8f73fd83407d26c006d159923760d483029", + "function": null, + "arguments": null, + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x226a11", + "value": "0x0", + "input": "0x60a060405234801561001057600080fd5b50600160805261001e610023565b6100e3565b600054610100900460ff161561008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611e14610105600039600081816102580152610cd00152611e146000f3fe60806040526004361061016a5760003560e01c80636593dc6e116100cb57806396cd97201161007f578063c4d66de811610059578063c4d66de81461047b578063dad544e01461049b578063f2fde38b146104b057600080fd5b806396cd9720146103e7578063b107095714610407578063bb8aa1fc1461042757600080fd5b806374cc86ac116100b057806374cc86ac1461039657806382ecf2f6146103b65780638da5cb5b146103c957600080fd5b80636593dc6e14610354578063715018a61461038157600080fd5b806338d38c97116101225780634d1975b4116101075780634d1975b41461029757806354fd4d50146102b65780635f0150cb1461030c57600080fd5b806338d38c97146102445780633e47158c1461028257600080fd5b80631b685b9e116101535780631b685b9e146101c15780631e334240146101f7578063254bd6831461021757600080fd5b80631011f3771461016f57806314f6b1a31461019f575b600080fd5b61018261017d36600461165f565b6104d0565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ab57600080fd5b506101bf6101ba3660046116fe565b610558565b005b3480156101cd57600080fd5b506101826101dc366004611735565b6065602052600090815260409020546001600160a01b031681565b34801561020357600080fd5b506101bf610212366004611750565b6105d5565b34801561022357600080fd5b5061023761023236600461177a565b610621565b6040516101969190611809565b34801561025057600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610196565b34801561028e57600080fd5b50610182610802565b3480156102a357600080fd5b506068545b604051908152602001610196565b3480156102c257600080fd5b506102ff6040518060400160405280600581526020017f312e352e3000000000000000000000000000000000000000000000000000000081525081565b60405161019691906118c6565b34801561031857600080fd5b5061032c6103273660046118d9565b6109e6565b604080516001600160a01b03909316835267ffffffffffffffff909116602083015201610196565b34801561036057600080fd5b506102a861036f366004611735565b60666020526000908152604090205481565b34801561038d57600080fd5b506101bf610a2c565b3480156103a257600080fd5b506102ff6103b1366004611735565b610a40565b6101826103c43660046118d9565b610ada565b3480156103d557600080fd5b506033546001600160a01b0316610182565b3480156103f357600080fd5b506102a86104023660046118d9565b610b53565b34801561041357600080fd5b506101bf610422366004611933565b610b8c565b34801561043357600080fd5b5061044761044236600461197e565b610c72565b6040805163ffffffff909416845267ffffffffffffffff90921660208401526001600160a01b031690820152606001610196565b34801561048757600080fd5b506101bf610496366004611997565b610cce565b3480156104a757600080fd5b50610182610e4b565b3480156104bc57600080fd5b506101bf6104cb366004611997565b610ebb565b60006104de87878787610f65565b9050806001600160a01b0316634224b1e73485856040518463ffffffff1660e01b815260040161050f9291906119df565b6000604051808303818588803b15801561052857600080fd5b505af115801561053c573d6000803e3d6000fd5b505050505061054e878787878561119a565b9695505050505050565b610560611240565b63ffffffff821660008181526065602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616908117909155905190917fff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de91a35050565b6105dd611240565b63ffffffff8216600081815260666020526040808220849055518392917f74d6665c4b26d5596a5aa13d3014e0c06af4d322075a797f87b03cd4c5bc91ca91a35050565b60685460609083101580610633575081155b6107fb575060408051600583901b8101602001909152825b8381116107f957600060688281548110610667576106676119f3565b600091825260209091200154905060e081901c60a082901c67ffffffffffffffff166001600160a01b03831663ffffffff891683036107e857600186510186526000816001600160a01b031663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261070f9190810190611a51565b90506000826001600160a01b031663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190611afe565b90506040518060a001604052808881526020018781526020018567ffffffffffffffff168152602001828152602001838152508860018a516107b79190611b46565b815181106107c7576107c76119f3565b6020026020010181905250888851106107e5575050505050506107f9565b50505b5050600019909201915061064b9050565b505b9392505050565b60008061082d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b90506001600160a01b0381161561084357919050565b6040518060400160405280601a81526020017f4f564d5f4c3143726f7373446f6d61696e4d657373656e6765720000000000008152505160026108869190611b5d565b604080513060208201526000918101919091527f4f564d5f4c3143726f7373446f6d61696e4d657373656e67657200000000000091909117906108e1906060015b604051602081830303815290604052805190602001205490565b14610918576040517f54e433cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805130602082015260019181019190915260009061093a906060016108c7565b90506001600160a01b038116156109b457806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad9190611b7c565b9250505090565b6040517f332144db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006109f787878787610b53565b6000908152606760205260409020546001600160a01b0381169860a09190911c67ffffffffffffffff16975095505050505050565b610a34611240565b610a3e60006112b4565b565b60696020526000908152604090208054610a5990611b99565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8590611b99565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b6000610ae885858585610f65565b9050806001600160a01b0316638129fc1c346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b2557600080fd5b505af1158015610b39573d6000803e3d6000fd5b5050505050610b4b858585858561119a565b949350505050565b600084848484604051602001610b6c9493929190611bec565b604051602081830303815290604052805190602001209050949350505050565b610b94611240565b63ffffffff8416600090815260656020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905560699091529020610bef828483611c61565b5060405163ffffffff8516906001600160a01b038516907fff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de90600090a38363ffffffff167fa47fcdf075d680d3817bfca7973b373e1a5f6cfc3b444748299cc2b83d8348f98383604051610c649291906119df565b60405180910390a250505050565b600080600080600080610cbe60688881548110610c9157610c916119f3565b906000526020600020015460e081901c9160a082901c67ffffffffffffffff16916001600160a01b031690565b9199909850909650945050505050565b7f0000000000000000000000000000000000000000000000000000000000000000600054610100900460ff16158015610d0e575060005460ff8083169116105b610d9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100179055610dd861131e565b610de0611385565b610de9826112b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6000610e55610802565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190611b7c565b905090565b610ec3611240565b6001600160a01b038116610f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d96565b610f62816112b4565b50565b63ffffffff84166000908152606560205260408120546001600160a01b031680610fc3576040517f031c6de400000000000000000000000000000000000000000000000000000000815263ffffffff87166004820152602401610d96565b63ffffffff86166000908152606660205260409020543414611011576040517f8620aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061101f87878787610b53565b6000818152606760205260409020549091501561106b576040517f014f6fe500000000000000000000000000000000000000000000000000000000815260048101829052602401610d96565b6000611078600143611b46565b63ffffffff89166000908152606960205260408120805492409350909161109e90611b99565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca90611b99565b80156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b50505050509050805160000361116b576111643389848a8a604051602001611143959493929190611d22565b60408051601f198184030181529190526001600160a01b0386169085611424565b945061118e565b61118b3389848c8b8b876040516020016111439796959493929190611d6f565b94505b50505050949350505050565b60006111a886868686610b53565b60008181526067602052604080822060e08a901b4260a01b17861790819055606880546001810182559084527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c2209775301819055905192935091879163ffffffff8a16916001600160a01b038716917f5b565efe82411da98814f356d0e7bcb8f0219b8d970307c5afb4a6903a8b2e3591a450505050505050565b6033546001600160a01b03163314610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d96565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33611327610802565b6001600160a01b03161415801561134e575033611342610e4b565b6001600160a01b031614155b15610a3e576040517fc4050a2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1661141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d96565b610a3e611433565b6000610b4b60008585856114d3565b600054610100900460ff166114ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610d96565b610a3e336112b4565b600060608303516040840351602085035185518060208801018051600283016c5af43d3d93803e606057fd5bf38a528a600d8b035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218b03527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff603a8b035272fd6100003d81600a3d39f336602c57343d527f6062820160781b1761ff9e82106059018b03528060f01b835288606c8201604c8c038ef5975050866115a05763301164256000526004601cfd5b90528652601f198601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08501527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0909301929092525092915050565b803563ffffffff8116811461161157600080fd5b919050565b60008083601f84011261162857600080fd5b50813567ffffffffffffffff81111561164057600080fd5b60208301915083602082850101111561165857600080fd5b9250929050565b6000806000806000806080878903121561167857600080fd5b611681876115fd565b955060208701359450604087013567ffffffffffffffff808211156116a557600080fd5b6116b18a838b01611616565b909650945060608901359150808211156116ca57600080fd5b506116d789828a01611616565b979a9699509497509295939492505050565b6001600160a01b0381168114610f6257600080fd5b6000806040838503121561171157600080fd5b61171a836115fd565b9150602083013561172a816116e9565b809150509250929050565b60006020828403121561174757600080fd5b6107fb826115fd565b6000806040838503121561176357600080fd5b61176c836115fd565b946020939093013593505050565b60008060006060848603121561178f57600080fd5b611798846115fd565b95602085013595506040909401359392505050565b60005b838110156117c85781810151838201526020016117b0565b838111156117d7576000848401525b50505050565b600081518084526117f58160208601602086016117ad565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156118b8578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015167ffffffffffffffff16878501526060808201519085015260809081015160a0918501829052906118a4818601836117dd565b968901969450505090860190600101611830565b509098975050505050505050565b6020815260006107fb60208301846117dd565b600080600080606085870312156118ef57600080fd5b6118f8856115fd565b935060208501359250604085013567ffffffffffffffff81111561191b57600080fd5b61192787828801611616565b95989497509550505050565b6000806000806060858703121561194957600080fd5b611952856115fd565b93506020850135611962816116e9565b9250604085013567ffffffffffffffff81111561191b57600080fd5b60006020828403121561199057600080fd5b5035919050565b6000602082840312156119a957600080fd5b81356107fb816116e9565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b602081526000610b4b6020830184866119b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611a6357600080fd5b815167ffffffffffffffff80821115611a7b57600080fd5b818401915084601f830112611a8f57600080fd5b815181811115611aa157611aa1611a22565b604051601f8201601f19908116603f01168101908382118183101715611ac957611ac9611a22565b81604052828152876020848701011115611ae257600080fd5b611af38360208301602088016117ad565b979650505050505050565b600060208284031215611b1057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611b5857611b58611b17565b500390565b6000816000190483118215151615611b7757611b77611b17565b500290565b600060208284031215611b8e57600080fd5b81516107fb816116e9565b600181811c90821680611bad57607f821691505b602082108103611be6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff8516815283602082015260606040820152600061054e6060830184866119b4565b601f821115611c5c57600081815260208120601f850160051c81016020861015611c395750805b601f850160051c820191505b81811015611c5857828155600101611c45565b5050505b505050565b67ffffffffffffffff831115611c7957611c79611a22565b611c8d83611c878354611b99565b83611c12565b6000601f841160018114611cc15760008515611ca95750838201355b600019600387901b1c1916600186901b178355611d1b565b600083815260209020601f19861690835b82811015611cf25786850135825560209485019460019092019101611cd2565b5086821015611d0f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528460148201528360348201528183605483013760009101605401908152949350505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b1681528660148201528560348201527fffffffff000000000000000000000000000000000000000000000000000000008560e01b16605482015282846058830137600083820160588101600081528451611df28183602089016117ad565b919091016058019a995050505050505050505056fea164736f6c634300080f000a", + "nonce": "0x7", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1359073", + "logs": [ + { + "address": "0xca5ca23502eff4254bc11ac0bec4dbb7495bd06c", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x08dda0b240a6d82a761fe843bfd8692941fd3b4494dcdf79a99c1dedb357ecf1", + "blockNumber": "0x18d7710", + "blockTimestamp": "0x6ab544a3", + "transactionHash": "0x3b38688336ec66627d2d5e1f2b9ba1433da8795de832584b9078095d912c76ff", + "transactionIndex": "0x45", + "logIndex": "0x193", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3b38688336ec66627d2d5e1f2b9ba1433da8795de832584b9078095d912c76ff", + "transactionIndex": "0x45", + "blockHash": "0x08dda0b240a6d82a761fe843bfd8692941fd3b4494dcdf79a99c1dedb357ecf1", + "blockNumber": "0x18d7710", + "gasUsed": "0x4095c7", + "effectiveGasPrice": "0x6bd8f98f", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0xca5ca23502eff4254bc11ac0bec4dbb7495bd06c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xe0e2ec", + "logs": [ + { + "address": "0x56ca4f4f5ba9b42d360b48429e8c4a60c5a0795d", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x8c6b9d500556411f8a0e216ed01f0a03fb3e7122004c775ce6715de3dcde977f", + "blockNumber": "0x18d7711", + "blockTimestamp": "0x6ab544af", + "transactionHash": "0x6952fbc7f113fe887aa916a98572225d6f9455a1d75a62c6f95c4e7c55b499a5", + "transactionIndex": "0x3f", + "logIndex": "0xfe", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000400000000000000000000000400000000000000000000000000000000000000000000008000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000", + "type": "0x2", + "transactionHash": "0x6952fbc7f113fe887aa916a98572225d6f9455a1d75a62c6f95c4e7c55b499a5", + "transactionIndex": "0x3f", + "blockHash": "0x8c6b9d500556411f8a0e216ed01f0a03fb3e7122004c775ce6715de3dcde977f", + "blockNumber": "0x18d7711", + "gasUsed": "0x25ec64", + "effectiveGasPrice": "0x786105c3", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0x56ca4f4f5ba9b42d360b48429e8c4a60c5a0795d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x526f44", + "logs": [ + { + "address": "0x94eab8f73fd83407d26c006d159923760d483029", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x5742e47b7d24091c155ba3ad8fbf4849928892d60ed958918e7cac2497b392c2", + "blockNumber": "0x18d7712", + "blockTimestamp": "0x6ab544bb", + "transactionHash": "0xf0f82ea5623d52cd4538bed4f84d378223ef8f86dc4abcbe3dfcefae3308afd4", + "transactionIndex": "0x1e", + "logIndex": "0x53", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000800000000000000000000000000000000000000400000000000000000000000000000040000000000000000000000000000000040000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf0f82ea5623d52cd4538bed4f84d378223ef8f86dc4abcbe3dfcefae3308afd4", + "transactionIndex": "0x1e", + "blockHash": "0x5742e47b7d24091c155ba3ad8fbf4849928892d60ed958918e7cac2497b392c2", + "blockNumber": "0x18d7712", + "gasUsed": "0x1a78fa", + "effectiveGasPrice": "0x79b2de16", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0x94eab8f73fd83407d26c006d159923760d483029" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1790264510035, + "chain": 1, + "commit": "9cfab5a" +} \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltProofImpls.s.sol/1/run-1790264557895.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltProofImpls.s.sol/1/run-1790264557895.json new file mode 100644 index 000000000..d00421c14 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployCobaltProofImpls.s.sol/1/run-1790264557895.json @@ -0,0 +1,59 @@ +{ + "transactions": [ + { + "hash": "0xc3f62b91e5645765dc79e54a64a75627405751260d0a7001e2bae0c808eb370f", + "transactionType": "CREATE", + "contractName": "AggregateVerifier", + "contractAddress": "0xef9ecea15265321753047ebf7d54c858d53cb94f", + "function": null, + "arguments": [ + "621", + "0x909f6cf47ed12f010A796527f562bFc26C7F4E72", + "0xd0D07924AdD740a87e41Ca8A0d4CBBf6b074EF71", + "0x1FbA0C57b07Af804A9717e51dec9CC27FBC12228", + "0xB88D95bDf6972508942d184866890c1834219B75", + "0x45c538bc396fe4a01b3f9ddc999494c3b993480ecac0a917e2f1af230d78b0e0", + "(0x25e035df08601f4b0b862be24c4bd08b1ee0524623fe737e7e8e378458ec7c21, 0x00f500229b99db6a14c508c444e4527793f2f178168847acf3f755118614568a)", + "0x1607709d90d40904f790574404e2ad614eac858f6162faa0ec34c6bf5e5f3c57", + "8453", + "600", + "30", + "(0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095, 0, 1686789347, 2)" + ], + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x529553", + "value": "0x0", + "input": "0x6102c06040523480156200001257600080fd5b506040516200514238038062005142833981016040819052620000359162000333565b82158062000041575081155b806200005757506200005482846200041e565b15155b15620000845760405163462b853960e11b8152600481018490526024810183905260440160405180910390fd5b80606001516001600160401b0316600003620000b357604051637ccf8b6960e01b815260040160405180910390fd5b63ffffffff8c16610280526001600160a01b038b1660808190526040805163f2b4e61760e01b8152905163f2b4e617916004808201926020929091908290030181865afa15801562000109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012f919062000435565b6001600160a01b0390811660a0528a811660c05289811660e05288811661012052610100889052865161014052602087810151610160526101808790526101a08690528201516101c05260408201516001600160401b039081166101e052606083015116610200526102208490526102408390528151166102a052620001b4620001e5565b620001c190602062000472565b620001ce90608e62000494565b6102605250620004c69a5050505050505050505050565b60006102405161022051620001fb9190620004af565b905090565b6001600160a01b03811681146200021657600080fd5b50565b8051620002268162000200565b919050565b6000604082840312156200023e57600080fd5b604080519081016001600160401b03811182821017156200026f57634e487b7160e01b600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b80516001600160401b03811681146200022657600080fd5b600060808284031215620002b457600080fd5b604051608081016001600160401b0381118282101715620002e557634e487b7160e01b600052604160045260246000fd5b80604052508091508251620002fa8162000200565b815260208381015190820152620003146040840162000289565b6040820152620003276060840162000289565b60608201525092915050565b6000806000806000806000806000806000806102008d8f0312156200035757600080fd5b8c5163ffffffff811681146200036c57600080fd5b9b506200037c60208e0162000219565b9a506200038c60408e0162000219565b99506200039c60608e0162000219565b9850620003ac60808e0162000219565b975060a08d01519650620003c48e60c08f016200022b565b95506101008d015194506101208d015193506101408d015192506101608d01519150620003f68e6101808f01620002a1565b90509295989b509295989b509295989b565b634e487b7160e01b600052601260045260246000fd5b60008262000430576200043062000408565b500690565b6000602082840312156200044857600080fd5b8151620004558162000200565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200048f576200048f6200045c565b500290565b60008219821115620004aa57620004aa6200045c565b500190565b600082620004c157620004c162000408565b500490565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051614a74620006ce60003960008181610b280152611d52015260008181610b9601528181611e340152612f2e015260006116060152600081816108800152818161255601528181613ca20152613cdd01526000818161065a015281816119a701528181611a0801526125770152600081816103a101528181611bbe0152611c720152600081816109d801528181611be20152611c9e015260008181610d1601528181611b0b01528181611b600152611b9301526000610970015260008181610cc201528181613e4d015261402b015260008181610a0c015261412b0152600081816109a4015261404c015260008181610abc0152818161285f0152818161335f01526140fa01526000818161045701528181613e6e0152613f72015260008181610507015281816128fd015281816132700152613f43015260008181610c3601528181610f2b0152818161106001526121440152600061093c0152600081816107de015281816117380152818161190501528181611e5c015281816122a8015281816123f9015281816124e001528181612fa701528181613078015281816131300152818161344901528181613502015281816135b901526136720152614a746000f3fe60806040526004361061038a5760003560e01c80636dc86e81116101dc578063addecc0611610102578063c26783e9116100a0578063d28cb06f1161006f578063d28cb06f14610cb0578063e41f96ad14610ce4578063f629dbb514610d04578063fa24f74314610d3857600080fd5b8063c26783e914610c24578063cf09e0d014610c58578063cfcf984b14610c79578063d1ee5e4b14610c9957600080fd5b8063b97cb80f116100dc578063b97cb80f14610b5f578063bbdc02db14610b7f578063bcef3b5514610bc0578063bdb337d114610c0057600080fd5b8063addecc0614610ade578063aef2f96e14610b16578063b74df35a14610b4a57600080fd5b80638417d3c21161017a5780639730163d116101495780639730163d14610a2e5780639840fd8414610a4457806399735e3214610a6a5780639ded395214610aaa57600080fd5b80638417d3c21461095e57806387d34f1614610992578063895dbafe146109c6578063908cb80e146109fa57600080fd5b8063786b844b116101b6578063786b844b146108cc5780637a6bc9e1146108e157806380f323a71461091457806382ff53a11461092a57600080fd5b80636dc86e811461086e57806370872aa5146108a257806374f8bf32146108b757600080fd5b806328c802cd116102c157806349edf35a1161025f5780635c0cba331161022e5780635c0cba33146107cf578063609d3334146108025780636361506d1461081757806364d121361461085757600080fd5b806349edf35a146107235780634e95eb581461074357806354fd4d501461075957806357da950e1461079f57600080fd5b806337b1b2291161029b57806337b1b2291461067c5780633fada3fd146106bc5780634224b1e7146106ee578063423161821461070157600080fd5b806328c802cd1461061c578063324a13c91461063257806335c4377b1461064857600080fd5b80631f8375741161032e578063250e69bd11610308578063250e69bd1461059157806325fc2ace146105d15780632810e1d6146105e65780632845e5bb146105fb57600080fd5b80631f837574146104f5578063200d2ed21461052957806323edb2e01461056457600080fd5b806310fbee281161036a57806310fbee28146104875780631333db2e1461049c57806319effeb4146104b35780631ee5d7c8146104e057600080fd5b80622134cc1461038f578062821de3146103e15780630183fd4414610445575b600080fd5b34801561039b57600080fd5b506103c37f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156103ed57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036074013560601c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d8565b34801561045157600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016103d8565b34801561049357600080fd5b50610479600181565b3480156104a857600080fd5b506104b1610d61565b005b3480156104bf57600080fd5b506000546103c39068010000000000000000900467ffffffffffffffff1681565b3480156104ec57600080fd5b506104206111bf565b34801561050157600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b34801561053557600080fd5b5060005461055790700100000000000000000000000000000000900460ff1681565b6040516103d891906143ee565b34801561057057600080fd5b506003546104209073ffffffffffffffffffffffffffffffffffffffff1681565b34801561059d57600080fd5b506000546105c1907201000000000000000000000000000000000000900460ff1681565b60405190151581526020016103d8565b3480156105dd57600080fd5b50600154610479565b3480156105f257600080fd5b50610557611203565b34801561060757600080fd5b506007546103c39067ffffffffffffffff1681565b34801561062857600080fd5b5061047960085481565b34801561063e57600080fd5b5061047960055481565b34801561065457600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b34801561068857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560601c610420565b3480156106c857600080fd5b506003546105c19074010000000000000000000000000000000000000000900460ff1681565b6104b16106fc366004614451565b61157b565b34801561070d57600080fd5b506107166121c6565b6040516103d89190614509565b34801561072f57600080fd5b5061047961073e366004614523565b6121e5565b34801561074f57600080fd5b5061047961010081565b34801561076557600080fd5b5060408051808201909152600581527f302e322e300000000000000000000000000000000000000000000000000000006020820152610716565b3480156107ab57600080fd5b506001546002546107ba919082565b604080519283526020830191909152016103d8565b3480156107db57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610420565b34801561080e57600080fd5b50610716612275565b34801561082357600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360340135610479565b34801561086357600080fd5b506103c36201518081565b34801561087a57600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ae57600080fd5b50600254610479565b3480156108c357600080fd5b5061042061229a565b3480156108d857600080fd5b506104b16122a6565b3480156108ed57600080fd5b506003546105c1907501000000000000000000000000000000000000000000900460ff1681565b34801561092057600080fd5b5061047960045481565b34801561093657600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b34801561096a57600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b34801561099e57600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d257600080fd5b506103c37f000000000000000000000000000000000000000000000000000000000000000081565b348015610a0657600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b348015610a3a57600080fd5b50610479611fff81565b348015610a5057600080fd5b5061042071f90827f1c53a10cb7a02335b17532000293581565b348015610a7657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360540135610479565b348015610ab657600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b348015610aea57600080fd5b50600754610b049068010000000000000000900460ff1681565b60405160ff90911681526020016103d8565b348015610b2257600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b348015610b5657600080fd5b5061047961254f565b348015610b6b57600080fd5b506104b1610b7a36600461453c565b61259b565b348015610b8b57600080fd5b5060405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103d8565b348015610bcc57600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360140135610479565b348015610c0c57600080fd5b506007544267ffffffffffffffff90911611156105c1565b348015610c3057600080fd5b506104207f000000000000000000000000000000000000000000000000000000000000000081565b348015610c6457600080fd5b506000546103c39067ffffffffffffffff1681565b348015610c8557600080fd5b506104b1610c94366004614451565b612986565b348015610ca557600080fd5b506103c36206978081565b348015610cbc57600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b348015610cf057600080fd5b506104b1610cff36600461453c565b612b47565b348015610d1057600080fd5b506104797f000000000000000000000000000000000000000000000000000000000000000081565b348015610d4457600080fd5b50610d4d612f27565b6040516103d89392919061458d565b905090565b600268929eee149b4bd212685403610d815763ab143c066000526004601cfd5b600268929eee149b4bd21268556003547501000000000000000000000000000000000000000000900460ff1615610de4576040517f17bfe5f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075467ffffffffffffffff90811614610e595760005468010000000000000000900467ffffffffffffffff1667ffffffffffffffff16600003610e54576040517fc105260a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb6565b60005467ffffffffffffffff16610e7390621275006145ea565b67ffffffffffffffff16421015610eb6576040517f04643c3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035474010000000000000000000000000000000000000000900460ff16610fce57600354600480546040517f7eee288d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169281019290925260248201527f000000000000000000000000000000000000000000000000000000000000000090911690637eee288d90604401600060405180830381600087803b158015610f7157600080fd5b505af1158015610f85573d6000803e3d6000fd5b5050600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055506111b09050565b6003805475010000000000000000000000000000000000000000007fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff821617909155600480546040517ff3fef3a300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169281019290925260248201527f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b50506003546004546040516000945073ffffffffffffffffffffffffffffffffffffffff9092169250908381818185875af1925050503d806000811461111c576040519150601f19603f3d011682016040523d82523d6000602084013e611121565b606091505b505090508061115c576040517f83e6cc6b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460045460405190815273ffffffffffffffffffffffffffffffffffffffff909116907f87e12c2565042763daa6bf5842ed2b6447f17f7e28f9a4905fe3959581396ead9060200160405180910390a2505b600168929eee149b4bd2126855565b6000600681805b60018111156111d7576111d76143bf565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff16919050565b600080600054700100000000000000000000000000000000900460ff166002811115611231576112316143bf565b14611268576040517ff1a9458100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611272612f8e565b90506000816002811115611288576112886143bf565b036112bf576040517f92c506ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018160028111156112d3576112d36143bf565b0361131857600080547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff167001000000000000000000000000000000001790556114cc565b611320613223565b15611344575050600054700100000000000000000000000000000000900460ff1690565b6007544267ffffffffffffffff909116111561138c576040517f04643c3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075460016801000000000000000090910460ff1610156113d9576040517f344de4bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005541561149057600080547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff167001000000000000000000000000000000001781556001905260066020527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3154600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556114cc565b600080547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff167002000000000000000000000000000000001790555b600080547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217908190556040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da60916115549170010000000000000000000000000000000090910460ff16906143ee565b60405180910390a15050600054700100000000000000000000000000000000900460ff1690565b60005471010000000000000000000000000000000000900460ff16156115cd576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602060016115dd8483614616565b6115e7919061462e565b6115f19190614674565b6115fc906020614688565b905060008161162c7f00000000000000000000000000000000000000000000000000000000000000006040614616565b6116369190614616565b905080361461164d57639824bdab6000526004601cfd5b611684367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036014013590565b90565b61169b600161169161254f565b61073e919061462e565b14611721576116ad600161169161254f565b6116e1367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036014013590565b6040517ff33fa6cf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036074013560601c1461190357367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036074013560601c6117c881613401565b6117fe576040517f346119f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528061187b8373ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168191906146c5565b81526020018273ffffffffffffffffffffffffffffffffffffffff166399735e326040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ef91906146c5565b90528051600155602001516002555061199e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663664ed8306040518163ffffffff1660e01b81526004016040805180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199191906146de565b8051600155602001516002555b6002546119cc907f000000000000000000000000000000000000000000000000000000000000000090614616565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036054013514611a9657600254611a2d907f000000000000000000000000000000000000000000000000000000000000000090614616565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003605401356040517f087b2d7600000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401611718565b600080547fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff1671010000000000000000000000000000000000178155611b0760547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b90507f0000000000000000000000000000000000000000000000000000000000000000811015611b8c576040517fa70efcf7000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401611718565b6000611bb87f00000000000000000000000000000000000000000000000000000000000000008361462e565b905060007f0000000000000000000000000000000000000000000000000000000000000000611c0f7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff614754565b611c19919061477d565b67ffffffffffffffff16905080821115611c62576040517fa1d6b34700000000000000000000000000000000000000000000000000000000815260048101849052602401611718565b6000611c9867ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684614688565b611cc2907f00000000000000000000000000000000000000000000000000000000000000006145ea565b9050428167ffffffffffffffff161115611d1a576040517f3680a67800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152426024820152604401611718565b6040517fa2e62b5a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a2e62b5a90602401602060405180830381865afa158015611dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd291906146c5565b600855600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff16179055604080517f3c9f397c00000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000063ffffffff16917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691633c9f397c916004808201926020929091908290030181865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee191906147a4565b600080547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1663ffffffff92909216929092147201000000000000000000000000000000000000021781556007805467ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905588888281611f7057611f706147ca565b919091013560f81c90506001811115611f8b57611f8b6143bf565b90506000611f9d602160018b8d6147f9565b611fa691614823565b90506000611fb8604160218c8e6147f9565b611fc191614823565b9050611fcd8282613770565b612084611fdd8b6041818f6147f9565b85367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560601c60015487905b600254612049367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036014013590565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036054013561207f6121c6565b6139c8565b6120bb83367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560601c613a9a565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033560601c179055346004818155604080517fd0e30db000000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169363d0e30db093909280820192600092909182900301818588803b1580156121a057600080fd5b505af11580156121b4573d6000803e3d6000fd5b50505050505050505050505050505050565b6060610d5c60886121d561254f565b6121e0906020614688565b613ba4565b60006121ef61254f565b8210612227576040517fa6c661fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61226f612235836020614688565b612240906088614616565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003013590565b92915050565b6060610d5c605461228461254f565b61228f906020614688565b6121e0906034614616565b600060068160016111c6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612335919061485f565b1561236c576040517f379a7ed900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005468010000000000000000900467ffffffffffffffff1667ffffffffffffffff166000036123c8576040517fc105260a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0314d2b30000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630314d2b390602401602060405180830381865afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612479919061485f565b9050806124b2576040517f4851bd9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f17cf21a90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906317cf21a990602401600060405180830381600087803b15801561253957600080fd5b505af192505050801561254a575060015b505b50565b6000610d5c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614674565b60008054700100000000000000000000000000000000900460ff1660028111156125c7576125c76143bf565b146125fe576040517ff1a9458100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084846000818110612613576126136147ca565b919091013560f81c9050600181111561262e5761262e6143bf565b90506000600681836001811115612647576126476143bf565b6001811115612658576126586143bf565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff16036126b857806040517f25822d380000000000000000000000000000000000000000000000000000000081526004016117189190614881565b600554156127705760016005546126cf919061462e565b8314612707576040517fa6c661fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710836121e5565b821461272057816116e1846121e5565b6001816001811115612734576127346143bf565b1461276b576040517f69ed70ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61277a565b61277a8383613bf6565b600080600061278886613c77565b9194509250905061280061279f886001818c6147f9565b86336127d5367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036034013590565b88888c898e6040516020016127ec91815260200190565b6040516020818303038152906040526139c8565b61280984613d10565b604080518781526020810187905233917f5a8d9d181e6a59fe5477a50721401b6332a810b9183e15ac62d386379a05a717910160405180910390a26001846001811115612858576128586143bf565b036128e2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ece20f366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128c557600080fd5b505af11580156128d9573d6000803e3d6000fd5b5050505061297c565b60008460018111156128f6576128f66143bf565b0361297c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ece20f366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561296357600080fd5b505af1158015612977573d6000803e3d6000fd5b505050505b5050505050505050565b60008054700100000000000000000000000000000000900460ff1660028111156129b2576129b26143bf565b146129e9576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007544267ffffffffffffffff90911611612a30576040517fdf469ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082826000818110612a4557612a456147ca565b919091013560f81c90506001811115612a6057612a606143bf565b90506000600681836001811115612a7957612a796143bf565b6001811115612a8a57612a8a6143bf565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1614612aea57806040517f7141297a0000000000000000000000000000000000000000000000000000000081526004016117189190614881565b612b38612afa83600181876147f9565b8333612b30367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036034013590565b600154612012565b612b428133613a9a565b505050565b60008054700100000000000000000000000000000000900460ff166002811115612b7357612b736143bf565b14612baa576040517ff1a9458100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bb330613401565b612be9576040517f57e25a0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001612bf3612f8e565b6002811115612c0457612c046143bf565b03612c3b576040517f346119f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85473ffffffffffffffffffffffffffffffffffffffff16612cb55760006040517f25822d380000000000000000000000000000000000000000000000000000000081526004016117189190614881565b600160005260066020527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a315473ffffffffffffffffffffffffffffffffffffffff1615612d315760016040517f7141297a0000000000000000000000000000000000000000000000000000000081526004016117189190614881565b600084846000818110612d4657612d466147ca565b919091013560f81c90506001811115612d6157612d616143bf565b90506001816001811115612d7757612d776143bf565b14612dae576040517f69ed70ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612db88383613bf6565b6000806000612dc686613c77565b91945092509050612ddd61279f886001818c6147f9565b3360066000866001811115612df457612df46143bf565b6001811115612e0557612e056143bf565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760088282829054906101000a900460ff16612e709190614895565b92506101000a81548160ff021916908360ff1602179055506206978067ffffffffffffffff1642612ea19190614616565b600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055612ee5866001614616565b60055560405186815233907f7a180232c19fd38c83e493856a42688c477bae7e82039103b2c1ea6a6162e5299060200160405180910390a25050505050505050565b60008060607f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360140135612f83612275565b925092509250909192565b600073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036074013560601c1461321d576000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036074013560601c6040517f34a346ea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906334a346ea90602401602060405180830381865afa1580156130c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e5919061485f565b8061319b57506040517f5958a19300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690635958a19390602401602060405180830381865afa158015613177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319b919061485f565b156131a857600191505090565b8073ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321791906148ba565b91505090565b50600290565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85473ffffffffffffffffffffffffffffffffffffffff16158015906132fd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9df65eb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fd919061485f565b156133125761330c6000613d10565b50600190565b600160005260066020527f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a315473ffffffffffffffffffffffffffffffffffffffff16158015906133ec57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9df65eb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ec919061485f565b156133fb5761330c6001613d10565b50600090565b6040517fee658e4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ee658e4590602401602060405180830381865afa158015613492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b6919061485f565b801561356d57506040517f04e50fed00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f000000000000000000000000000000000000000000000000000000000000000016906304e50fed90602401602060405180830381865afa158015613549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356d919061485f565b801561362657506040517f34a346ea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f000000000000000000000000000000000000000000000000000000000000000016906334a346ea90602401602060405180830381865afa158015613600573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613624919061485f565b155b80156136df57506040517f5958a19300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f00000000000000000000000000000000000000000000000000000000000000001690635958a19390602401602060405180830381865afa1580156136b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136dd919061485f565b155b801561226f575060018273ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613733573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375791906148ba565b6002811115613768576137686143bf565b141592915050565b4381106137b2576040517f25bfb0a400000000000000000000000000000000000000000000000000000000815260048101829052436024820152604401611718565b6000806137bf834361462e565b905061010081116137d3578240915061393f565b611fff81116139045760008071f90827f1c53a10cb7a02335b17532000293573ffffffffffffffffffffffffffffffffffffffff168560405160200161381b91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613853916148db565b600060405180830381855afa9150503d806000811461388e576040519150601f19603f3d011682016040523d82523d6000602084013e613893565b606091505b50915091508115806138a757508051602014155b156138e7576040517f0f0b8f8100000000000000000000000000000000000000000000000000000000815260048101869052436024820152604401611718565b808060200190518101906138fb91906146c5565b9350505061393f565b6040517f0f0b8f8100000000000000000000000000000000000000000000000000000000815260048101849052436024820152604401611718565b8161397f576040517f0f0b8f8100000000000000000000000000000000000000000000000000000000815260048101849052436024820152604401611718565b8382146139c2576040517f80b1ae510000000000000000000000000000000000000000000000000000000081526004810185905260248101839052604401611718565b50505050565b6001891015613a03576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000886001811115613a1757613a176143bf565b03613a3257613a2d8a8a89898989898989613e42565b613a8e565b6001886001811115613a4657613a466143bf565b03613a5c57613a2d8a8a89898989898989614020565b6040517f69ed70ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050565b8060066000846001811115613ab157613ab16143bf565b6001811115613ac257613ac26143bf565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760088282829054906101000a900460ff16613b2d9190614895565b92506101000a81548160ff021916908360ff160217905550613b4d6141cc565b816001811115613b5f57613b5f6143bf565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f62f393acfb3d3425116fe9be7a6509a4b652bda54fdac2df2b7273135ecd58e790600090a35050565b604051818152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90038284820160208401378260208301016000815260208101604052505092915050565b613bfe61254f565b8210613c36576040517fa6c661fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80613c40836121e5565b0361254a576040517fbbcafae600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080808415613c9557613c9061073e60018761462e565b613c99565b6001545b90506000613cc77f000000000000000000000000000000000000000000000000000000000000000087614688565b600254613cd49190614616565b90506000613d027f0000000000000000000000000000000000000000000000000000000000000000836145ea565b929791965091945092505050565b60066000826001811115613d2657613d266143bf565b6001811115613d3757613d376143bf565b8152602081019190915260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556001816001811115613d8157613d816143bf565b03613d8c5760006005555b60075468010000000000000000900460ff16600003613dd7576040517f344de4bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff6801000000000000000080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff90911617905561254c6142b4565b6000878787878787877f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600854604051602001613ea99a999897969594939291906148f7565b6040516020818303038152906040528051906020012090506000888b8b604051602001613ed8939291906149a5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527fab750e75000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ab750e7590613f9c9084907f00000000000000000000000000000000000000000000000000000000000000009087906004016149e4565b602060405180830381865afa158015613fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdd919061485f565b614013576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b6000878787878787877f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006008546040516020016140879a999897969594939291906148f7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020909101207fab750e75000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ab750e7590614155908d908d907f0000000000000000000000000000000000000000000000000000000000000000908790600401614a09565b602060405180830381865afa158015614172573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614196919061485f565b613a8e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006141d661436c565b90507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000167ffffffffffffffff82160161423e5750600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff179055565b600061424a82426145ea565b6007549091506142779067ffffffffffffffff808416911667ffffffffffffffff16808218908211021890565b600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555050565b60006142be61436c565b90507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000167ffffffffffffffff8216016143265750600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff179055565b61433081426145ea565b600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9290921691909117905550565b60075460009060026801000000000000000090910460ff161061439157506201518090565b60075468010000000000000000900460ff166001036143b257506206978090565b5067ffffffffffffffff90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310614402576144026143bf565b91905290565b60008083601f84011261441a57600080fd5b50813567ffffffffffffffff81111561443257600080fd5b60208301915083602082850101111561444a57600080fd5b9250929050565b6000806020838503121561446457600080fd5b823567ffffffffffffffff81111561447b57600080fd5b61448785828601614408565b90969095509350505050565b60005b838110156144ae578181015183820152602001614496565b838111156139c25750506000910152565b600081518084526144d7816020860160208601614493565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061451c60208301846144bf565b9392505050565b60006020828403121561453557600080fd5b5035919050565b6000806000806060858703121561455257600080fd5b843567ffffffffffffffff81111561456957600080fd5b61457587828801614408565b90989097506020870135966040013595509350505050565b63ffffffff841681528260208201526060604082015260006145b260608301846144bf565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851680830382111561460d5761460d6145bb565b01949350505050565b60008219821115614629576146296145bb565b500190565b600082821015614640576146406145bb565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261468357614683614645565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146c0576146c06145bb565b500290565b6000602082840312156146d757600080fd5b5051919050565b6000604082840312156146f057600080fd5b6040516040810181811067ffffffffffffffff8211171561473a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b600067ffffffffffffffff83811690831681811015614775576147756145bb565b039392505050565b600067ffffffffffffffff8084168061479857614798614645565b92169190910492915050565b6000602082840312156147b657600080fd5b815163ffffffff8116811461451c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000808585111561480957600080fd5b8386111561481657600080fd5b5050820193919092039150565b8035602083101561226f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561487157600080fd5b8151801515811461451c57600080fd5b6020810160028310614402576144026143bf565b600060ff821660ff84168060ff038211156148b2576148b26145bb565b019392505050565b6000602082840312156148cc57600080fd5b81516003811061451c57600080fd5b600082516148ed818460208701614493565b9190910192915050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008b60601b16815289601482015288603482015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b16605484015288605c840152808860c01b16607c84015250855161497e816084850160208a01614493565b608492019182019490945260a481019290925260c482015260e40198975050505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b168152818360148301376000910160140190815292915050565b6060815260006149f760608301866144bf565b60208301949094525060400152919050565b6060815283606082015283856080830137600060808583010152600060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f87011683010190508360208301528260408301529594505050505056fea164736f6c634300080f000a000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000909f6cf47ed12f010a796527f562bfc26c7f4e72000000000000000000000000d0d07924add740a87e41ca8a0d4cbbf6b074ef710000000000000000000000001fba0c57b07af804a9717e51dec9cc27fbc12228000000000000000000000000b88d95bdf6972508942d184866890c1834219b7545c538bc396fe4a01b3f9ddc999494c3b993480ecac0a917e2f1af230d78b0e025e035df08601f4b0b862be24c4bd08b1ee0524623fe737e7e8e378458ec7c2100f500229b99db6a14c508c444e4527793f2f178168847acf3f755118614568a1607709d90d40904f790574404e2ad614eac858f6162faa0ec34c6bf5e5f3c5700000000000000000000000000000000000000000000000000000000000021050000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000007480afc8d99a5c645c247db5a1e4a4f440e6e095000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000648a5ce30000000000000000000000000000000000000000000000000000000000000002", + "nonce": "0x8", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x189bcfd", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc3f62b91e5645765dc79e54a64a75627405751260d0a7001e2bae0c808eb370f", + "transactionIndex": "0xa2", + "blockHash": "0x770de7cfd8bebd96d0454a851413588d6ff0a58acf59aa2be8f5739188ad7495", + "blockNumber": "0x18d7716", + "gasUsed": "0x3f868f", + "effectiveGasPrice": "0x675f7dd9", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0xef9ecea15265321753047ebf7d54c858d53cb94f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1790264557895, + "chain": 1, + "commit": "9cfab5a" +} \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployNitroValidatorStack.s.sol/1/run-1790264629089.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployNitroValidatorStack.s.sol/1/run-1790264629089.json new file mode 100644 index 000000000..93b05eb93 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployNitroValidatorStack.s.sol/1/run-1790264629089.json @@ -0,0 +1,154 @@ +{ + "transactions": [ + { + "hash": "0x501ee94e5c926d1fc39990cb60e5b7d43bf5d1329273550ea566c92389f80cc1", + "transactionType": "CREATE", + "contractName": "P384Verifier", + "contractAddress": "0xe0aa6868e14300355001130c6dc29f2f4467d86c", + "function": null, + "arguments": null, + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x223ba7", + "value": "0x0", + "input": "0x6080604052348015600e575f80fd5b50611e4a8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063ee974d151461002d575b5f80fd5b61004061003b366004611bcf565b610054565b604051901515815260200160405180910390f35b5f610069610060610072565b8686868661018d565b95945050505050565b6100b26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604080516101408101909152603060e082018181528291611dae6101008401398152602001604051806060016040528060308152602001611cee603091398152602001604051806060016040528060308152602001611d7e603091398152602001604051806060016040528060308152602001611d1e603091398152602001604051806060016040528060308152602001611e0e603091398152602001604051806060016040528060308152602001611dde603091398152602001604051806060016040528060308152602001611d4e603091399052919050565b5f8061019e8787878787600161021c565b845191935091508114610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f756e7573656420696e76657273652068696e747300000000000000000000000060448201526064015b60405180910390fd5b5095945050505050565b5f8061024560405180608001604052805f81526020015f81526020015f81526020015f81525090565b61024e876104dd565b6020830152815261025e866104dd565b6060830152604080830191909152805160e0810190915289515f919081906102859061058d565b81526020016102978c6020015161058d565b81526020016102a98c6040015161058d565b81526020016102bb8c6060015161058d565b81526020016102cd8c6080015161058d565b81526020016102df8c60a0015161058d565b81526020016102f18c60c0015161058d565b905290505f8561030d576103088260800151610621565b61031b565b61031b826080015188610712565b835160208101519051919250159015168061034657505f610343845f01518460a00151610743565b12155b80610363575061036383602001515f602082015191511591141690565b8061037e57505f61037c84602001518460c00151610743565b135b1561039c575f610390826104c0015190565b945094505050506104d2565b6103bd818360800151845f01518560200151876040015188606001516107e9565b6103ce575f610390826104c0015190565b8951603081101561041157604080516030808252606082019092525f916020820181803683375091925061040e91505060208d01838303605001846108bf565b9a505b505f61042f826104208d61058d565b86602001518660a001516108cd565b90505f61044983865f015187602001518760a001516108cd565b90505f61045660036109dd565b90505f61048085876080015184895f01518a604001518b606001518d604001518e606001516109fd565b905061049885876080015184895f0151858989610be6565b508094505050506104ae83838660a00151610dd4565b84516020808201519084015191518451149114166104c08401519650965050505050505b965096945050505050565b5f80825160601461054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f553338343a206e6f7420373638000000000000000000000000000000000000006044820152606401610209565b604080516080810182529250820190505f825260208301516010830152603083015160208301525f81526050830151601082015260608301516020820152915091565b5f81516030146105f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f553338343a206e6f7420333834000000000000000000000000000000000000006044820152606401610209565b6040805180820190915290505f81526020820151601082015260308201516020820152919050565b5f61063461050060408051918201905290565b905061066a8261064460026109dd565b602082810151908201518103610420860181905291519251911191900303610400830152565b6060610120820152602061014082018190526040610160830181905260016101e0840152835161020084015283820180516102208501526102408401829052610260840192909252610280830181905283516103008401528151610320840152610360830181905261038083018190526103a0830152915161044082015290516104608201525f61048082018190526104a082018190526104c082018190526104e082015290565b5f61071c83610621565b6020830161048082015291516104a0830152505f6104c082015260016104e0820152919050565b815181515f91908082111561075d576001925050506107e3565b8082101561078f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925050506107e3565b505060208381015190830151808211156107ae576001925050506107e3565b808210156107e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925050506107e3565b50505b92915050565b602082015182515f91159015168061080a57505f6108078488610743565b12155b8061081c575060208201518251159015165b8061083057505f61082d8388610743565b12155b1561083c57505f6108b5565b5f61084988846002610e20565b90505f61085889866003610e20565b60208801518851919250159015166108825761087f816108798b888b610e65565b8a610f56565b90505b602086015186511590151661089f5761089c81878a610f56565b90505b6020818101519083015191519251911491141690505b9695505050505050565b8082828560045afa50505050565b5f6108d9858484610fb8565b905061099e8482876060018251602093840151835193850151608081811c6fffffffffffffffffffffffffffffffff80851682810294821695841c86810287830280871c820188810180891b9287169290920160408d01528c8402878c02958e0297909402998b02988210921191909101861b90861c018601878101858101958610981196119590950195909501831b82841c01850184810180851b939092169290920198870198909852959093029086109190941001811b93901c92909201019052565b60608552602085602001526040856040015260018560c0015281518560e0015260208201518561010001526040816101208760055afa50949350505050565b5f6109ee6040808051918201905290565b5f815260208101929092525090565b610a05611a8e565b610a0e836110e3565b610a17836110e3565b6020808401519081019190915252610a2e856110e3565b610a37856110e3565b6101008301516020810191909152525f5b6008811015610bd9575f5b6008811015610bd057600281830110610bc857600382901b81178215610b1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830160031b8217610adf8d8d8d8d898660408110610ab457610ab4611c88565b6020020151518a8760408110610acc57610acc611c88565b6020020151600160200201518f8f611109565b868460408110610af157610af1611c88565b6020020151878560408110610b0857610b08611c88565b6020020151600160200201919091525250610bc6565b600383901b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830117610b8b8d8d8d8d898660408110610b6057610b60611c88565b6020020151518a8760408110610b7857610b78611c88565b6020020151600160200201518d8d611109565b868460408110610b9d57610b9d611c88565b6020020151878560408110610bb457610bb4611c88565b60200201516001602002019190915252505b505b600101610a53565b50600101610a48565b5098975050505050505050565b815181515f918291829190610bff8c8c8c8c8780611232565b9095509350690ffffffffffffffffff860b483901c1660b782901c1792508215610c6d57610c678c8c8c8c8c8860408110610c3c57610c3c611c88565b6020020151518d8960408110610c5457610c54611c88565b6020020151600160200201518b8b611109565b90955093505b60045b60b88111610d0257610c868d8d8d8d8a8a6112f0565b80965081975050508060b80382901c60071660038260b80385901c600716901b179350835f14610cfa57610cf48d8d8d8d8d8960408110610cc957610cc9611c88565b6020020151518e8a60408110610ce157610ce1611c88565b6020020151600160200201518c8c611109565b90965094505b600301610c70565b50505060208581015190850151610d1d8c8c8c8c8989611232565b9095509350600860fc83901c1660ff82901c1792508215610d5757610d518c8c8c8c8c8860408110610c3c57610c3c611c88565b90955093505b60045b6101008111610dc457610d718d8d8d8d8a8a6112f0565b8096508197505050806101000382901c6007166003826101000385901c600716901b179350835f14610dbc57610db68d8d8d8d8d8960408110610cc957610cc9611c88565b90965094505b600301610d5a565b5050505097509795505050505050565b604083526020836020015260408360400152815183606001526020820151836080015260018360a0015280518360c0015260208101518360e001526040826101008560055afa50505050565b5f610e316040808051918201905290565b9050610240840193508251846060015260208301518460800152818460a001526040816101008660055afa505b9392505050565b5f610e766040808051918201905290565b9050610f3c838361018087018251602093840151835193850151608081811c6fffffffffffffffffffffffffffffffff80851682810294821695841c86810287830280871c820188810180891b9287169290920160408d01528c8402878c02958e0297909402998b02988210921191909101861b90861c018601878101858101958610981196119590950195909501831b82841c01850184810180851b939092169290920198870198909852959093029086109190941001811b93901c92909201019052565b610120840193506040816101208660055afa509392505050565b5f610f676040808051918201905290565b6020858101518582015181019183018290528551875101911001815290505f610f908284610743565b12610e5e57602080820180519184015182039081905283518351929091119103038152610e5e565b5f610fc5846104e0015190565b1561105e57610fd3846114cc565b90505f610fe285858486611585565b60208101518151919250600114901516611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f62616420696e76657273652068696e74000000000000000000000000000000006044820152606401610209565b50610e5e565b506040805180820190915261109b8261107760026109dd565b60208281015190820151810360c089018190529151925191119190030360a0860152565b604084526040846020015260408460400152825184606001526020830151846080015281518460e0015260208201518461010001526040816101208660055afa509392505050565b5f6110f46040808051918201905290565b90508151815260208201516020820152919050565b5f80851580611116575083155b1561116e5785158015611127575083155b1561113657505f905080611225565b851561115357611145866110e3565b61114e866110e3565b611165565b61115c846110e3565b611165846110e3565b91509150611225565b602084810151908701518551885114911416156111b457602083810151908601518451875114911416156111aa576111658a8a8a8a8a8a611232565b505f905080611225565b5f6111c086858c61165b565b90505f6111ce88878d61165b565b90506111db8c83836116db565b6111e78c836002610e20565b93506111f484898d6117c6565b6111ff84878d6117c6565b61120a88858d61165b565b92506112178c8484611841565b61122283888d6117c6565b50505b9850989650505050505050565b5f80835f0361124557505f9050806104d2565b60208301518351159015161561125f57505f9050806104d2565b5f61126c89866002610e20565b9050611279898289611841565b61128481878a61191d565b5f61128f858a611972565b905061129c8a83836116db565b6112a88a836002610e20565b93506112b584878b6117c6565b6112c084878b6117c6565b6112cb86858b61165b565b92506112d88a8484611841565b6112e383868b6117c6565b5050965096945050505050565b5f80835f0361130357505f9050806104d2565b60208301518351159015161561131d57505f9050806104d2565b5f61132a89866002610e20565b9050611337898289611841565b61134281878a61191d565b5f61134d858a611972565b905061135a8a83836116db565b6113668a836002610e20565b935061137384878b6117c6565b61137e84878b6117c6565b61138986858b61165b565b92506113968a8484611841565b6113a183868b6117c6565b6020830151835115901516156113be575f809350935050506104d2565b6113cb8a838660026119d2565b6113d68a838a611841565b6113e182888b61191d565b6113ec81848b611a02565b6113f78a83836116db565b6114048a878460026119d2565b61140f86858b6117c6565b61141a86858b6117c6565b6114268585888c611a21565b6114318a8684611841565b61143c85848b6117c6565b602085015185511590151615611459575f809350935050506104d2565b6114668a838860026119d2565b6114718a838a611841565b61147c82888b61191d565b61148781868b611a02565b6114928a83836116db565b61149f8a858460026119d2565b6114aa84878b6117c6565b6114b584878b6117c6565b6114c18387868c611a21565b6112d88a8484611841565b6104c08101516104a08201515f9190806114e7836030611cb5565b111561154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76657273652068696e7420756e646572666c6f77000000000000000000006044820152606401610209565b50604080518082019091526104808401518201805160801c825260100151602082015260309091016104c0909301929092525090565b5f6115966040808051918201905290565b905061099e8484876060018251602093840151835193850151608081811c6fffffffffffffffffffffffffffffffff80851682810294821695841c86810287830280871c820188810180891b9287169290920160408d01528c8402878c02958e0297909402998b02988210921191909101861b90861c018601878101858101958610981196119590950195909501831b82841c01850184810180851b939092169290920198870198909852959093029086109190941001811b93901c92909201019052565b5f61166c6040808051918201905290565b90505f6116798585610743565b126116a25760208085015181850151810391830182905284518651929091109103038152610e5e565b60208481015183820151810183830181815285518851019282109290920180855292860151810391829052855191119103038152610e5e565b826116e8816104e0015190565b15611790575f6116f7856114cc565b90505f611705868584610e65565b6020810151815191925060011490151661177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f62616420696e76657273652068696e74000000000000000000000000000000006044820152606401610209565b815184526020820151602085015250506117b5565b6103608401935081518460600152602082015184608001526040826101208660055afa505b6117c0818484611841565b50505050565b5f6117d18484610743565b126117fd575060208281018051918301518203908190529151835191909211919003039052565b505050565b61181f8382602082810180519183015182019081905291518351019110019052565b5060208281018051918301518203908190529151835191909211919003039052565b611905828261018086018251602093840151835193850151608081811c6fffffffffffffffffffffffffffffffff80851682810294821695841c86810287830280871c820188810180891b9287169290920160408d01528c8402878c02958e0297909402998b02988210921191909101861b90861c018601878101858101958610981196119590950195909501831b82841c01850184810180851b939092169290920198870198909852959093029086109190941001811b93901c92909201019052565b610120830192506040826101208560055afa50505050565b61193f8383602082810180519183015182019081905291518351019110019052565b5f61194a8483610743565b126117f857602080840180519183015182039081905282518551929091119103038352505050565b5f6119836040808051918201905290565b6020808501518551600190811b60ff83901c1784521b9082015290505f6119aa8284610743565b126107e3576020808201805191840151820390819052835183519290911191030381526107e3565b610240840193508151846060015260208201518460800152808460a001526040836101008660055afa5050505050565b6020808301518351600190811b60ff83901c1786521b9084015261193f565b5f611a2c8484610743565b12611a5557602080840151818401518103918601829052835185519290911091030384526117c0565b602083810151828201518101868301818152845187510192821092909201808852928501518103918290528451911191030384526117c0565b6040518061080001604052806040905b611aa6611abc565b815260200190600190039081611a9e5790505090565b60405180604001604052806002906020820280368337509192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112611b16575f80fd5b813567ffffffffffffffff811115611b3057611b30611ada565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611b9c57611b9c611ada565b604052818152838201602001851015611bb3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611be2575f80fd5b843567ffffffffffffffff811115611bf8575f80fd5b611c0487828801611b07565b945050602085013567ffffffffffffffff811115611c20575f80fd5b611c2c87828801611b07565b935050604085013567ffffffffffffffff811115611c48575f80fd5b611c5487828801611b07565b925050606085013567ffffffffffffffff811115611c70575f80fd5b611c7c87828801611b07565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156107e3577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfeb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5fffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffcffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffffa164736f6c634300081a000a", + "nonce": "0x9", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd346098c90c6d5c82b751061559cec4761d06ea03fbbdea4f38285f7f4ce8eae", + "transactionType": "CREATE", + "contractName": "CertManager", + "contractAddress": "0x7227d8c477cd0a9ec1446a19b1fcf940ba3fba17", + "function": null, + "arguments": [ + "0xe0aa6868e14300355001130C6DC29f2f4467D86c", + "0x9855054731540A48b28990B63DcF4f33d8AE46A1", + "0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04" + ], + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x6a444d", + "value": "0x0", + "input": "0x60a060405234801561000f575f80fd5b506040516161ca3803806161ca83398101604081905261002e9161027c565b6001600160a01b0383166100885760405162461bcd60e51b815260206004820152601560248201527f6d697373696e6720503338342076657269666965720000000000000000000000604482015260640160405180910390fd5b6001600160a01b0382166100af576040516349e27cff60e01b815260040160405180910390fd5b6001600160a01b0381166100d657604051632c8c06e360e11b815260040160405180910390fd5b6001600160a01b038381166080908152600480546001600160a01b03199081168685161790915560058054909116928416929092179091556040805160a081018252600181526396258ff56020808301919091525f19828401527f3c3e2e5f1dd14dee5db88341ba71521e939afdb7881aa24c9f1e1c007a2fa8b660608084019190915283518086019094528084526101a0947f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f185949084019290919061616a908301399052610212565b6040516001600160a01b038316905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36040516001600160a01b038216905f907f99f8e0b3045f0b2f05192da79e25a5564759735adfee8dd3a642ba1093a7c936908290a3505050610463565b805160208083015160408085015160608601516080870151925161023b969592939192016102c6565b60408051601f198184030181529181525f8481526020819052209061026090826103a9565b505050565b6001600160a01b0381168114610279575f80fd5b50565b5f805f6060848603121561028e575f80fd5b835161029981610265565b60208501519093506102aa81610265565b60408501519092506102bb81610265565b809150509250925092565b85151560f81b815260c085811b6001600160c01b031916600183015284901b60098201526011810183905281515f908060208501603185015e5f92016031019182525095945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061033a57607f821691505b60208210810361035857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561026057805f5260205f20601f840160051c810160208510156103835750805b601f840160051c820191505b818110156103a2575f815560010161038f565b5050505050565b81516001600160401b038111156103c2576103c2610312565b6103d6816103d08454610326565b8461035e565b6020601f821160018114610408575f83156103f15750848201515b5f19600385901b1c1916600184901b1784556103a2565b5f84815260208120601f198516915b828110156104375787850151825560209485019460019092019101610417565b508482101561045457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608051615ce86104825f395f818161030e01526120530152615ce85ff3fe608060405234801561000f575f80fd5b50600436106101b0575f3560e01c80638cb50c44116100f3578063ab68988d11610093578063af9bdbc21161006e578063af9bdbc21461048b578063c59e43e5146104b2578063f2fde38b146104c5578063f69a82fe146104d8575f80fd5b8063ab68988d1461043c578063ad1fd8bd14610451578063aeb255ea14610464575f80fd5b80639083dd9d116100ce5780639083dd9d146103e85780639c3256ed146103fb5780639ce4db621461040e5780639ecc005014610421575f80fd5b80638cb50c441461038e5780638da5cb5b146103a15780638fb57b62146103c1575f80fd5b80634294857f1161015e5780634e33f7ca116101395780634e33f7ca1461030957806358e3139e146103305780635ab709041461035457806377f2dd741461037b575f80fd5b80634294857f14610299578063441b31df146102bb5780634519a352146102e2575f80fd5b806328c546371161018e57806328c5463714610202578063328a93e81461022257806335dec5d114610254575f80fd5b8063031cf067146101b45780630890702c146101da5780632075ae04146101ed575b5f80fd5b6101c76101c23660046153a3565b6104ff565b6040519081526020015b60405180910390f35b6101c76101e8366004615410565b610525565b6102006101fb366004615452565b610558565b005b610215610210366004615410565b6105d7565b6040516101d191906154b5565b610244610230366004615452565b60036020525f908152604090205460ff1681565b60405190151581526020016101d1565b6005546102749073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d1565b6102446102a7366004615452565b5f9081526003602052604090205460ff1690565b6101c77f3c3e2e5f1dd14dee5db88341ba71521e939afdb7881aa24c9f1e1c007a2fa8b681565b6101c77f6351d72a43cb42fb9a2531a28608c278c89629f8f025b5f5dc705f3fe45e950a81565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b61033b6396258ff581565b60405167ffffffffffffffff90911681526020016101d1565b6101c77fbd74344bb507daeb9ed315bc535f24a236ccab72c5cd6945fb0efe5c037e209781565b6102156103893660046153a3565b610632565b61020061039c366004615452565b61067b565b6004546102749073ffffffffffffffffffffffffffffffffffffffff1681565b6101c77f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f18581565b6102006103f6366004615506565b61068d565b610215610409366004615452565b61076f565b61020061041c366004615539565b6107aa565b6104295f1981565b60405160079190910b81526020016101d1565b610444610803565b6040516101d191906155aa565b6101c761045f3660046155bc565b61081f565b6101c77f45529d8772b07ebd6d507a1680da791f4a2192882bf89d518801579f7a5167d281565b6101c77f53ce037f0dfaa43ef13b095f04e68a6b5e3f1519a01a3203a1e6440ba915b87e81565b6104446104c0366004615452565b610861565b6102006104d3366004615506565b6108f8565b6101c77fb60fee1fd85f867dd7c8d16884a49a20287ebe4c0fb49294e9825988aa8e42b481565b5f8061050a856109da565b905061051a858260018787610abc565b5090505b9392505050565b5f6040517fd587652000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610560610e81565b5f8181526003602052604090205460ff16156105d4575f8181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339183917f875e80e04c071a07000116daf291ae83b2e0b2f016b5369482c5b855dfd846979190a35b50565b6040805160a0810182525f80825260208201819052818301819052606080830191909152608082015281517fd58765200000000000000000000000000000000000000000000000000000000081529151909181900360040190fd5b6040805160a0810182525f8082526020820181905291810182905260608082019290925260808101919091526106738461066b866109da565b5f8686610abc565b949350505050565b61068481610ed4565b6105d481610f0b565b610695610e81565b73ffffffffffffffffffffffffffffffffffffffff81166106e2576040517f59180dc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f99f8e0b3045f0b2f05192da79e25a5564759735adfee8dd3a642ba1093a7c936905f90a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040805160a0810182525f8082526020820181905291810182905260608082019290925260808101919091526107a482610f87565b92915050565b5f5b818110156107fe576107d58383838181106107c9576107c96155ee565b90506020020135610ed4565b6107f68383838181106107ea576107ea6155ee565b90506020020135610f0b565b6001016107ac565b505050565b604051806080016040528060608152602001615c7c6060913981565b5f8061082a836110ff565b905061083b8382600360fc1b61110a565b5f61084684836111a9565b90506108578482600360fc1b61110a565b6106738482611247565b5f60208190529081526040902080546108799061561b565b80601f01602080910402602001604051908101604052809291908181526020018280546108a59061561b565b80156108f05780601f106108c7576101008083540402835291602001916108f0565b820191905f5260205f20905b8154815290600101906020018083116108d357829003601f168201915b505050505081565b610900610e81565b73ffffffffffffffffffffffffffffffffffffffff811661094d576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b805160208201205f907fcee269032a3a1f3308d10ab71d1582b3f32ac5283b33b6198b8e512be29e0e7b8101610a3257507f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f18592915050565b5f610a3c846110ff565b9050610a4d8482600360fc1b61110a565b8351610a5882611345565b14610a7657604051632aaefa3360e21b815260040160405180910390fd5b5f610a8185836111a9565b9050610a928582600360fc1b61110a565b610ab369ffffffffffffffffffff8216610aab83611345565b879190611389565b95945050505050565b6040805160a080820183525f8083526020808401829052838501829052606080850183905260808086018290528651948501875283855291840183905294830182905282850191909152810192909252907f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f1858614610c4e57610b3d84610f87565b90505f81608001515111610b985760405162461bcd60e51b815260206004820152601660248201527f706172656e74206365727420756e76657269666965640000000000000000000060448201526064015b60405180910390fd5b610ba1846113ef565b8051610bef5760405162461bcd60e51b815260206004820152601760248201527f706172656e742063657274206973206e6f7420612043410000000000000000006044820152606401610b8f565b841580610c025750604081015160070b15155b610c4e5760405162461bcd60e51b815260206004820152601360248201527f6d6178506174684c656e206578636565646564000000000000000000000000006044820152606401610b8f565b5f610c5887610f87565b90508060800151515f14610db557610c77610c728861151a565b61157c565b602081015167ffffffffffffffff16421115610cd55760405162461bcd60e51b815260206004820152600c60248201527f63657274206578706972656400000000000000000000000000000000000000006044820152606401610b8f565b8051151586151514610d295760405162461bcd60e51b815260206004820152601060248201527f63657274206973206e6f742061204341000000000000000000000000000000006044820152606401610b8f565b7f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f1858714610dac575f878152600160205260409020548514610dac5760405162461bcd60e51b815260206004820152601460248201527f706172656e742063657274206d69736d617463680000000000000000000000006044820152606401610b8f565b9150610ab39050565b5f610dc2898885886115da565b9092509050610dd1888361175b565b15610e1e5760405162461bcd60e51b815260206004820152600f60248201527f726f6f74206365727420616c69617300000000000000000000000000000000006044820152606401610b8f565b610e278161157c565b610e31888361181e565b5f88815260016020908152604080832089905560029091528082208390555189917f694e63280ec3524c75db17994cf1341b1dbc3efa9f68ad3f4b8da1f00804828e91a250979650505050505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610ed2576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcee269032a3a1f3308d10ab71d1582b3f32ac5283b33b6198b8e512be29e0e7b8101610f03576105d4610e81565b6105d461188a565b5f8181526003602052604090205460ff1615610f245750565b5f8181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551339183917fd583933aeca95bc15deb9ec8cbfb68dde382b5f3e2d26d7a331e7d7e62d3732d9190a350565b6040805160a0810182525f8082526020808301829052828401829052606080840183905260808401528482528190529182208054919291610fc79061561b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff39061561b565b801561103e5780601f106110155761010080835404028352916020019161103e565b820191905f5260205f20905b81548152906001019060200180831161102157829003601f168201915b5050505050905080515f036110895750506040805160a0810182525f808252602080830182905282840182905260608301829052835190810190935282526080810191909152919050565b600181015160098201516011830151603180850151855190915f916110bc91906110b4908290615699565b8891906118db565b6040805160a08101825260ff9097161515875267ffffffffffffffff909516602087015260079390930b9385019390935260608401526080830152509392505050565b5f6107a4825f61199c565b7fff0000000000000000000000000000000000000000000000000000000000000081168369ffffffffffffffffffff84168151811061114b5761114b6155ee565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146107fe576040517f90cb89b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8269ffffffffffffffffffff8316815181106111c8576111c86155ee565b01602001517f200000000000000000000000000000000000000000000000000000000000000090811614611228576040517f0a4ae2b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051e83605084901c69ffffffffffffffffffff1661199c565b61199c565b5f8061125384846111a9565b90505f6112608583611cc3565b905061128d85827f020000000000000000000000000000000000000000000000000000000000000061110a565b5f6112988683611cc3565b90505f6112a58783611cc3565b90506112b68782600360fc1b61110a565b5f6112d98869ffffffffffffffffffff605087901c81169060a088901c16611389565b90505f61130a605084901c69ffffffffffffffffffff1660a085901c69ffffffffffffffffffff165b8b9190611389565b604080516020810183905290810184905290915060600160405160208183030381529060405280519060200120965050505050505092915050565b5f69ffffffffffffffffffff8216605083901c69ffffffffffffffffffff1660a084901c69ffffffffffffffffffff1661137f91906156ac565b6107a49190615699565b82515f9061139783856156ac565b11156113e55760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610b8f565b5091016020012090565b80156114e857611401610c728261151a565b5f61140b82610f87565b90508060800151515f0361144b576040517ff01bc33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015167ffffffffffffffff164211156114a95760405162461bcd60e51b815260206004820152600c60248201527f63657274206578706972656400000000000000000000000000000000000000006044820152606401610b8f565b7fcee269032a3a1f3308d10ab71d1582b3f32ac5283b33b6198b8e512be29e0e7b82016114d4575050565b505f908152600160205260409020546113ef565b6040517ff01bc33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f1858214611555575f828152600260205260409020546107a4565b7f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f18592915050565b5f8181526003602052604090205460ff16156105d45760405162461bcd60e51b815260206004820152600c60248201527f63657274207265766f6b656400000000000000000000000000000000000000006044820152606401610b8f565b6040805160a0810182525f8082526020820181905291810182905260608082018390526080820152908061160d876110ff565b9050865161161a82611345565b1461163857604051632aaefa3360e21b815260040160405180910390fd5b5f61164388836111a9565b90505f805f805f6116558d878e611ce9565b94509450945094509450828b60600151146116b25760405162461bcd60e51b815260206004820152601960248201527f697373756572202f207375626a656374206d69736d61746368000000000000006044820152606401610b8f565b6116bc8d87611247565b97505f8b6040015160070b1380156116ea57505f8460070b12806116ea57508a6040015160070b8460070b12155b156117035760018b6040015161170091906156bf565b93505b6117138d878d608001518d611f04565b6040518060a001604052808d151581526020018667ffffffffffffffff1681526020018560070b81526020018381526020018281525098505050505050505094509492505050565b5f7f311d96fcd5c5e0ccf72ef548e2ea7d4c0cd53ad7c4cc49e67471aed41d61f185831480159061178a575081515b80156117b9575060608201517f3c3e2e5f1dd14dee5db88341ba71521e939afdb7881aa24c9f1e1c007a2fa8b6145b80156117e25750604051806080016040528060608152602001615c7c6060913951826080015151145b801561051e5750604051806080016040528060608152602001615c7c606091398051906020012082608001518051906020012014905092915050565b80516020808301516040808501516060860151608087015192516118479695929391920161571c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181525f848152602081905220906107fe90826157c2565b60055473ffffffffffffffffffffffffffffffffffffffff163314610ed2576040517f2ad3d44f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516060906118ea83856156ac565b11156119385760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610b8f565b8167ffffffffffffffff811115611951576119516152ae565b6040519080825280601f01601f19166020018201604052801561197b576020820181803683370190505b50905060208082019085850101611993828286612123565b50509392505050565b81515f906119ab8360016156ac565b106119c957604051632aaefa3360e21b815260040160405180910390fd5b8282815181106119db576119db6155ee565b01602001517f1f000000000000000000000000000000000000000000000000000000000000009081169003611a3c576040517f720059ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8084611a4a8560016156ac565b81518110611a5a57611a5a6155ee565b01602001517f8000000000000000000000000000000000000000000000000000000000000000165f03611abf5784611a938560016156ac565b81518110611aa357611aa36155ee565b016020015160f81c9150611ab88460026156ac565b9050611c86565b5f85611acc8660016156ac565b81518110611adc57611adc6155ee565b60209101015160f81c607f169050801580611afa575060208160ff16115b80611b1d5750855160ff8216611b118760026156ac565b611b1b91906156ac565b115b15611b3b57604051632aaefa3360e21b815260040160405180910390fd5b85611b478660026156ac565b81518110611b5757611b576155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000165f03611b9d57604051632aaefa3360e21b815260040160405180910390fd5b8060ff16600103611bd35785611bb48660026156ac565b81518110611bc457611bc46155ee565b016020015160f81c9250611c47565b8060ff16600203611bfe57611bf3611bec8660026156ac565b8790612197565b61ffff169250611c47565b611c0981602061589b565b611c149060086158b4565b60ff16611c2f87611c268860026156ac565b8460ff166121ff565b901c925067ffffffffffffffff831115611c47575f80fd5b6080831015611c6957604051632aaefa3360e21b815260040160405180910390fd5b60ff8116611c788660026156ac565b611c8291906156ac565b9150505b8451611c9283836156ac565b1115611cb157604051632aaefa3360e21b815260040160405180910390fd5b605081901b841760a083901b17610ab3565b5f61051e8361124269ffffffffffffffffffff60a086901c811690605087901c166156ac565b5f8080806060611cfe8888600360fc1b61110a565b5f80611d0a8a8a6111a9565b9050611d378a827fa00000000000000000000000000000000000000000000000000000000000000061110a565b5f611d428b83611cc3565b9050611d6f8b827f020000000000000000000000000000000000000000000000000000000000000061110a565b611d798b82611cc3565b92505f611d868c846111a9565b9050611da969ffffffffffffffffffff60a085901c811690605086901c166156ac565b611dca69ffffffffffffffffffff60a084901c811690605085901c166156ac565b14611de857604051632aaefa3360e21b815260040160405180910390fd5b611df28c8261223c565b600214611e2b576040517f85f6c88f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050611e3d8982603060f81b61110a565b7f53ce037f0dfaa43ef13b095f04e68a6b5e3f1519a01a3203a1e6440ba915b87e611e8c605083901c69ffffffffffffffffffff1660a084901c69ffffffffffffffffffff165b8c9190611389565b14611ec3576040517fa54c832500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eef898289611eea69ffffffffffffffffffff60a08e901c81169060508f901c166156ac565b61227c565b939d929c50909a509850909650945050505050565b5f611f0f8585611cc3565b9050611f208582600360fc1b61110a565b7f53ce037f0dfaa43ef13b095f04e68a6b5e3f1519a01a3203a1e6440ba915b87e611f638669ffffffffffffffffffff605085901c81169060a086901c16611389565b14611f9a576040517fa54c832500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611fa58683611cc3565b90508551611fb282611345565b611fc89069ffffffffffffffffffff84166156ac565b14611fe657604051632aaefa3360e21b815260040160405180910390fd5b5f6120068769ffffffffffffffffffff881661200189611345565b6124b4565b90505f61201388846125db565b6040517fee974d1500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ee974d159061208e90859085908b908b906004016158d7565b602060405180830381865afa1580156120a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120cd9190615923565b6121195760405162461bcd60e51b815260206004820152600b60248201527f696e76616c6964207369670000000000000000000000000000000000000000006044820152606401610b8f565b5050505050505050565b6020811061215b578151835261213a6020846156ac565b92506121476020836156ac565b9150612154602082615699565b9050612123565b80156107fe575f600161216f836020615699565b61217b90610100615a1d565b6121859190615699565b83518551821691191617845250505050565b5f6121a38260026156ac565b835110156121f35760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610b8f565b50016020015160f01c90565b5f602082111561220d575f80fd5b835161221983856156ac565b1115612223575f80fd5b506020919092018101519190036101000a5f1901191690565b5f805f61224b85856020612769565b909250905061225b816020615699565b612266906008615a28565b6122718684846121ff565b901c95945050505050565b5f80808060608161228d8a8a611cc3565b905061229e8a82600360fc1b61110a565b6122c8605082901c69ffffffffffffffffffff1660a083901c69ffffffffffffffffffff16611e84565b93505f6122d58b83611cc3565b90506122e68b82600360fc1b61110a565b5f6122f18c83611cc3565b90506123028c82600360fc1b61110a565b6123248c69ffffffffffffffffffff605084901c81169060a085901c16611389565b94505f6123318d83611cc3565b90506123428d82600360fc1b61110a565b5f61234d8e83611cc3565b90508d69ffffffffffffffffffff82168151811061236d5761236d6155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f8100000000000000000000000000000000000000000000000000000000000000036123c7576123c48e82611cc3565b90505b8d69ffffffffffffffffffff8216815181106123e5576123e56155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f82000000000000000000000000000000000000000000000000000000000000000361243f5761243c8e82611cc3565b90505b8a61246169ffffffffffffffffffff60a084901c811690605085901c166156ac565b1461247f57604051632aaefa3360e21b815260040160405180910390fd5b6124898e856129cd565b99506124968e828e612ab4565b98506124a28e8361305b565b95505050505050945094509450945094565b604080516101008101825267cbbb9d5dc1059ed8815267629a292a367cd5076020820152679159015a3070dd179181019190915267152fecd8f70e59396060828101919091526767332667ffc00b316080830152678eb44a876858151160a083015267db0c2e0d64f98fa760c08301526747b5481dbefa4fa460e08301529061253f858585846133b7565b80516020808301516040808501516060860151608087015160a088015184517fffffffffffffffff00000000000000000000000000000000000000000000000060c0998a1b81169882019890985295881b8716602887015292871b8616603086015290861b85166038850152851b84169183019190915290921b1660488201526050016040516020818303038152906040529150509392505050565b60605f6125e88484613c5c565b90505f6125f58583613e03565b90506126068582600360fc1b61110a565b5f61261186836111a9565b90505f61261e8783611cc3565b905061264169ffffffffffffffffffff60a086901c811690605087901c166156ac565b61264a84611345565b6126609069ffffffffffffffffffff86166156ac565b1415806126ab575061268969ffffffffffffffffffff60a085901c811690605086901c166156ac565b61269282611345565b6126a89069ffffffffffffffffffff84166156ac565b14155b156126e2576040517f90cb89b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806126ee8985613e1e565b90925090505f806126ff8b86613e1e565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608098891b81166020830152603082019790975292871b9095166050830152606080830191909152845180830390910181529401909252509098975050505050505050565b5f808469ffffffffffffffffffff851681518110612789576127896155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f020000000000000000000000000000000000000000000000000000000000000014612809576040517f0a4ae2b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a084901c69ffffffffffffffffffff169050805f0361283c57604051632aaefa3360e21b815260040160405180910390fd5b605084901c69ffffffffffffffffffff169150848281518110612861576128616155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000165f0361293457600181111561292f57846128a38360016156ac565b815181106128b3576128b36155ee565b01602001517f800000000000000000000000000000000000000000000000000000000000000090811614612913576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161291d81615a3f565b925050808061292b90615a57565b9150505b6129a4565b848281518110612946576129466155ee565b01602001517f800000000000000000000000000000000000000000000000000000000000000016156129a4576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828111156129c557604051632aaefa3360e21b815260040160405180910390fd5b935093915050565b5f806129d984846111a9565b90505f6129e68583611cc3565b90505f6129f38684613ec1565b90506129ff8683613ec1565b935042811115612a515760405162461bcd60e51b815260206004820152601960248201527f6365727469666963617465206e6f742076616c696420796574000000000000006044820152606401610b8f565b67ffffffffffffffff8416421115612aab5760405162461bcd60e51b815260206004820152601d60248201527f6365727469666963617465206e6f742076616c696420616e796d6f72650000006044820152606401610b8f565b50505092915050565b5f8369ffffffffffffffffffff841681518110612ad357612ad36155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167fa30000000000000000000000000000000000000000000000000000000000000014612b53576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612b7569ffffffffffffffffffff60a086901c811690605087901c166156ac565b9050612b8185856111a9565b9350612b928585600360fc1b61110a565b80612bb469ffffffffffffffffffff60a087901c811690605088901c166156ac565b14612beb576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612bf686866111a9565b90505f805f1994505b5f612c2169ffffffffffffffffffff60a086901c811690605087901c166156ac565b905084811115612c5d576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c6c8985600360fc1b61110a565b5f612c778a866111a9565b9050612ca48a827f060000000000000000000000000000000000000000000000000000000000000061110a565b5f612cc78b69ffffffffffffffffffff605085901c81169060a086901c16611389565b90505f7f6351d72a43cb42fb9a2531a28608c278c89629f8f025b5f5dc705f3fe45e950a821480612d1757507f45529d8772b07ebd6d507a1680da791f4a2192882bf89d518801579f7a5167d282145b90505f612d248d85611cc3565b90508c69ffffffffffffffffffff821681518110612d4457612d446155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f010000000000000000000000000000000000000000000000000000000000000003612ea85760a081901c69ffffffffffffffffffff16600114612ddb576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8d605083901c69ffffffffffffffffffff1681518110612dfe57612dfe6155ee565b016020015160f81c90508015801590612e1b57508060ff1660ff14155b15612e52576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015612e6357508060ff1660ff145b15612e9a576040517f8e20644900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ea48e83611cc3565b9150505b84612eca69ffffffffffffffffffff60a084901c811690605085901c166156ac565b14612f01576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115612fcf57612f118d8261447d565b90507f9cae28d5bc34bd0465dace5d79f73d873769d6070fda4a0a238fa0c01ba16af68301612f88578615612f72576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019650612f818d828d61451c565b9950612fcf565b8515612fc0576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019550612fcf8d828d614998565b888503612fe0575050505050612ff6565b612fea8d89611cc3565b97505050505050612bff565b811580613001575080155b8061301957508515801561301957508460070b5f1914155b15613050576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050509392505050565b60605f61306884846111a9565b90506130798482600360fc1b61110a565b5f61308485836111a9565b90505f6130918683611cc3565b90505f61309e8785611cc3565b90505f6130ab8883613c5c565b90506130d888857f060000000000000000000000000000000000000000000000000000000000000061110a565b61310388847f060000000000000000000000000000000000000000000000000000000000000061110a565b61310c85611345565b6131229069ffffffffffffffffffff87166156ac565b61312b84611345565b6131419069ffffffffffffffffffff86166156ac565b14158061318a575061315287611345565b6131689069ffffffffffffffffffff89166156ac565b61317183611345565b6131879069ffffffffffffffffffff85166156ac565b14155b156131c1576040517fa88fd43f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fb60fee1fd85f867dd7c8d16884a49a20287ebe4c0fb49294e9825988aa8e42b461320c605086901c69ffffffffffffffffffff1660a087901c69ffffffffffffffffffff16611302565b14613243576040517fa88fd43f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fbd74344bb507daeb9ed315bc535f24a236ccab72c5cd6945fb0efe5c037e209761328e605085901c69ffffffffffffffffffff1660a086901c69ffffffffffffffffffff16611302565b146132c5576040517fa88fd43f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b69ffffffffffffffffffff605082901c81169060a083901c166061811415806132f7575089516132f582846156ac565b115b8061335b575089828151811061330f5761330f6155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f040000000000000000000000000000000000000000000000000000000000000014155b15613392576040517fa88fd43f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133a96133a08360016156ac565b8b9060606118db565b9a9950505050505050505050565b60408051610a008101825267428a2f98d728ae228152677137449123ef65cd602082015267b5c0fbcfec4d3b2f9181019190915267e9b5dba58189dbbc6060820152673956c25bf348b53860808201526759f111f1b605d01960a082015267923f82a4af194f9b60c082015267ab1c5ed5da6d811860e082015267d807aa98a30302426101008201526712835b0145706fbe61012082015267243185be4ee4b28c61014082015267550c7dc3d5ffb4e26101608201526772be5d74f27b896f6101808201526780deb1fe3b1696b16101a0820152679bdc06a725c712356101c082015267c19bf174cf6926946101e082015267e49b69c19ef14ad261020082015267efbe4786384f25e3610220820152670fc19dc68b8cd5b561024082015267240ca1cc77ac9c65610260820152672de92c6f592b0275610280820152674a7484aa6ea6e4836102a0820152675cb0a9dcbd41fbd46102c08201526776f988da831153b56102e082015267983e5152ee66dfab61030082015267a831c66d2db4321061032082015267b00327c898fb213f61034082015267bf597fc7beef0ee461036082015267c6e00bf33da88fc261038082015267d5a79147930aa7256103a08201526706ca6351e003826f6103c082015267142929670a0e6e706103e08201526727b70a8546d22ffc610400820152672e1b21385c26c926610420820152674d2c6dfc5ac42aed6104408201526753380d139d95b3df61046082015267650a73548baf63de61048082015267766a0abb3c77b2a86104a08201526781c2c92e47edaee66104c08201526792722c851482353b6104e082015267a2bfe8a14cf1036461050082015267a81a664bbc42300161052082015267c24b8b70d0f8979161054082015267c76c51a30654be3061056082015267d192e819d6ef521861058082015267d69906245565a9106105a082015267f40e35855771202a6105c082015267106aa07032bbd1b86105e08201526719a4c116b8d2d0c8610600820152671e376c085141ab53610620820152672748774cdf8eeb996106408201526734b0bcb5e19b48a861066082015267391c0cb3c5c95a63610680820152674ed8aa4ae3418acb6106a0820152675b9cca4f7763e3736106c082015267682e6ff3d6b2b8a36106e082015267748f82ee5defb2fc6107008201526778a5636f43172f606107208201526784c87814a1f0ab72610740820152678cc702081a6439ec6107608201526790befffa23631e2861078082015267a4506cebde82bde96107a082015267bef9a3f7b2c679156107c082015267c67178f2e372532b6107e082015267ca273eceea26619c61080082015267d186b8c721c0c20761082082015267eada7dd6cde0eb1e61084082015267f57d4f7fee6ed1786108608201526706f067aa72176fba610880820152670a637dc5a2c898a66108a082015267113f9804bef90dae6108c0820152671b710b35131c471b6108e08201526728db77f523047d846109008201526732caab7b40c72493610920820152673c9ebe0a15c9bebc61094082015267431d67c49c100d4c610960820152674cc5d4becb3e42b661098082015267597f299cfc657e2a6109a0820152675fcb6fab3ad6faec6109c0820152676c44198c4a4758176109e0820152845161387584866156ac565b11156138c35760405162461bcd60e51b815260206004820152600d60248201527f4f55545f4f465f424f554e4453000000000000000000000000000000000000006044820152606401610b8f565b5f6138cf868686614a30565b9050608081516138df9190615a99565b1561392c5760405162461bcd60e51b815260206004820152600d60248201527f50414444494e475f4552524f52000000000000000000000000000000000000006044820152606401610b8f565b613934615251565b61393c615270565b61394461528f565b5f613950608089615aac565b61395b906080615a28565b90505f5b85518201811015613c4f57818110156139845761397f8b84838d01614b3a565b613991565b6139918684848403614b3a565b5f5b60108110156139e1578381601081106139ae576139ae6155ee565b60200201518682605081106139c5576139c56155ee565b67ffffffffffffffff9092166020929092020152600101613993565b5060105b6050811015613a9757856010820360508110613a0357613a036155ee565b6020020151613a2a87600f840360508110613a2057613a206155ee565b6020020151614b92565b876007840360508110613a3f57613a3f6155ee565b6020020151613a66896002860360508110613a5c57613a5c6155ee565b6020020151614bc0565b010101868260508110613a7b57613a7b6155ee565b67ffffffffffffffff90921660209290920201526001016139e5565b505f5b6008811015613ae857888160088110613ab557613ab56155ee565b6020020151858260088110613acc57613acc6155ee565b67ffffffffffffffff9092166020929092020152600101613a9a565b505f5b6050811015613bf3575f868260508110613b0757613b076155ee565b6020020151898360508110613b1e57613b1e6155ee565b6020020151608088015160a089015160c08a01518219169116186080890151613b4690614be6565b89600760200201510101010190505f613b7e878260200201518860016020020151896002602002015180821690831691909216181890565b8751613b8990614c08565b60c08901805167ffffffffffffffff90811660e08c015260a08b018051821690925260808b018051821690925260608b0180518701821690925260408b018051821690925260208b01805182169092528a5181169091529101909201909116865250600101613aeb565b505f5b6008811015613c4657848160088110613c1157613c116155ee565b6020020151898260088110613c2857613c286155ee565b6020020180519190910167ffffffffffffffff169052600101613bf6565b5060800161395f565b5050505050505050505050565b5f8269ffffffffffffffffffff831681518110613c7b57613c7b6155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f030000000000000000000000000000000000000000000000000000000000000014613cfb576040517f0a4ae2b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a082901c69ffffffffffffffffffff165f03613d2b57604051632aaefa3360e21b815260040160405180910390fd5b82605083901c69ffffffffffffffffffff1681518110613d4d57613d4d6155ee565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613dab576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051e69ffffffffffffffffffff8316605084901c69ffffffffffffffffffff16613dd79060016156ac565b613df2600169ffffffffffffffffffff60a088901c16615699565b60a01b60509190911b919091171790565b5f61051e83605084901c69ffffffffffffffffffff1661199c565b5f805f80613e2e86866030612769565b915091506020811115613e8f575f613e47602083615699565b9050613e54816020615699565b613e5f906008615a28565b613e6a8885846121ff565b901c613e8188613e7a84876156ac565b60206121ff565b5f1c94509450505050613eba565b5f613e9b826020615699565b613ea6906008615a28565b613eb18885856121ff565b9195501c925050505b9250929050565b5f808369ffffffffffffffffffff841681518110613ee157613ee16155ee565b016020015160f81c905069ffffffffffffffffffff605084901c81169060a085901c16601783141580613f15575080600d14155b8015613f3057508260ff166018141580613f30575080600f14155b15613f67576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001613f7483856156ac565b613f7e9190615699565b81518110613f8e57613f8e6155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f5a000000000000000000000000000000000000000000000000000000000000001461400e576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b61401b600183615699565b81101561409a575f8761402e83866156ac565b8151811061403e5761403e6155ee565b016020015160f81c9050603081108061405a575060398160ff16115b15614091576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101614010565b505f81600d036140e757600560308885815181106140ba576140ba6155ee565b01602001516140cc919060f81c61589b565b60ff16106140dc5761076c6140e0565b6107d05b9050614174565b6030876140f58560016156ac565b81518110614105576141056155ee565b0160200151614117919060f81c61589b565b6141229060646158b4565b60ff166030888581518110614139576141396155ee565b016020015161414b919060f81c61589b565b61415a9060ff166103e8615abf565b6141649190615adc565b90506141716002846156ac565b92505b6030876141828560016156ac565b81518110614192576141926155ee565b602001015160f81c60f81b60f81c60308986815181106141b4576141b46155ee565b01602001516141c6919060f81c61589b565b6141d190600a6158b4565b6141db9190615af6565b6141e5919061589b565b6141f29060ff1682615adc565b90505f6030886142038660036156ac565b81518110614213576142136155ee565b016020015160f81c60308a6142298860026156ac565b81518110614239576142396155ee565b016020015161424b919060f81c61589b565b61425690600a6158b4565b6142609190615af6565b61426a919061589b565b90505f60308961427b8760056156ac565b8151811061428b5761428b6155ee565b016020015160f81c60308b6142a18960046156ac565b815181106142b1576142b16155ee565b01602001516142c3919060f81c61589b565b6142ce90600a6158b4565b6142d89190615af6565b6142e2919061589b565b90505f60308a6142f38860076156ac565b81518110614303576143036155ee565b016020015160f81c60308c6143198a60066156ac565b81518110614329576143296155ee565b016020015161433b919060f81c61589b565b61434690600a6158b4565b6143509190615af6565b61435a919061589b565b90505f60308b61436b8960096156ac565b8151811061437b5761437b6155ee565b016020015160f81c60308d6143918b60086156ac565b815181106143a1576143a16155ee565b01602001516143b3919060f81c61589b565b6143be90600a6158b4565b6143c89190615af6565b6143d2919061589b565b90505f60308c6143e38a600b6156ac565b815181106143f3576143f36155ee565b016020015160f81c60308e6144098c600a6156ac565b81518110614419576144196155ee565b016020015161442b919060f81c61589b565b61443690600a6158b4565b6144409190615af6565b61444a919061589b565b905061446d8661ffff168660ff168660ff168660ff168660ff168660ff16614c2a565b9c9b505050505050505050505050565b5f8269ffffffffffffffffffff83168151811061449c5761449c6155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f040000000000000000000000000000000000000000000000000000000000000014611228576040517f0a4ae2b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8369ffffffffffffffffffff84168151811061453b5761453b6155ee565b6020910101517fff0000000000000000000000000000000000000000000000000000000000000016600360fc1b1461459f576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505f195f806145c569ffffffffffffffffffff60a087901c811690605088901c166156ac565b905069ffffffffffffffffffff605086901c1681811015614951575f6145eb88886111a9565b90506145f78184614e9c565b91508769ffffffffffffffffffff821681518110614617576146176155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f0100000000000000000000000000000000000000000000000000000000000000036147965760a081901c69ffffffffffffffffffff166001146146ae576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f88605083901c69ffffffffffffffffffff16815181106146d1576146d16155ee565b016020015160f81c905080158015906146ee57508060ff1660ff14155b15614725576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff1660ff14945083830361477c5784151587151514614772576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505061051e565b6147868983611cc3565b91506147928285614e9c565b9250505b831515861515146147d3576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8769ffffffffffffffffffff8216815181106147f1576147f16155ee565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f0200000000000000000000000000000000000000000000000000000000000000036148dd5760a081901c69ffffffffffffffffffff165f03614887576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f614892898361223c565b9050677fffffffffffffff8111156148d6576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b945061490f565b6040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828214614948576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505061051e565b8215158515151461498e576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050509392505050565b5f6149a38484614ef8565b905081156149ed57806004166004146149e8576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614a2a565b80608016608014614a2a576040517f05d3b44e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60605f614a3e836008615a28565b60c01b90505f614a4f608085615a99565b90505f6070821015614a6d57614a66826077615699565b9050614a7b565b614a788260f7615699565b90505b5f8167ffffffffffffffff811115614a9557614a956152ae565b6040519080825280601f01601f191660200182016040528015614abf576020820181803683370190505b5090505f614ae384614ad1898b6156ac565b614adb9190615699565b8a90866118db565b604051909150614b1d9082907f80000000000000000000000000000000000000000000000000000000000000009085908990602001615b0f565b604051602081830303815290604052955050505050509392505050565b5f5b6010811015614a2a57614b64614b53826008615a28565b614b5d90846156ac565b85906151ad565b838260108110614b7657614b766155ee565b67ffffffffffffffff9092166020929092020152600101614b3c565b5f60078267ffffffffffffffff16901c614bad836008615215565b614bb8846001615215565b181892915050565b5f60068267ffffffffffffffff16901c614bdb83603d615215565b614bb8846013615215565b5f614bf2826029615215565b614bfd836012615215565b614bb884600e615215565b5f614c14826027615215565b614c1f836022615215565b614bb884601c615215565b5f6107b2871015614c39575f80fd5b85600111158015614c4b5750600c8611155b614c53575f80fd5b84600111158015614c655750601f8511155b614c6d575f80fd5b85600203614ccc57601c85111580614cbf575084601d148015614cbf5750614c96600488615a99565b158015614cbf5750614ca9606488615a99565b151580614cbf5750614cbd61019088615a99565b155b614cc7575f80fd5b614d03565b8560041480614cdb5750856006145b80614ce65750856009145b80614cf1575085600b145b15614d0357601e851115614d03575f80fd5b6017841115614d10575f80fd5b603b831115614d1d575f80fd5b603b821115614d2a575f80fd5b8686865f62253d8c60046064600c614d43600e88615b82565b614d4d9190615ba1565b614d5988611324615be9565b614d639190615be9565b614d6d9190615ba1565b614d78906003615c10565b614d829190615ba1565b600c80614d90600e88615b82565b614d9a9190615ba1565b614da590600c615c10565b614db0600288615b82565b614dba9190615b82565b614dc69061016f615c10565b614dd09190615ba1565b6004600c614ddf600e89615b82565b614de99190615ba1565b614df5896112c0615be9565b614dff9190615be9565b614e0b906105b5615c10565b614e159190615ba1565b614e21617d4b87615b82565b614e2b9190615be9565b614e359190615be9565b614e3f9190615b82565b614e499190615b82565b9050858789614e59846018615a28565b614e6391906156ac565b614e6e90603c615a28565b614e7891906156ac565b614e8390603c615a28565b614e8d91906156ac565b9b9a5050505050505050505050565b5f614ea683611345565b614ebc9069ffffffffffffffffffff85166156ac565b9050818111156107a4576040517f794a0ac700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8269ffffffffffffffffffff831681518110614f1757614f176155ee565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f030000000000000000000000000000000000000000000000000000000000000014614f97576040517f0a4ae2b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a082901c69ffffffffffffffffffff165f03614fc757604051632aaefa3360e21b815260040160405180910390fd5b5f83605084901c69ffffffffffffffffffff1681518110614fea57614fea6155ee565b016020015160f81c9050600781111561502f576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61504b600169ffffffffffffffffffff60a087901c16615699565b9050602081111561506f57604051632aaefa3360e21b815260040160405180910390fd5b805f036150b85781156150ae576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f925050506107a4565b811561513f575f6150cc600180851b615699565b905080866150ea8469ffffffffffffffffffff60508a901c166156ac565b815181106150fa576150fa6155ee565b016020015160f81c1660ff161561513d576040517f142618f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5f805b828110156151a357615155816008615a28565b878261517269ffffffffffffffffffff60508b901c1660016156ac565b61517c91906156ac565b8151811061518c5761518c6155ee565b016020015160f81c901b9190911790600101615142565b5095945050505050565b5f6151b98260086156ac565b835110156152095760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610b8f565b50016020015160c01c90565b5f67ffffffffffffffff8381169083161c615231836040615c5b565b67ffffffffffffffff168467ffffffffffffffff16901b17905092915050565b60405180610a0001604052806050906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b6040518061020001604052806010906020820280368337509192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126152ea575f80fd5b813567ffffffffffffffff811115615304576153046152ae565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715615370576153706152ae565b604052818152838201602001851015615387575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f606084860312156153b5575f80fd5b833567ffffffffffffffff8111156153cb575f80fd5b6153d7868287016152db565b93505060208401359150604084013567ffffffffffffffff8111156153fa575f80fd5b615406868287016152db565b9150509250925092565b5f8060408385031215615421575f80fd5b823567ffffffffffffffff811115615437575f80fd5b615443858286016152db565b95602094909401359450505050565b5f60208284031215615462575f80fd5b5035919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815281511515602082015267ffffffffffffffff6020830151166040820152604082015160070b6060820152606082015160808201525f608083015160a08084015261067360c0840182615469565b5f60208284031215615516575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461051e575f80fd5b5f806020838503121561554a575f80fd5b823567ffffffffffffffff811115615560575f80fd5b8301601f81018513615570575f80fd5b803567ffffffffffffffff811115615586575f80fd5b8560208260051b840101111561559a575f80fd5b6020919091019590945092505050565b602081525f61051e6020830184615469565b5f602082840312156155cc575f80fd5b813567ffffffffffffffff8111156155e2575f80fd5b610673848285016152db565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600181811c9082168061562f57607f821691505b602082108103615666577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107a4576107a461566c565b808201808211156107a4576107a461566c565b600782810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000008112677fffffffffffffff821317156107a4576107a461566c565b5f81518060208401855e5f93019283525090919050565b85151560f81b81527fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1660018201528360c01b60098201528260118201525f61576c6031830184615705565b979650505050505050565b601f8211156107fe57805f5260205f20601f840160051c8101602085101561579c5750805b601f840160051c820191505b818110156157bb575f81556001016157a8565b5050505050565b815167ffffffffffffffff8111156157dc576157dc6152ae565b6157f0816157ea845461561b565b84615777565b6020601f821160018114615822575f831561580b5750848201515b5f19600385901b1c1916600184901b1784556157bb565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561586f578785015182556020948501946001909201910161584f565b508482101561588c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60ff82811682821603908111156107a4576107a461566c565b60ff81811683821602908116908181146158d0576158d061566c565b5092915050565b608081525f6158e96080830187615469565b82810360208401526158fb8187615469565b9050828103604084015261590f8186615469565b9050828103606084015261576c8185615469565b5f60208284031215615933575f80fd5b8151801515811461051e575f80fd5b6001815b60018411156129c5578085048111156159615761596161566c565b600184161561596f57908102905b60019390931c928002615946565b5f8261598b575060016107a4565b8161599757505f6107a4565b81600181146159ad57600281146159b7576159d3565b60019150506107a4565b60ff8411156159c8576159c861566c565b50506001821b6107a4565b5060208310610133831016604e8410600b84101617156159f6575081810a6107a4565b615a025f198484615942565b805f1904821115615a1557615a1561566c565b029392505050565b5f61051e838361597d565b80820281158282048414176107a4576107a461566c565b5f5f198203615a5057615a5061566c565b5060010190565b5f81615a6557615a6561566c565b505f190190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82615aa757615aa7615a6c565b500690565b5f82615aba57615aba615a6c565b500490565b61ffff81811683821602908116908181146158d0576158d061566c565b61ffff81811683821601908111156107a4576107a461566c565b60ff81811683821601908111156107a4576107a461566c565b5f615b1a8287615705565b7fff0000000000000000000000000000000000000000000000000000000000000086168152615b4c6001820186615705565b7fffffffffffffffff00000000000000000000000000000000000000000000000094909416845250506008909101949350505050565b8181035f8312801583831316838312821617156158d0576158d061566c565b5f82615baf57615baf615a6c565b5f1983147f800000000000000000000000000000000000000000000000000000000000000083141615615be457615be461566c565b500590565b8082018281125f831280158216821582161715615c0857615c0861566c565b505092915050565b8082025f82127f800000000000000000000000000000000000000000000000000000000000000084141615615c4757615c4761566c565b81810583148215176107a4576107a461566c565b67ffffffffffffffff82811682821603908111156107a4576107a461566c56fefc0254eba608c1f36870e29ada90be46383292736e894bfff672d989444b5051e534a4b1f6dbe3c0bc581a32b7b176070ede12d69a3fea211b66e752cf7dd1dd095f6f1370f4170843d9dc100121e4cf63012809664487c9796284304dc53ff4a164736f6c634300081a000afc0254eba608c1f36870e29ada90be46383292736e894bfff672d989444b5051e534a4b1f6dbe3c0bc581a32b7b176070ede12d69a3fea211b66e752cf7dd1dd095f6f1370f4170843d9dc100121e4cf63012809664487c9796284304dc53ff4000000000000000000000000e0aa6868e14300355001130c6dc29f2f4467d86c0000000000000000000000009855054731540a48b28990b63dcf4f33d8ae46a1000000000000000000000000d87488dbb5b6f47cc6c15dd95bb60c83d3031b04", + "nonce": "0xa", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa7353bf2867c2a12a5f8bf9918bcd6dda5c7a99e1a1ce1d88e7453cb852b7437", + "transactionType": "CREATE", + "contractName": "NitroValidator", + "contractAddress": "0x47c1ab20fac92c789d9e5708d06641c79b03c460", + "function": null, + "arguments": [ + "0x7227d8C477CD0A9EC1446A19b1FCf940Ba3Fba17", + "0xe0aa6868e14300355001130C6DC29f2f4467D86c" + ], + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x47a94b", + "value": "0x0", + "input": "0x60c060405234801561000f575f80fd5b506040516141ec3803806141ec83398101604081905261002e9161010d565b6001600160a01b0382166100895760405162461bcd60e51b815260206004820152601460248201527f6d697373696e672063657274206d616e6167657200000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0381166100df5760405162461bcd60e51b815260206004820152601560248201527f6d697373696e67205033383420766572696669657200000000000000000000006044820152606401610080565b6001600160a01b039182166080521660a052610145565b6001600160a01b038116811461010a575f80fd5b50565b5f806040838503121561011e575f80fd5b8251610129816100f6565b602084015190925061013a816100f6565b809150509250929050565b60805160a05161407161017b5f395f81816101bd0152610d6f01525f81816102570152818161183b015261193501526140715ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c80639cc3eb48116100ad578063ba8055ee1161007d578063cebf08d711610063578063cebf08d714610351578063e0a655ff14610378578063e8b6d3fe1461039f575f80fd5b8063ba8055ee1461033e578063c644ba4814610279575f80fd5b80639cc3eb48146102a8578063a903a277146102cf578063ae951149146102f0578063b22bed7e14610317575f80fd5b80636378aad511610102578063739e8484116100e8578063739e8484146102525780637650e016146102795780639adb2d6814610281575f80fd5b80636378aad5146102045780636be1e68b1461022b575f80fd5b806305f7aead146101335780632d4bad8a1461015c5780633893af6d146101915780634e33f7ca146101b8575b5f80fd5b610146610141366004613908565b6103c6565b60405161015391906139a7565b60405180910390f35b6101837f63ce814bd924c1ef12c43686e4cbf48ed1639a78387b0570c23ca921e8ce071c81565b604051908152602001610153565b6101837f501a3a7a4e0cf54b03f2488098bdd59bc1c2e8d741a300d6b25926d531733fef81565b6101df7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610153565b6101837f7ab1577440dd7bedf920cb6de2f9fc6bf7ba98c78c85a3fa1f8311aac95e175981565b6101837f682a7e258d80bd2421d3103cbe71e3e3b82138116756b97b8256f061dc2f11fb81565b6101df7f000000000000000000000000000000000000000000000000000000000000000081565b610183602081565b6101837f8ce577cf664c36ba5130242bf5790c2675e9f4e6986a842b607821bee25372ee81565b6101837f8a8cb7aa1da17ada103546ae6b4e13ccc2fafa17adf5f93925e0a0a4e5681a6a81565b6102e26102dd366004613a67565b61048b565b604051610153929190613ae5565b6101837f925cec779426f44d8d555e01d2683a3a765ce2fa7562ca7352aeb09dfc57ea6a81565b6101837f61585f8bc67a4b6d5891a4639a074964ac66fc2241dc0b36c157dc101325367a81565b61014661034c366004613b12565b610623565b6101837f5e4ea5393e4327b3014bc32f2264336b0d1ee84a4cfd197c8ad7e1e16829a16a81565b6101837f4ebf727c48eac2c66272456b06a885c5cc03e54d140f63b63b6fd10c1227958e81565b6101837fc7b28019ccfdbd30ffc65951d94bb85c9e2b8434111a000b5afd533ce65f57a481565b6104186040518061012001604052805f81526020015f67ffffffffffffffff1681526020015f8152602001606081526020015f8152602001606081526020015f81526020015f81526020015f81525090565b60405162461bcd60e51b815260206004820152602360248201527f7573652068696e746564206174746573746174696f6e2076657269666963617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6060805f60019050835f815181106104a5576104a5613ba0565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167fd200000000000000000000000000000000000000000000000000000000000000036104f6575060025b5f6105018583610e43565b905061050d8582610e5b565b505f61052261051b83610e6e565b8790610e92565b90505f61052f8783610e43565b90505f61053c8883610e9e565b90505f8561054986610e6e565b6105539190613bfa565b90505f8461056085610e6e565b61056a9190613bfa565b90505f6105788b8985610eb5565b90505f6105868c8885610eb5565b905061059482858386610f76565b9a506105bb605086901c69ffffffffffffffffffff166105b387611163565b8e9190610eb5565b99508b516105c886610e6e565b146106155760405162461bcd60e51b815260206004820152601260248201527f747261696c696e6720434f5345206461746100000000000000000000000000006044820152606401610482565b505050505050505050915091565b6106756040518061012001604052805f81526020015f67ffffffffffffffff1681526020015f8152602001606081526020015f8152602001606081526020015f81526020015f81526020015f81525090565b5f61067f856111a2565b90505f61068e825f0151611163565b116106db5760405162461bcd60e51b815260206004820152600c60248201527f6e6f206d6f64756c6520696400000000000000000000000000000000000000006044820152606401610482565b5f816020015167ffffffffffffffff16116107385760405162461bcd60e51b815260206004820152600c60248201527f6e6f2074696d657374616d7000000000000000000000000000000000000000006044820152606401610482565b5f8160a00151511161078c5760405162461bcd60e51b815260206004820152600b60248201527f6e6f20636162756e646c650000000000000000000000000000000000000000006044820152606401610482565b60408101517f501a3a7a4e0cf54b03f2488098bdd59bc1c2e8d741a300d6b25926d531733fef906107be90879061179b565b1461080b5760405162461bcd60e51b815260206004820152600e60248201527f696e76616c6964206469676573740000000000000000000000000000000000006044820152606401610482565b6020816060015151146108605760405162461bcd60e51b815260206004820152600c60248201527f696e76616c6964207063727300000000000000000000000000000000000000006044820152606401610482565b60c0810151158061087957506108798160c001516117c1565b806108aa575061088c8160c00151611163565b6001111580156108aa57506104006108a78260c00151611163565b11155b6108f65760405162461bcd60e51b815260206004820152600f60248201527f696e76616c696420707562206b657900000000000000000000000000000000006044820152606401610482565b6109038160e001516117c1565b8061091c57506102006109198260e00151611163565b11155b6109685760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964207573657220646174610000000000000000000000000000006044820152606401610482565b6109768161010001516117c1565b80610990575061020061098d826101000151611163565b11155b6109dc5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c6964206e6f6e6365000000000000000000000000000000000000006044820152606401610482565b5f805b826060015151811015610ae657610a1283606001518281518110610a0557610a05613ba0565b60200260200101516117c1565b610ade5781610a2081613c0d565b925050610a4983606001518281518110610a3c57610a3c613ba0565b6020026020010151611163565b60201480610a6f5750610a6b83606001518281518110610a3c57610a3c613ba0565b6030145b80610a925750610a8e83606001518281518110610a3c57610a3c613ba0565b6040145b610ade5760405162461bcd60e51b815260206004820152600b60248201527f696e76616c6964207063720000000000000000000000000000000000000000006044820152606401610482565b6001016109df565b505f8111610b365760405162461bcd60e51b815260206004820152600c60248201527f696e76616c6964207063727300000000000000000000000000000000000000006044820152606401610482565b610b438260800151611163565b600111158015610b615750610400610b5e8360800151611163565b11155b610bad5760405162461bcd60e51b815260206004820152600c60248201527f696e76616c6964206365727400000000000000000000000000000000000000006044820152606401610482565b5f610bc58360800151886117de90919063ffffffff16565b90505f8360a001515167ffffffffffffffff811115610be657610be66137cc565b604051908082528060200260200182016040528015610c1957816020015b6060815260200190600190039081610c045790505b5090505f5b8460a0015151811015610d0f57610c448560a001518281518110610a3c57610a3c613ba0565b600111158015610c6e5750610400610c6b8660a001518381518110610a3c57610a3c613ba0565b11155b610cba5760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420636162756e646c65206365727400000000000000000000006044820152606401610482565b610cea8560a001518281518110610cd357610cd3613ba0565b60200260200101518a6117de90919063ffffffff16565b828281518110610cfc57610cfc613ba0565b6020908102919091010152600101610c1e565b505f610d1b8383611805565b90505f610d2a8a5f8c516119d4565b60808301516040517fee974d1500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163ee974d1591610da89185918e918e90600401613c44565b602060405180830381865afa158015610dc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de79190613ca4565b610e335760405162461bcd60e51b815260206004820152600b60248201527f696e76616c6964207369670000000000000000000000000000000000000000006044820152606401610482565b50939450505050505b9392505050565b5f610e52838360406001611afb565b90505b92915050565b5f610e5283610e6984610e6e565b611f06565b5f610e7882611163565b610e559069ffffffffffffffffffff605085901c16613cbd565b5f610e5283835f611f15565b5f610e5283610eac84610e6e565b60406001611afb565b8251606090610ec48385613cbd565b1115610f125760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610482565b8167ffffffffffffffff811115610f2b57610f2b6137cc565b6040519080825280601f01601f191660200182016040528015610f55576020820181803683370190505b50905060208082019085850101610f6d828286612503565b50509392505050565b606081610f8485600d613cbd565b610f8e9190613cbd565b67ffffffffffffffff811115610fa657610fa66137cc565b6040519080825280601f01601f191660200182016040528015610fd0576020820181803683370190505b509050608460f81b815f81518110610fea57610fea613ba0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350606a60f81b8160018151811061103057611030613ba0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f40000000000000000000000000000000000000000000000000000000000000008161108b86600c613cbd565b8151811061109b5761109b613ba0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060408051808201909152600a81527f5369676e6174757265310000000000000000000000000000000000000000000060208083019182528381019190888101908701611121611119856002613cbd565b84600a612503565b61113661112f85600c613cbd565b838b612503565b6111568961114586600d613cbd565b61114f9190613cbd565b8289612503565b5050505050949350505050565b5f81604060ff8216148061117a57508060ff166060145b1561119a576111898360a01c90565b67ffffffffffffffff169392505050565b505f92915050565b6111f46040518061012001604052805f81526020015f67ffffffffffffffff1681526020015f8152602001606081526020015f8152602001606081526020015f81526020015f81526020015f81525090565b7f63ce814bd924c1ef12c43686e4cbf48ed1639a78387b0570c23ca921e8ce071c611221835f6012612578565b1461126e5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206174746573746174696f6e207072656669780000000000006044820152606401610482565b5f61127a836012610e43565b9050825161128782610e6e565b146112d45760405162461bcd60e51b815260206004820152601160248201527f747261696c696e672074627320646174610000000000000000000000000000006044820152606401610482565b69ffffffffffffffffffff605082901c165f6112f08583611f06565b90505f6112fd86846125de565b90505f61130a8360a01c90565b67ffffffffffffffff1690506113686040518061012001604052805f81526020015f67ffffffffffffffff1681526020015f8152602001606081526020015f8152602001606081526020015f81526020015f81526020015f81525090565b611370612607565b60608201525f8061138088610e6e565b90505f5b8515611476578161139488610e6e565b106113e15760405162461bcd60e51b815260206004820152601460248201527f6d697373696e6720627265616b206d61726b65720000000000000000000000006044820152606401610482565b8a6113eb88610e6e565b815181106113fb576113fb613ba0565b016020015160f81c60ff03611471578161141488610e6e565b61141f906001613cbd565b1461146c5760405162461bcd60e51b815260206004820152601660248201527f747261696c696e67207061796c6f6164206279746573000000000000000000006044820152606401610482565b61178c565b611487565b848103611487578161141f88610e6e565b6114918b88612665565b96505f61149e8c8961179b565b90507f731a883099b3c945aecfdbd40a86f3d98a160b1967957bd49f87de411dac8d1281016114e8576114d284600161267c565b93506114de8c89612665565b8086529750611779565b7f97d581da727f42dbde2cefc3418e1c1c47dec7ee98a946847da90f9e23d0ee0581016115345761151a84600261267c565b93506115268c89612665565b604086018190529750611779565b7f6da313886bd90bb272aaa1fe2d97c5c589a31d058a9d358cad514f6203a8159681016115805761156684600461267c565b93506115728c89610e9e565b608086018190529750611779565b7f384d7fe6330242cf0039a6ae26b447a361d47bcbeee5fff4a502acc319a0a85c81016115cc576115b284600861267c565b93506115be8c896126d2565b60c086018190529750611779565b7fa1b15ac6c1bcd84cfeb43cd0dd9bcc94f2e117b5b302e68375281e1e97d65e968101611618576115fe84601061267c565b935061160a8c896126d2565b60e086018190529750611779565b7f854ea88bbf22841206df34921d06039408456738737a5c05e07cee5536a1e8a781016116655761164a84602061267c565b93506116568c896126d2565b61010086018190529750611779565b7fb1408d83b7153d399d8dba94f9577a3a33fc1ab2ebf09c49c4902ef3edd86a7281016116c35761169784604061267c565b93506116a38c896126e8565b97506116af8860a01c90565b67ffffffffffffffff166020860152611779565b7f75734855e25e8525efcab95194b1ec333d0505e8520a06c6da1f5f5b1a97e5968101611710576116f584608061267c565b93506117018c896126fe565b60a08701919091529750611779565b7f9ea7a0743985b492a76e5b9c65f8b69b539903ddbe23f4c93ea823efecdac986810161175e576117438461010061267c565b935061174f8c89612849565b60608701919091529750611779565b5f61177261176b8a610e6e565b8e90610e92565b60501b9850505b508061178481613c0d565b915050611384565b50919998505050505050505050565b5f610e52605083901c69ffffffffffffffffffff166117b984611163565b859190612578565b5f8160f660ff82161480610e3c57508060ff1660f7149392505050565b6060610e52605083901c69ffffffffffffffffffff166117fd84611163565b859190610eb5565b6040805160a0810182525f808252602082018190529181018290526060808201839052608082015290805b83518110156118f7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663031cf06785838151811061188757611887613ba0565b6020026020010151846040518363ffffffff1660e01b81526004016118ad929190613cd0565b6020604051808303815f875af11580156118c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ed9190613d01565b9150600101611830565b506040517f77f2dd7400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906377f2dd749061196c9087908590600401613cd0565b5f604051808303815f875af1158015611987573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119cc9190810190613d65565b949350505050565b604080516101008101825267cbbb9d5dc1059ed8815267629a292a367cd5076020820152679159015a3070dd179181019190915267152fecd8f70e59396060828101919091526767332667ffc00b316080830152678eb44a876858151160a083015267db0c2e0d64f98fa760c08301526747b5481dbefa4fa460e083015290611a5f85858584612a76565b80516020808301516040808501516060860151608087015160a088015184517fffffffffffffffff00000000000000000000000000000000000000000000000060c0998a1b81169882019890985295881b8716602887015292871b8616603086015290861b85166038850152851b84169183019190915290921b1660488201526050016040516020818303038152906040529150509392505050565b5f80858581518110611b0f57611b0f613ba0565b602001015160f81c60f81b60e060f81b1660f81c90505f868681518110611b3857611b38613ba0565b60209101015160f81c601f16905060ff821660e003611c4a578060ff1660161480611b6657508060ff166017145b611bd85760405162461bcd60e51b815260206004820152602860248201527f6f6e6c79206e756c6c207072696d69746976652076616c75657320617265207360448201527f7570706f727465640000000000000000000000000000000000000000000000006064820152608401610482565b8315611c265760405162461bcd60e51b815260206004820152601f60248201527f6e756c6c2076616c756520666f7220726571756972656420656c656d656e74006044820152606401610482565b611c4160ff83831716611c3a886001613cbd565b60501b1790565b925050506119cc565b8460ff168260ff1614611c9f5760405162461bcd60e51b815260206004820152600f60248201527f756e6578706563746564207479706500000000000000000000000000000000006044820152606401610482565b8060ff16601f03611d43578160ff1660a01480611cbf57508160ff166080145b611d315760405162461bcd60e51b815260206004820152602660248201527f696e646566696e6974652d6c656e677468206f6e6c7920666f72206d6170732f60448201527f61727261797300000000000000000000000000000000000000000000000000006064820152608401610482565b611c4160ff8316611c3a886001613cbd565b601c8160ff1610611d965760405162461bcd60e51b815260206004820152601060248201527f756e737570706f727465642074797065000000000000000000000000000000006044820152606401610482565b8060ff16601803611de857611c4160ff8316611db3886002613cbd565b89611dbf8a6001613cbd565b81518110611dcf57611dcf613ba0565b016020015160f81c60a01b60509190911b919091171790565b8060ff16601903611e2f57611c4160ff8316611e05886003613cbd565b611e1a611e138a6001613cbd565b8b9061331b565b61ffff1660a01b60509190911b919091171790565b8060ff16601a03611e7857611c4160ff8316611e4c886005613cbd565b611e61611e5a8a6001613cbd565b8b90613383565b63ffffffff1660a01b60509190911b919091171790565b8060ff16601b03611ec557611c4160ff8316611e95886009613cbd565b611eaa611ea38a6001613cbd565b8b906133eb565b67ffffffffffffffff1660a01b60509190911b919091171790565b611efb60ff8316611ed7886001613cbd565b60501b1774ff000000000000000000000000000000000000000060a084901b161790565b979650505050505050565b5f610e52838360a06001611afb565b5f6040821115611f675760405162461bcd60e51b815260206004820152601560248201527f63626f72206e657374696e6720746f6f206465657000000000000000000000006044820152606401610482565b5f848481518110611f7a57611f7a613ba0565b016020015160f881901c915060fd1c601f82165f80806018841015611fa857600192508360ff1691506120b6565b8360ff16601803611fe2576002925089611fc38a6001613cbd565b81518110611fd357611fd3613ba0565b016020015160f81c91506120b6565b8360ff1660190361200a5760039250611fff611e138a6001613cbd565b61ffff1691506120b6565b8360ff16601a036120345760059250612027611e5a8a6001613cbd565b63ffffffff1691506120b6565b8360ff16601b036120585760099250612051611ea38a6001613cbd565b91506120b6565b8360ff16601f0361206e575060019150816120b6565b60405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642063626f72206164646974696f6e616c20696e666f000000006044820152606401610482565b5f6120c1848b613cbd565b905060ff861615806120d657508560ff166001145b156121375781156121295760405162461bcd60e51b815260206004820152601860248201527f696e76616c696420696e746567657220656e636f64696e6700000000000000006044820152606401610482565b9650610e3c95505050505050565b8560ff166002148061214c57508560ff166003145b156122aa578115612232575b8a818151811061216a5761216a613ba0565b60209101015160f81c60ff14612219575f8b828151811061218d5761218d613ba0565b016020015160f881901c915060fd1c60ff88161480156121b05750601f80821614155b6121fc5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420696e646566696e69746520737472696e67206368756e6b006044820152606401610482565b6122118c8361220c8d6001613cbd565b611f15565b915050612158565b612224816001613cbd565b975050505050505050610e3c565b8a5161224867ffffffffffffffff851683613cbd565b11156122965760405162461bcd60e51b815260206004820152601960248201527f63626f7220737472696e67206f7574206f6620626f756e6473000000000000006044820152606401610482565b61222467ffffffffffffffff841682613cbd565b8560ff1660040361233c5781156122f5575b8a81815181106122ce576122ce613ba0565b60209101015160f81c60ff14612219576122ee8b8261220c8c6001613cbd565b90506122bc565b5f5b8367ffffffffffffffff168167ffffffffffffffff16101561232d576123238c8361220c8d6001613cbd565b91506001016122f7565b509650610e3c95505050505050565b8560ff1660050361244c578115612402575b8a818151811061236057612360613ba0565b60209101015160f81c60ff14612219576123808b8261220c8c6001613cbd565b90508a818151811061239457612394613ba0565b016020015160f81c60ff036123eb5760405162461bcd60e51b815260206004820152601760248201527f6f64642063626f72206d6170206974656d20636f756e740000000000000000006044820152606401610482565b6123fb8b8261220c8c6001613cbd565b905061234e565b5f5b8367ffffffffffffffff168167ffffffffffffffff16101561232d576124308c8361220c8d6001613cbd565b91506124428c8361220c8d6001613cbd565b9150600101612404565b8560ff166006036124b55781156124a55760405162461bcd60e51b815260206004820152601460248201527f696e76616c69642074616720656e636f64696e670000000000000000000000006044820152606401610482565b6122248b8261220c8c6001613cbd565b81156121295760405162461bcd60e51b815260206004820152601060248201527f756e657870656374656420627265616b000000000000000000000000000000006044820152606401610482565b6020811061253b578151835261251a602084613cbd565b9250612527602083613cbd565b9150612534602082613bfa565b9050612503565b8015612573575f600161254f836020613bfa565b61255b90610100613f45565b6125659190613bfa565b835185518216911916178452505b505050565b82515f906125868385613cbd565b11156125d45760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610482565b5091016020012090565b5f8282815181106125f1576125f1613ba0565b60209101015160f81c601f908116149392505050565b6040805160208082526104208201909252606091808201610400803683375091925060f691505f90505b6020811015612660578183828151811061264d5761264d613ba0565b6020908102919091010152600101612631565b505090565b5f610e528361267384610e6e565b60606001611afb565b5f828216156126cd5760405162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206174746573746174696f6e206b6579000000000000006044820152606401610482565b501790565b5f610e52836126e084610e6e565b60405f611afb565b5f610e52836126f684610e6e565b5f6001611afb565b60605f8061270b84610e6e565b90506127178585613453565b91505f61272486836125de565b90505f81612745576127368460a01c90565b67ffffffffffffffff16612757565b6127578761275286610e6e565b61346a565b905060208111156127aa5760405162461bcd60e51b815260206004820152601760248201527f746f6f206d616e7920636162756e646c652063657274730000000000000000006044820152606401610482565b8067ffffffffffffffff8111156127c3576127c36137cc565b6040519080825280602002602001820160405280156127ec578160200160208202803683370190505b5094505f5b8181101561282b576128038886610e9e565b94508486828151811061281857612818613ba0565b60209081029190910101526001016127f1565b50811561283f5761283c87856134ac565b93505b5050509250929050565b60605f8061285684610e6e565b90506128628585610e5b565b91505f61286f86836125de565b90505f81156128f3575f6128868861275287610e6e565b9050612893600282613f7d565b156128e05760405162461bcd60e51b815260206004820152601060248201527f696e76616c69642070637273206d6170000000000000000000000000000000006044820152606401610482565b6128eb600282613f90565b91505061290a565b6128fd8460a01c90565b67ffffffffffffffff1690505b602081111561295b5760405162461bcd60e51b815260206004820152600d60248201527f746f6f206d616e792070637273000000000000000000000000000000000000006044820152606401610482565b612963612607565b94505f5b8181101561282b5761297988866126e8565b94505f6129868660a01c90565b67ffffffffffffffff169050602081106129e25760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420706372206b65792076616c756500000000000000000000006044820152606401610482565b6129f7878281518110610a0557610a05613ba0565b612a435760405162461bcd60e51b815260206004820152601160248201527f6475706c696361746520706372206b65790000000000000000000000000000006044820152606401610482565b612a4d8987610e9e565b955085878281518110612a6257612a62613ba0565b602090810291909101015250600101612967565b60408051610a008101825267428a2f98d728ae228152677137449123ef65cd602082015267b5c0fbcfec4d3b2f9181019190915267e9b5dba58189dbbc6060820152673956c25bf348b53860808201526759f111f1b605d01960a082015267923f82a4af194f9b60c082015267ab1c5ed5da6d811860e082015267d807aa98a30302426101008201526712835b0145706fbe61012082015267243185be4ee4b28c61014082015267550c7dc3d5ffb4e26101608201526772be5d74f27b896f6101808201526780deb1fe3b1696b16101a0820152679bdc06a725c712356101c082015267c19bf174cf6926946101e082015267e49b69c19ef14ad261020082015267efbe4786384f25e3610220820152670fc19dc68b8cd5b561024082015267240ca1cc77ac9c65610260820152672de92c6f592b0275610280820152674a7484aa6ea6e4836102a0820152675cb0a9dcbd41fbd46102c08201526776f988da831153b56102e082015267983e5152ee66dfab61030082015267a831c66d2db4321061032082015267b00327c898fb213f61034082015267bf597fc7beef0ee461036082015267c6e00bf33da88fc261038082015267d5a79147930aa7256103a08201526706ca6351e003826f6103c082015267142929670a0e6e706103e08201526727b70a8546d22ffc610400820152672e1b21385c26c926610420820152674d2c6dfc5ac42aed6104408201526753380d139d95b3df61046082015267650a73548baf63de61048082015267766a0abb3c77b2a86104a08201526781c2c92e47edaee66104c08201526792722c851482353b6104e082015267a2bfe8a14cf1036461050082015267a81a664bbc42300161052082015267c24b8b70d0f8979161054082015267c76c51a30654be3061056082015267d192e819d6ef521861058082015267d69906245565a9106105a082015267f40e35855771202a6105c082015267106aa07032bbd1b86105e08201526719a4c116b8d2d0c8610600820152671e376c085141ab53610620820152672748774cdf8eeb996106408201526734b0bcb5e19b48a861066082015267391c0cb3c5c95a63610680820152674ed8aa4ae3418acb6106a0820152675b9cca4f7763e3736106c082015267682e6ff3d6b2b8a36106e082015267748f82ee5defb2fc6107008201526778a5636f43172f606107208201526784c87814a1f0ab72610740820152678cc702081a6439ec6107608201526790befffa23631e2861078082015267a4506cebde82bde96107a082015267bef9a3f7b2c679156107c082015267c67178f2e372532b6107e082015267ca273eceea26619c61080082015267d186b8c721c0c20761082082015267eada7dd6cde0eb1e61084082015267f57d4f7fee6ed1786108608201526706f067aa72176fba610880820152670a637dc5a2c898a66108a082015267113f9804bef90dae6108c0820152671b710b35131c471b6108e08201526728db77f523047d846109008201526732caab7b40c72493610920820152673c9ebe0a15c9bebc61094082015267431d67c49c100d4c610960820152674cc5d4becb3e42b661098082015267597f299cfc657e2a6109a0820152675fcb6fab3ad6faec6109c0820152676c44198c4a4758176109e08201528451612f348486613cbd565b1115612f825760405162461bcd60e51b815260206004820152600d60248201527f4f55545f4f465f424f554e4453000000000000000000000000000000000000006044820152606401610482565b5f612f8e868686613537565b905060808151612f9e9190613f7d565b15612feb5760405162461bcd60e51b815260206004820152600d60248201527f50414444494e475f4552524f52000000000000000000000000000000000000006044820152606401610482565b612ff361376f565b612ffb61378e565b6130036137ad565b5f61300f608089613f90565b61301a906080613fa3565b90505f5b8551820181101561330e57818110156130435761303e8b84838d01613641565b613050565b6130508684848403613641565b5f5b60108110156130a05783816010811061306d5761306d613ba0565b602002015186826050811061308457613084613ba0565b67ffffffffffffffff9092166020929092020152600101613052565b5060105b6050811015613156578560108203605081106130c2576130c2613ba0565b60200201516130e987600f8403605081106130df576130df613ba0565b602002015161369f565b8760078403605081106130fe576130fe613ba0565b602002015161312589600286036050811061311b5761311b613ba0565b60200201516136cd565b01010186826050811061313a5761313a613ba0565b67ffffffffffffffff90921660209290920201526001016130a4565b505f5b60088110156131a75788816008811061317457613174613ba0565b602002015185826008811061318b5761318b613ba0565b67ffffffffffffffff9092166020929092020152600101613159565b505f5b60508110156132b2575f8682605081106131c6576131c6613ba0565b60200201518983605081106131dd576131dd613ba0565b6020020151608088015160a089015160c08a01518219169116186080890151613205906136f3565b89600760200201510101010190505f61323d878260200201518860016020020151896002602002015180821690831691909216181890565b875161324890613715565b60c08901805167ffffffffffffffff90811660e08c015260a08b018051821690925260808b018051821690925260608b0180518701821690925260408b018051821690925260208b01805182169092528a51811690915291019092019091168652506001016131aa565b505f5b6008811015613305578481600881106132d0576132d0613ba0565b60200201518982600881106132e7576132e7613ba0565b6020020180519190910167ffffffffffffffff1690526001016132b5565b5060800161301e565b5050505050505050505050565b5f613327826002613cbd565b835110156133775760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610482565b50016020015160f01c90565b5f61338f826004613cbd565b835110156133df5760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610482565b50016020015160e01c90565b5f6133f7826008613cbd565b835110156134475760405162461bcd60e51b815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610482565b50016020015160c01c90565b5f610e528361346184610e6e565b60806001611afb565b5f5b82828151811061347e5761347e613ba0565b60209101015160f81c60ff14610e55576134988383610e92565b9150806134a481613c0d565b91505061346c565b5f826134b783610e6e565b815181106134c7576134c7613ba0565b60209101015160f81c60ff1461351f5760405162461bcd60e51b815260206004820152601560248201527f657870656374656420627265616b206d61726b657200000000000000000000006044820152606401610482565b610e525f61352c84610e6e565b611c3a906001613cbd565b60605f613545836008613fa3565b60c01b90505f613556608085613f7d565b90505f60708210156135745761356d826077613bfa565b9050613582565b61357f8260f7613bfa565b90505b5f8167ffffffffffffffff81111561359c5761359c6137cc565b6040519080825280601f01601f1916602001820160405280156135c6576020820181803683370190505b5090505f6135ea846135d8898b613cbd565b6135e29190613bfa565b8a9086610eb5565b6040519091506136249082907f80000000000000000000000000000000000000000000000000000000000000009085908990602001613fd1565b604051602081830303815290604052955050505050509392505050565b5f5b60108110156136995761366b61365a826008613fa3565b6136649084613cbd565b85906133eb565b83826010811061367d5761367d613ba0565b67ffffffffffffffff9092166020929092020152600101613643565b50505050565b5f60078267ffffffffffffffff16901c6136ba836008613733565b6136c5846001613733565b181892915050565b5f60068267ffffffffffffffff16901c6136e883603d613733565b6136c5846013613733565b5f6136ff826029613733565b61370a836012613733565b6136c584600e613733565b5f613721826027613733565b61372c836022613733565b6136c584601c5b5f67ffffffffffffffff8381169083161c61374f836040614044565b67ffffffffffffffff168467ffffffffffffffff16901b17905092915050565b60405180610a0001604052806050906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b6040518061020001604052806010906020820280368337509192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff8111828210171561381c5761381c6137cc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613869576138696137cc565b604052919050565b5f67ffffffffffffffff82111561388a5761388a6137cc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126138c5575f80fd5b81356138d86138d382613871565b613822565b8181528460208386010111156138ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215613919575f80fd5b823567ffffffffffffffff81111561392f575f80fd5b61393b858286016138b6565b925050602083013567ffffffffffffffff811115613957575f80fd5b613963858286016138b6565b9150509250929050565b5f8151808452602084019350602083015f5b8281101561399d57815186526020958601959091019060010161397f565b5093949350505050565b60208152815160208201525f60208301516139ce604084018267ffffffffffffffff169052565b5060408301516060830152606083015161012060808401526139f461014084018261396d565b9050608084015160a084015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c0850152613a39828261396d565b91505060c084015160e084015260e08401516101008401526101008401516101208401528091505092915050565b5f60208284031215613a77575f80fd5b813567ffffffffffffffff811115613a8d575f80fd5b6119cc848285016138b6565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081525f613af76040830185613a99565b8281036020840152613b098185613a99565b95945050505050565b5f805f60608486031215613b24575f80fd5b833567ffffffffffffffff811115613b3a575f80fd5b613b46868287016138b6565b935050602084013567ffffffffffffffff811115613b62575f80fd5b613b6e868287016138b6565b925050604084013567ffffffffffffffff811115613b8a575f80fd5b613b96868287016138b6565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610e5557610e55613bcd565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3d57613c3d613bcd565b5060010190565b608081525f613c566080830187613a99565b8281036020840152613c688187613a99565b90508281036040840152613c7c8186613a99565b90508281036060840152611efb8185613a99565b80518015158114613c9f575f80fd5b919050565b5f60208284031215613cb4575f80fd5b610e5282613c90565b80820180821115610e5557610e55613bcd565b606081525f613ce26060830185613a99565b83602084015282810360408401525f8152602081019150509392505050565b5f60208284031215613d11575f80fd5b5051919050565b5f82601f830112613d27575f80fd5b8151613d356138d382613871565b818152846020838601011115613d49575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215613d75575f80fd5b815167ffffffffffffffff811115613d8b575f80fd5b820160a08185031215613d9c575f80fd5b613da46137f9565b613dad82613c90565b8152602082015167ffffffffffffffff81168114613dc9575f80fd5b60208201526040820151600781900b8114613de2575f80fd5b604082015260608281015190820152608082015167ffffffffffffffff811115613e0a575f80fd5b613e1686828501613d18565b608083015250949350505050565b6001815b6001841115613e5f57808504811115613e4357613e43613bcd565b6001841615613e5157908102905b60019390931c928002613e28565b935093915050565b5f82613e7557506001610e55565b81613e8157505f610e55565b8160018114613e975760028114613ea157613ebd565b6001915050610e55565b60ff841115613eb257613eb2613bcd565b50506001821b610e55565b5060208310610133831016604e8410600b8410161715613ee0575081810a610e55565b613f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613e24565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613f3d57613f3d613bcd565b029392505050565b5f610e528383613e67565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82613f8b57613f8b613f50565b500690565b5f82613f9e57613f9e613f50565b500490565b8082028115828204841417610e5557610e55613bcd565b5f81518060208401855e5f93019283525090919050565b5f613fdc8287613fba565b7fff000000000000000000000000000000000000000000000000000000000000008616815261400e6001820186613fba565b7fffffffffffffffff00000000000000000000000000000000000000000000000094909416845250506008909101949350505050565b67ffffffffffffffff8281168282160390811115610e5557610e55613bcd56fea164736f6c634300081a000a0000000000000000000000007227d8c477cd0a9ec1446a19b1fcf940ba3fba17000000000000000000000000e0aa6868e14300355001130c6dc29f2f4467d86c", + "nonce": "0xb", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x19e18f7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x501ee94e5c926d1fc39990cb60e5b7d43bf5d1329273550ea566c92389f80cc1", + "transactionIndex": "0x14", + "blockHash": "0x7f19259617f785e69275c75d5d51aa774d845f5385ec9693a9925079910ffbc7", + "blockNumber": "0x18d7718", + "gasUsed": "0x1a5546", + "effectiveGasPrice": "0x6f98b5a4", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0xe0aa6868e14300355001130c6dc29f2f4467d86c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1a156e0", + "logs": [ + { + "address": "0x7227d8c477cd0a9ec1446a19b1fcf940ba3fba17", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000009855054731540a48b28990b63dcf4f33d8ae46a1" + ], + "data": "0x", + "blockHash": "0x9140f1fcb298e93f7541a3514cdab8fae9817c2b5567d8db161ebdfa4c6e3c71", + "blockNumber": "0x18d771a", + "blockTimestamp": "0x6ab5451b", + "transactionHash": "0xd346098c90c6d5c82b751061559cec4761d06ea03fbbdea4f38285f7f4ce8eae", + "transactionIndex": "0xee", + "logIndex": "0x1b8", + "removed": false + }, + { + "address": "0x7227d8c477cd0a9ec1446a19b1fcf940ba3fba17", + "topics": [ + "0x99f8e0b3045f0b2f05192da79e25a5564759735adfee8dd3a642ba1093a7c936", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d87488dbb5b6f47cc6c15dd95bb60c83d3031b04" + ], + "data": "0x", + "blockHash": "0x9140f1fcb298e93f7541a3514cdab8fae9817c2b5567d8db161ebdfa4c6e3c71", + "blockNumber": "0x18d771a", + "blockTimestamp": "0x6ab5451b", + "transactionHash": "0xd346098c90c6d5c82b751061559cec4761d06ea03fbbdea4f38285f7f4ce8eae", + "transactionIndex": "0xee", + "logIndex": "0x1b9", + "removed": false + } + ], + "logsBloom": "0x00000000000000000001000000000000000000000000000000800000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000002020000000000000800080800000000000000000000000000000000400000000000000000000800000000000000000000000000000000000000000000000040000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000020000000020000000000000000000000000000000000000000000000000000040000000100000", + "type": "0x2", + "transactionHash": "0xd346098c90c6d5c82b751061559cec4761d06ea03fbbdea4f38285f7f4ce8eae", + "transactionIndex": "0xee", + "blockHash": "0x9140f1fcb298e93f7541a3514cdab8fae9817c2b5567d8db161ebdfa4c6e3c71", + "blockNumber": "0x18d771a", + "gasUsed": "0x51be63", + "effectiveGasPrice": "0x792101bd", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0x7227d8c477cd0a9ec1446a19b1fcf940ba3fba17" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1dcbf9c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa7353bf2867c2a12a5f8bf9918bcd6dda5c7a99e1a1ce1d88e7453cb852b7437", + "transactionIndex": "0x111", + "blockHash": "0x4c68bf19f7105bfa4dd8aa7e755dda71de0bd7026f578f1a18bd0fc6f00cc269", + "blockNumber": "0x18d771c", + "gasUsed": "0x371fc4", + "effectiveGasPrice": "0x73d20747", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0x47c1ab20fac92c789d9e5708d06641c79b03c460" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1790264629089, + "chain": 1, + "commit": "9cfab5a" +} \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployTEEProverRegistryImpl.s.sol/1/run-1790264666822.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployTEEProverRegistryImpl.s.sol/1/run-1790264666822.json new file mode 100644 index 000000000..99044daf0 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/records/DeployTEEProverRegistryImpl.s.sol/1/run-1790264666822.json @@ -0,0 +1,128 @@ +{ + "transactions": [ + { + "hash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionType": "CREATE", + "contractName": "TEEProverRegistry", + "contractAddress": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "function": null, + "arguments": [ + "0x47C1ab20fac92c789d9e5708D06641c79b03C460", + "0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e" + ], + "transaction": { + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "gas": "0x2af6ca", + "value": "0x0", + "input": "0x60c06040523480156200001157600080fd5b5060405162002c2f38038062002c2f8339810160408190526200003491620006c9565b6001600160a01b0382166200005c576040516328b2097760e21b815260040160405180910390fd5b6001600160a01b0381166200008457604051635af9c0d760e11b815260040160405180910390fd5b6001600160a01b03828116608052811660a05260408051600080825260208201909252620000b89161dead918291620000c0565b505062000746565b600054610100900460ff1615808015620000e15750600054600160ff909116105b80620001115750620000fe306200033960201b62000fef1760201c565b15801562000111575060005460ff166001145b6200017a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200019e576000805461ff0019166101001790555b620001a862000348565b620001b385620003b0565b620001be8462000436565b6065805463ffffffff191663ffffffff841617905560005b8351811015620002ea5760006001600160a01b031684828151811062000200576200020062000708565b60200260200101516001600160a01b031614620002d55760016068600086848151811062000232576200023262000708565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555083818151811062000286576200028662000708565b60200260200101516001600160a01b03167ffc7858ed770f3bd9c19525fe1de2c94c7d048128ade2219d82b32d888a45a7d26001604051620002cc911515815260200190565b60405180910390a25b80620002e1816200071e565b915050620001d6565b50801562000332576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b03163b151590565b600054610100900460ff16620003a45760405162461bcd60e51b815260206004820152602b602482015260008051602062002c0f83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000171565b620003ae620004bb565b565b620003ba6200052d565b6001600160a01b038116620004285760405162461bcd60e51b815260206004820152602d60248201527f4f776e61626c654d616e616765643a206e6577206f776e65722069732074686560448201526c207a65726f206164647265737360981b606482015260840162000171565b620004338162000588565b50565b62000440620005da565b6001600160a01b038116620004b05760405162461bcd60e51b815260206004820152602f60248201527f4f776e61626c654d616e616765643a206e6577206d616e61676572206973207460448201526e6865207a65726f206164647265737360881b606482015260840162000171565b620004338162000661565b600054610100900460ff16620005175760405162461bcd60e51b815260206004820152602b602482015260008051602062002c0f83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000171565b620005223362000588565b620003ae3362000661565b6033546001600160a01b03163314620003ae5760405162461bcd60e51b8152602060048201526027602482015260008051602062002bef833981519152604482015266329037bbb732b960c91b606482015260840162000171565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b0316331480620005fe57506034546001600160a01b031633145b620003ae5760405162461bcd60e51b8152602060048201526036602482015260008051602062002bef83398151915260448201527f65206f776e6572206f7220746865206d616e6167657200000000000000000000606482015260840162000171565b603480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c8590600090a35050565b6001600160a01b03811681146200043357600080fd5b60008060408385031215620006dd57600080fd5b8251620006ea81620006b3565b6020840151909250620006fd81620006b3565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200073f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a0516124756200077a6000396000818161027101526114360152600081816102f3015261097201526124756000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806394a277d1116100d8578063d25600561161008c578063e8533e2911610066578063e8533e29146103a6578063e9ed9b64146103c9578063f2fde38b146103dc57600080fd5b8063d25600561461034d578063d5f5058214610380578063e4edf8521461039357600080fd5b806396ce7e96116100bd57806396ce7e96146102ee578063b39dc09d14610315578063bbdc02db1461032857600080fd5b806394a277d1146102d157806394b2822f146102d957600080fd5b806354fd4d501161013a57806382ff53a11161011457806382ff53a11461026c57806386b4ebd3146102935780638da5cb5b146102b357600080fd5b806354fd4d50146102125780636666efdb14610251578063715018a61461026457600080fd5b80630dcaeaf21161016b5780630dcaeaf2146101a45780632712e20d146101c0578063481c6a75146101d357600080fd5b8063089208d8146101875780630ba24fe014610191575b600080fd5b61018f6103ef565b005b61018f61019f366004611bfe565b610403565b6101ad610e1081565b6040519081526020015b60405180910390f35b61018f6101ce366004611d00565b6104b1565b60345473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b7565b604080518082018252600581527f302e362e31000000000000000000000000000000000000000000000000000000602082015290516101b79190611e51565b61018f61025f366004611e64565b6107d8565b61018f6108c8565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6102a1366004611bfe565b60676020526000908152604090205481565b60335473ffffffffffffffffffffffffffffffffffffffff166101ed565b6101ad6108da565b6102e16108e9565b6040516101b79190611e7f565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b61018f610323366004611f22565b6108f5565b6065546103389063ffffffff1681565b60405163ffffffff90911681526020016101b7565b61037061035b366004611bfe565b60666020526000908152604090205460ff1681565b60405190151581526020016101b7565b61037061038e366004611bfe565b610d8c565b61018f6103a1366004611bfe565b610df2565b6103706103b4366004611bfe565b60686020526000908152604090205460ff1681565b61018f6103d7366004611fbc565b610ea9565b61018f6103ea366004611bfe565b610f3b565b6103f761100b565b61040160006110d4565b565b61040b61100b565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260666020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055606790915281205561046c60698261114b565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907fb64c2e472ebdc8f61a76438be3074f3e38569b2ebd8a9cc71dcc9b181defd78e90600090a250565b600054610100900460ff16158080156104d15750600054600160ff909116105b806104eb5750303b1580156104eb575060005460ff166001145b61057c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105da57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105e26112b3565b6105eb85610f3b565b6105f484610df2565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff841617905560005b835181101561076d57600073ffffffffffffffffffffffffffffffffffffffff1684828151811061065a5761065a611ffa565b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461075b5760016068600086848151811061069557610695611ffa565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083818151811061070057610700611ffa565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167ffc7858ed770f3bd9c19525fe1de2c94c7d048128ade2219d82b32d888a45a7d26001604051610752911515815260200190565b60405180910390a25b8061076581612058565b915050610627565b5080156107d157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6107e0611352565b6065805463ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083161790925516600061081e6113f9565b90508061088a576065805463ffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055604080517f27a10cc200000000000000000000000000000000000000000000000000000000815290519081900360040190fd5b60405163ffffffff841681527fde7d61181e5b13fcab68f1d4a0be52854e613272de874356f9d0102594aa4e9b9060200160405180910390a1505050565b6108d0611352565b61040160006115df565b60006108e46113f9565b905090565b60606108e46069611656565b6108fd61100b565b600086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040517fba8055ee0000000000000000000000000000000000000000000000000000000081529495509373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063ba8055ee92506109b2915085908a908a908a908a906004016120d9565b6000604051808303816000875af11580156109d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a17919081019061219e565b905060006103e8826020015167ffffffffffffffff16610a379190612280565b905042610a46610e10836122bb565b11610a7d576040517f696bbf1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428110610ab6576040517fb139189500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060820151511580610aea5750610aea8260600151600081518110610add57610add611ffa565b602002602001015161172b565b15610b21576040517f85269c3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b488260600151600081518110610b3b57610b3b611ffa565b602002602001015161174a565b603014610b81576040517fa24fb87f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610bb48360600151600081518110610b9d57610b9d611ffa565b60200260200101518561178b90919063ffffffff16565b90507f367f1a6e9c31dbb44b449dee0b7384b90775b0bf6bc17b1466423be1ed642d6d8101610c0f576040517fa24fb87f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c288460c00151866117b290919063ffffffff16565b905080516041141580610c95575080600081518110610c4957610c49611ffa565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f040000000000000000000000000000000000000000000000000000000000000014155b15610ccc576040517fa2d0fee800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60406021820181902073ffffffffffffffffffffffffffffffffffffffff811660009081526066602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606790529190912083905580610d3b6069826117d9565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f97110439909bcbb4488918a0cbe54781949ecf5d1415e972bf922a92df93fb3f90600090a250505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526066602052604081205460ff168015610dec5750610dc46113f9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260676020526040902054145b92915050565b610dfa61100b565b73ffffffffffffffffffffffffffffffffffffffff8116610e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f776e61626c654d616e616765643a206e6577206d616e61676572206973207460448201527f6865207a65726f206164647265737300000000000000000000000000000000006064820152608401610573565b610ea6816110d4565b50565b610eb1611352565b73ffffffffffffffffffffffffffffffffffffffff821660008181526068602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ffc7858ed770f3bd9c19525fe1de2c94c7d048128ade2219d82b32d888a45a7d2910160405180910390a25050565b610f43611352565b73ffffffffffffffffffffffffffffffffffffffff8116610fe6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f776e61626c654d616e616765643a206e6577206f776e65722069732074686560448201527f207a65726f2061646472657373000000000000000000000000000000000000006064820152608401610573565b610ea6816115df565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331480611048575060345473ffffffffffffffffffffffffffffffffffffffff1633145b610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4f776e61626c654d616e616765643a2063616c6c6572206973206e6f7420746860448201527f65206f776e6572206f7220746865206d616e61676572000000000000000000006064820152608401610573565b6034805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c8590600090a35050565b63978aab9260045260008281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016111ab5763f5a267f16000526004601cfd5b826111bd5768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff8116806112405760019350848260601c036111fb576001830180548455600284018054909155600090556112aa565b84600184015460601c0361121d576002830180546001850155600090556112aa565b84600284015460601c0361123757600060028401556112aa565b600093506112aa565b8260205284600052604060002080548061125b5750506112aa565b60018360011c03925082600182031461128d578285015460601c8060601b600183038701558060005250806040600020555b5060018260011b17845460601c60601b1784556000815550600193505b50505092915050565b600054610100900460ff1661134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610573565b610401611961565b60335473ffffffffffffffffffffffffffffffffffffffff163314610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f776e61626c654d616e616765643a2063616c6c6572206973206e6f7420746860448201527f65206f776e6572000000000000000000000000000000000000000000000000006064820152608401610573565b6065546040517f1b685b9e00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260009081907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631b685b9e90602401602060405180830381865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b691906122d3565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0183fd44000000000000000000000000000000000000000000000000000000001790529051919250600091829173ffffffffffffffffffffffffffffffffffffffff85169161153891906122f0565b600060405180830381855afa9150503d8060008114611573576040519150601f19603f3d011682016040523d82523d6000602084013e611578565b606091505b509150915081158061158c57508051602014155b156115c3576040517f9fb4826900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808060200190518101906115d7919061230c565b935050505090565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63978aab926004526000818152602481206060915068fbb67fda52d4bfb8bf81548060a01b60a01c6040519450846020018260601c92508383141583028152816116e55782156116e057600191508185015460601c925082156116e0578284141590920260208301525060028381015460601c9182156116e0576003915083831415830260408201525b611715565b600191821c915b82811015611713578581015460601c858114158102600583901b84015293506001016116ec565b505b8186528160051b81016040525050505050919050565b60008160f660ff8216148061174357508060ff1660f7145b9392505050565b600081604060ff8216148061176257508060ff166060145b15611782576117718360a01c90565b67ffffffffffffffff169392505050565b50600092915050565b6000611743605083901c69ffffffffffffffffffff166117aa8461174a565b859190611a0a565b6060611743605083901c69ffffffffffffffffffff166117d18461174a565b859190611a8b565b63978aab9260045260008281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016118395763f5a267f16000526004601cfd5b8261184b5768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff81168260205280611913578160601c8061187e578560601b845560019450506112aa565b85810361188b57506112aa565b600184015460601c806118ac578660601b60018601556001955050506112aa565b8681036118ba5750506112aa565b600285015460601c806118dc578760601b6002870155600196505050506112aa565b8781036118eb575050506112aa565b6000928352604080842060019055918352818320600290558252902060039055506007908117905b846000526040600020805461195757600191821c808301825591945081611943578560601b6003178455506112aa565b8560601b82850155826002018455506112aa565b5050505092915050565b600054610100900460ff166119f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610573565b611a01336115df565b610401336110d4565b8251600090611a1983856122bb565b1115611a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610573565b5091016020012090565b8251606090611a9a83856122bb565b1115611b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e646578206f7574206f6620626f756e6473000000000000000000000000006044820152606401610573565b8167ffffffffffffffff811115611b1b57611b1b611c1b565b6040519080825280601f01601f191660200182016040528015611b45576020820181803683370190505b50905060208082019085850101611b5d828286611b66565b50509392505050565b60208110611b9e5781518352611b7d6020846122bb565b9250611b8a6020836122bb565b9150611b97602082612325565b9050611b66565b8015611bd75760006001611bb3836020612325565b611bbf9061010061245c565b611bc99190612325565b835185518216911916178452505b505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610ea657600080fd5b600060208284031215611c1057600080fd5b813561174381611bdc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715611c6e57611c6e611c1b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cbb57611cbb611c1b565b604052919050565b600067ffffffffffffffff821115611cdd57611cdd611c1b565b5060051b60200190565b803563ffffffff81168114611cfb57600080fd5b919050565b60008060008060808587031215611d1657600080fd5b8435611d2181611bdc565b9350602085810135611d3281611bdc565b9350604086013567ffffffffffffffff811115611d4e57600080fd5b8601601f81018813611d5f57600080fd5b8035611d72611d6d82611cc3565b611c74565b81815260059190911b8201830190838101908a831115611d9157600080fd5b928401925b82841015611db8578335611da981611bdc565b82529284019290840190611d96565b8096505050505050611dcc60608601611ce7565b905092959194509250565b60005b83811015611df2578181015183820152602001611dda565b83811115611e01576000848401525b50505050565b60008151808452611e1f816020860160208601611dd7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006117436020830184611e07565b600060208284031215611e7657600080fd5b61174382611ce7565b6020808252825182820181905260009190848201906040850190845b81811015611ecd57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e9b565b50909695505050505050565b60008083601f840112611eeb57600080fd5b50813567ffffffffffffffff811115611f0357600080fd5b602083019150836020828501011115611f1b57600080fd5b9250929050565b60008060008060008060608789031215611f3b57600080fd5b863567ffffffffffffffff80821115611f5357600080fd5b611f5f8a838b01611ed9565b90985096506020890135915080821115611f7857600080fd5b611f848a838b01611ed9565b90965094506040890135915080821115611f9d57600080fd5b50611faa89828a01611ed9565b979a9699509497509295939492505050565b60008060408385031215611fcf57600080fd5b8235611fda81611bdc565b915060208301358015158114611fef57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361208957612089612029565b5060010190565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6060815260006120ec6060830188611e07565b82810360208401526120ff818789612090565b90508281036040840152612114818587612090565b98975050505050505050565b805167ffffffffffffffff81168114611cfb57600080fd5b600082601f83011261214957600080fd5b81516020612159611d6d83611cc3565b82815260059290921b8401810191818101908684111561217857600080fd5b8286015b84811015612193578051835291830191830161217c565b509695505050505050565b6000602082840312156121b057600080fd5b815167ffffffffffffffff808211156121c857600080fd5b9083019061012082860312156121dd57600080fd5b6121e5611c4a565b825181526121f560208401612120565b60208201526040830151604082015260608301518281111561221657600080fd5b61222287828601612138565b6060830152506080830151608082015260a08301518281111561224457600080fd5b61225087828601612138565b60a08301525060c0838101519082015260e080840151908201526101009283015192810192909252509392505050565b6000826122b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156122ce576122ce612029565b500190565b6000602082840312156122e557600080fd5b815161174381611bdc565b60008251612302818460208701611dd7565b9190910192915050565b60006020828403121561231e57600080fd5b5051919050565b60008282101561233757612337612029565b500390565b600181815b8085111561239557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561237b5761237b612029565b8085161561238857918102915b93841c9390800290612341565b509250929050565b6000826123ac57506001610dec565b816123b957506000610dec565b81600181146123cf57600281146123d9576123f5565b6001915050610dec565b60ff8411156123ea576123ea612029565b50506001821b610dec565b5060208310610133831016604e8410600b8410161715612418575081810a610dec565b612422838361233c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561245457612454612029565b029392505050565b6000611743838361239d56fea164736f6c634300080f000a4f776e61626c654d616e616765643a2063616c6c6572206973206e6f74207468496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206900000000000000000000000047c1ab20fac92c789d9e5708d06641c79b03c46000000000000000000000000043edb88c4b80fdd2adff2412a7bebf9df42cb40e", + "nonce": "0xc", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xfad8a7", + "logs": [ + { + "address": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000007ea56fbd8320f032014c8889c4f6cdc86796db04" + ], + "data": "0x", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "blockTimestamp": "0x6ab54557", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "logIndex": "0x131", + "removed": false + }, + { + "address": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "topics": [ + "0x80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c85", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000007ea56fbd8320f032014c8889c4f6cdc86796db04" + ], + "data": "0x", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "blockTimestamp": "0x6ab54557", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "logIndex": "0x132", + "removed": false + }, + { + "address": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000007ea56fbd8320f032014c8889c4f6cdc86796db04", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "blockTimestamp": "0x6ab54557", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "logIndex": "0x133", + "removed": false + }, + { + "address": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "topics": [ + "0x80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c85", + "0x0000000000000000000000007ea56fbd8320f032014c8889c4f6cdc86796db04", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "blockTimestamp": "0x6ab54557", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "logIndex": "0x134", + "removed": false + }, + { + "address": "0x1d8728cabc8bc022005dd08d02a749b8a32af440", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "blockTimestamp": "0x6ab54557", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "logIndex": "0x135", + "removed": false + } + ], + "logsBloom": "0x00004000000010000200000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000080000000001000000000000000000000000000000000000020000000040000000000800000000000000000000000000000000400000000000000000000004200000040000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000400000000002000000000040000000000000000000000000000000020000000000000000000000000000000000000000000000000000000010000000000", + "type": "0x2", + "transactionHash": "0xd063cb43ea0f95b3af10a585bb9169a82e3654ed7df6acf74a733460d41923b3", + "transactionIndex": "0x65", + "blockHash": "0x18a6df3f5467f846ab4e1c6abe8bb89c86f2588c26743b6ed9e5ca68118edb18", + "blockNumber": "0x18d771f", + "gasUsed": "0x210c9c", + "effectiveGasPrice": "0x78074568", + "from": "0x7ea56fbd8320f032014c8889c4f6cdc86796db04", + "to": null, + "contractAddress": "0x1d8728cabc8bc022005dd08d02a749b8a32af440" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1790264666822, + "chain": 1, + "commit": "9cfab5a" +} \ No newline at end of file From ec00426ef1e27745c18af9699564fdedce6749a2 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 12:36:12 -0400 Subject: [PATCH 07/10] fix(mainnet): assign ProtocolVersions immutables outside if/else Solidity 0.8.15 rejects immutable writes inside a branch, which blocked validation generation. Co-authored-by: Cursor --- .../script/ExecuteCobaltUpgrade.s.sol | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol index b90ccc96d..47ff093bd 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol @@ -178,19 +178,19 @@ contract ExecuteCobaltUpgrade is MultisigScript { protocolVersionsPredeployed = vm.envOr("PROTOCOL_VERSIONS_PREDEPLOYED", false); expectedSystemConfigVersionHash = keccak256(bytes(vm.envString("EXPECTED_SYSTEM_CONFIG_VERSION"))); - - if (protocolVersionsPredeployed) { - protocolVersionsIncidentResponder = address(0); - protocolVersionsCurrentMinimumProtocolVersion = - vm.envOr("PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION", uint256(0)); - protocolVersionsMinimumProtocolVersion = vm.envOr("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION", uint256(0)); - protocolVersionsScheduleIdBefore = IProtocolVersions(protocolVersionsProxy).scheduleId(); - } else { - protocolVersionsIncidentResponder = vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); - protocolVersionsCurrentMinimumProtocolVersion = 0; - protocolVersionsMinimumProtocolVersion = vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); - protocolVersionsScheduleIdBefore = bytes32(0); - + // 0.8.15 rejects immutable writes inside if/else. Each ternary is one assignment. + protocolVersionsIncidentResponder = + protocolVersionsPredeployed ? address(0) : vm.envAddress("PROTOCOL_VERSIONS_INCIDENT_RESPONDER"); + protocolVersionsCurrentMinimumProtocolVersion = protocolVersionsPredeployed + ? vm.envOr("PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION", uint256(0)) + : 0; + protocolVersionsMinimumProtocolVersion = protocolVersionsPredeployed + ? vm.envOr("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION", uint256(0)) + : vm.envUint("PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION"); + protocolVersionsScheduleIdBefore = + protocolVersionsPredeployed ? IProtocolVersions(protocolVersionsProxy).scheduleId() : bytes32(0); + + if (!protocolVersionsPredeployed) { uint256[] memory schedule = vm.envUint("PROTOCOL_VERSIONS_INITIAL_SCHEDULE", ","); for (uint256 i = 0; i < schedule.length; i++) { require(schedule[i] <= type(uint64).max, "schedule timestamp exceeds uint64"); From 6a406315a2d3b614e918e1a3ca9e6cc1539eee34 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 12:40:32 -0400 Subject: [PATCH 08/10] chore(mainnet): add Cobalt signer validations Co-authored-by: Cursor --- .../mainnet/validations/base-signer.json | 155 ++++++++++++++++++ .../validations/security-council-signer.json | 155 ++++++++++++++++++ 2 files changed, 310 insertions(+) create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json new file mode 100644 index 000000000..333586cea --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json @@ -0,0 +1,155 @@ +{ + "cmd": "PROXY_ADMIN_OWNER=0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c L1_PROXY_ADMIN=0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E OPTIMISM_PORTAL=0x49048044D57e1C92A77f79988d21Fa8fAF74E97e SYSTEM_CONFIG=0x73a79Fab69143498Ed3712e519A88a918e1f4072 DISPUTE_GAME_FACTORY_PROXY=0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e OLD_OPTIMISM_PORTAL_IMPL=0x66d94Ee8f529B683eD6013729784e8Bb44697a64 OLD_SYSTEM_CONFIG_IMPL=0x0507aAa21C678976fCdC7e804836ACD6Ebc17A44 OLD_DISPUTE_GAME_FACTORY_IMPL=0x468c2345D1D409D5B0F2F8be4Ae2082150Cc1A0c OLD_AGGREGATE_VERIFIER=0xeE303bA054c5F1E14A8EF87f1C7E285af45A1ba2 NEW_OPTIMISM_PORTAL_IMPL=0xcA5ca23502eFf4254bc11Ac0bEC4Dbb7495Bd06C NEW_SYSTEM_CONFIG_IMPL=0x56ca4f4F5Ba9B42d360B48429e8C4a60C5A0795D NEW_DISPUTE_GAME_FACTORY_IMPL=0x94eab8f73fd83407D26C006D159923760D483029 NEW_AGGREGATE_VERIFIER=0xeF9eCeA15265321753047EBF7D54C858D53cB94f PROTOCOL_VERSIONS_PROXY=0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095 PROTOCOL_VERSIONS_IMPL=0xE01aF68e2cb6c4335b17279393E0D60f6F0406f2 PROTOCOL_VERSIONS_PREDEPLOYED=true EXPECTED_SYSTEM_CONFIG_VERSION=3.14.0 PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313896972091392 TEE_PROVER_REGISTRY_PROXY=0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA TEE_VERIFIER=0x1FbA0C57b07Af804A9717e51dec9CC27FBC12228 PROPOSER=0xc1366Fabe614d42D367A1ecE61821238A1d31cF5 CHALLENGER=0x819501cdA743a606A93dbEF254FE0D263Ce7d102 CERT_MANAGER_OWNER=0x9855054731540A48b28990B63DcF4f33d8AE46A1 CERT_MANAGER_REVOKER=0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04 OLD_TEE_PROVER_REGISTRY_IMPL=0xEab9B34bDd26aD451b381b0934a30fAA6Ed5e316 NEW_TEE_PROVER_REGISTRY_IMPL=0x1d8728CabC8BC022005dd08D02a749B8a32Af440 OLD_NITRO_VERIFIER=0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb NEW_P384_VERIFIER=0xe0aa6868e14300355001130C6DC29f2f4467D86c NEW_CERT_MANAGER=0x7227d8C477CD0A9EC1446A19b1FCf940Ba3Fba17 NEW_NITRO_VALIDATOR=0x47C1ab20fac92c789d9e5708D06641c79b03C460 mise exec -- forge script --rpc-url https://eth-mainnet.public.blastapi.io tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol:ExecuteCobaltUpgrade --sig sign(address[]) [0x9855054731540A48b28990B63DcF4f33d8AE46A1] --sender 0xf9e320f3dA12E68af219d9E2A490Dd649f6B177c", + "ledgerId": 0, + "rpcUrl": "https://eth-mainnet.public.blastapi.io", + "expectedDomainAndMessageHashes": { + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "domainHash": "0x88aac3dc27cc1618ec43a87b3df21482acd24d172027ba3fbb5a5e625d895a0b", + "messageHash": "0x5b20c672184484d8c3303c7bfffd24109a2e2a29f40b263ad3a2fcc13083440b" + }, + "stateOverrides": [ + { + "name": "Proxy Admin Owner - Mainnet", + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + } + ] + }, + { + "name": "CB Coordinator Safe - Mainnet", + "address": "0x9855054731540A48b28990B63DcF4f33d8AE46A1", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + }, + { + "key": "0xe7835f273e761b0504afa4eef4c9d65f80e0cf2b7651a7af20a5899a6b4cc714", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed.", + "allowDifference": false + } + ] + } + ], + "stateChanges": [ + { + "name": "<>", + "address": "0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000eab9b34bdd26ad451b381b0934a30faa6ed5e316", + "after": "0x0000000000000000000000001d8728cabc8bc022005dd08d02a749b8a32af440", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Dispute Game Factory Proxy - Mainnet", + "address": "0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e", + "changes": [ + { + "key": "0x32912047a4c082de3e601c4b381c2aa6252270818a4be33442b17fb41b6cf7d6", + "before": "0x000000000000000000000000ee303ba054c5f1e14a8ef87f1c7e285af45a1ba2", + "after": "0x000000000000000000000000ef9ecea15265321753047ebf7d54c858d53cb94f", + "description": "Updates the `X` implementation address.", + "allowDifference": false + }, + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000468c2345d1d409d5b0f2f8be4ae2082150cc1a0c", + "after": "0x00000000000000000000000094eab8f73fd83407d26c006d159923760d483029", + "description": "Update address of DisputeGameFactory to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "OptimismPortal - Mainnet", + "address": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x00000000000000000000000066d94ee8f529b683ed6013729784e8bb44697a64", + "after": "0x000000000000000000000000ca5ca23502eff4254bc11ac0bec4dbb7495bd06c", + "description": "Update address of OptimismPortal to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "System Config - Mainnet", + "address": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000000507aaa21c678976fcdc7e804836acd6ebc17a44", + "after": "0x00000000000000000000000056ca4f4f5ba9b42d360b48429e8c4a60c5a0795d", + "description": "Update address of SystemConfig to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "<>", + "address": "0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "before": "0x0000000000000000000000000000000000000001000000040000000100000000", + "after": "0x0000000000000000000000000000000000000001000000040000000200000000", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Proxy Admin Owner - Mainnet", + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000014", + "after": "0x0000000000000000000000000000000000000000000000000000000000000015", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x9f9bc993792815184f8d8acd368f7b5f75268e4d554cb184fd851a7e56448c4d", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "CB Coordinator Safe - Mainnet", + "address": "0x9855054731540A48b28990B63DcF4f33d8AE46A1", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000022", + "after": "0x0000000000000000000000000000000000000000000000000000000000000023", + "description": "Increments the nonce", + "allowDifference": false + } + ] + } + ], + "balanceChanges": [], + "taskOriginConfig": { + "taskCreator": { + "commonName": "thanh.trinh@coinbase.com" + } + } +} diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json new file mode 100644 index 000000000..e87372ade --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json @@ -0,0 +1,155 @@ +{ + "cmd": "PROXY_ADMIN_OWNER=0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c L1_PROXY_ADMIN=0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E OPTIMISM_PORTAL=0x49048044D57e1C92A77f79988d21Fa8fAF74E97e SYSTEM_CONFIG=0x73a79Fab69143498Ed3712e519A88a918e1f4072 DISPUTE_GAME_FACTORY_PROXY=0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e OLD_OPTIMISM_PORTAL_IMPL=0x66d94Ee8f529B683eD6013729784e8Bb44697a64 OLD_SYSTEM_CONFIG_IMPL=0x0507aAa21C678976fCdC7e804836ACD6Ebc17A44 OLD_DISPUTE_GAME_FACTORY_IMPL=0x468c2345D1D409D5B0F2F8be4Ae2082150Cc1A0c OLD_AGGREGATE_VERIFIER=0xeE303bA054c5F1E14A8EF87f1C7E285af45A1ba2 NEW_OPTIMISM_PORTAL_IMPL=0xcA5ca23502eFf4254bc11Ac0bEC4Dbb7495Bd06C NEW_SYSTEM_CONFIG_IMPL=0x56ca4f4F5Ba9B42d360B48429e8C4a60C5A0795D NEW_DISPUTE_GAME_FACTORY_IMPL=0x94eab8f73fd83407D26C006D159923760D483029 NEW_AGGREGATE_VERIFIER=0xeF9eCeA15265321753047EBF7D54C858D53cB94f PROTOCOL_VERSIONS_PROXY=0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095 PROTOCOL_VERSIONS_IMPL=0xE01aF68e2cb6c4335b17279393E0D60f6F0406f2 PROTOCOL_VERSIONS_PREDEPLOYED=true EXPECTED_SYSTEM_CONFIG_VERSION=3.14.0 PROTOCOL_VERSIONS_CURRENT_MINIMUM_PROTOCOL_VERSION=79228162588051313892677124096 PROTOCOL_VERSIONS_MINIMUM_PROTOCOL_VERSION=79228162588051313896972091392 TEE_PROVER_REGISTRY_PROXY=0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA TEE_VERIFIER=0x1FbA0C57b07Af804A9717e51dec9CC27FBC12228 PROPOSER=0xc1366Fabe614d42D367A1ecE61821238A1d31cF5 CHALLENGER=0x819501cdA743a606A93dbEF254FE0D263Ce7d102 CERT_MANAGER_OWNER=0x9855054731540A48b28990B63DcF4f33d8AE46A1 CERT_MANAGER_REVOKER=0xd87488Dbb5b6F47cc6c15Dd95Bb60c83D3031b04 OLD_TEE_PROVER_REGISTRY_IMPL=0xEab9B34bDd26aD451b381b0934a30fAA6Ed5e316 NEW_TEE_PROVER_REGISTRY_IMPL=0x1d8728CabC8BC022005dd08D02a749B8a32Af440 OLD_NITRO_VERIFIER=0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb NEW_P384_VERIFIER=0xe0aa6868e14300355001130C6DC29f2f4467D86c NEW_CERT_MANAGER=0x7227d8C477CD0A9EC1446A19b1FCf940Ba3Fba17 NEW_NITRO_VALIDATOR=0x47C1ab20fac92c789d9e5708D06641c79b03C460 mise exec -- forge script --rpc-url https://eth-mainnet.public.blastapi.io tasks/2026-09-14-cobalt-upgrade/script/ExecuteCobaltUpgrade.s.sol:ExecuteCobaltUpgrade --sig sign(address[]) [0x20AcF55A3DCfe07fC4cecaCFa1628F788EC8A4Dd] --sender 0xbDE1845c879942fC326F247Ad708677733Dd5594", + "ledgerId": 0, + "rpcUrl": "https://eth-mainnet.public.blastapi.io", + "expectedDomainAndMessageHashes": { + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "domainHash": "0x1fbfdc61ceb715f63cb17c56922b88c3a980f1d83873df2b9325a579753e8aa3", + "messageHash": "0x23e2dd86bacb146361279288fc59b0d1b48697862d57555b9eb44f293013a5f1" + }, + "stateOverrides": [ + { + "name": "Security Council Safe - Mainnet", + "address": "0x20AcF55A3DCfe07fC4cecaCFa1628F788EC8A4Dd", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + }, + { + "key": "0x20786a574c2083d053d6a8a57ea9f8c8be9bb7a4194530da5dcc3df58019cc8c", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed.", + "allowDifference": false + } + ] + }, + { + "name": "Proxy Admin Owner - Mainnet", + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + } + ] + } + ], + "stateChanges": [ + { + "name": "<>", + "address": "0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000eab9b34bdd26ad451b381b0934a30faa6ed5e316", + "after": "0x0000000000000000000000001d8728cabc8bc022005dd08d02a749b8a32af440", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Security Council Safe - Mainnet", + "address": "0x20AcF55A3DCfe07fC4cecaCFa1628F788EC8A4Dd", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x000000000000000000000000000000000000000000000000000000000000000e", + "after": "0x000000000000000000000000000000000000000000000000000000000000000f", + "description": "Increments the nonce", + "allowDifference": false + } + ] + }, + { + "name": "Dispute Game Factory Proxy - Mainnet", + "address": "0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e", + "changes": [ + { + "key": "0x32912047a4c082de3e601c4b381c2aa6252270818a4be33442b17fb41b6cf7d6", + "before": "0x000000000000000000000000ee303ba054c5f1e14a8ef87f1c7e285af45a1ba2", + "after": "0x000000000000000000000000ef9ecea15265321753047ebf7d54c858d53cb94f", + "description": "Updates the `X` implementation address.", + "allowDifference": false + }, + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x000000000000000000000000468c2345d1d409d5b0f2f8be4ae2082150cc1a0c", + "after": "0x00000000000000000000000094eab8f73fd83407d26c006d159923760d483029", + "description": "Update address of DisputeGameFactory to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "OptimismPortal - Mainnet", + "address": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x00000000000000000000000066d94ee8f529b683ed6013729784e8bb44697a64", + "after": "0x000000000000000000000000ca5ca23502eff4254bc11ac0bec4dbb7495bd06c", + "description": "Update address of OptimismPortal to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "System Config - Mainnet", + "address": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", + "changes": [ + { + "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "before": "0x0000000000000000000000000507aaa21c678976fcdc7e804836acd6ebc17a44", + "after": "0x00000000000000000000000056ca4f4f5ba9b42d360b48429e8c4a60c5a0795d", + "description": "Update address of SystemConfig to new implementation.", + "allowDifference": false + } + ] + }, + { + "name": "<>", + "address": "0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000003", + "before": "0x0000000000000000000000000000000000000001000000040000000100000000", + "after": "0x0000000000000000000000000000000000000001000000040000000200000000", + "description": "<>", + "allowDifference": false + } + ] + }, + { + "name": "Proxy Admin Owner - Mainnet", + "address": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000014", + "after": "0x0000000000000000000000000000000000000000000000000000000000000015", + "description": "Increments the nonce", + "allowDifference": false + }, + { + "key": "0x66ea9fcc65893c116823db4ec39258fb168ef44cd8b5fa06701510e15911738b", + "before": "0x0000000000000000000000000000000000000000000000000000000000000000", + "after": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "<>", + "allowDifference": false + } + ] + } + ], + "balanceChanges": [], + "taskOriginConfig": { + "taskCreator": { + "commonName": "thanh.trinh@coinbase.com" + } + } +} From 98d29853ddb8caf36f68ff0fbebc30f9ad6241b4 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 15:43:12 -0400 Subject: [PATCH 09/10] docs(mainnet): annotate Cobalt validation state changes Co-authored-by: Codex --- .../tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md | 2 ++ .../config/mainnet/validations/base-signer.json | 12 ++++++------ .../mainnet/validations/security-council-signer.json | 12 ++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md index e8383e0af..4b3ea94bc 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/FACILITATOR.md @@ -128,6 +128,8 @@ make TASK_NETWORK= gen-validation-sc ``` These write `config//validations/base-signer.json` and `security-council-signer.json`. +Replace any generated `<>` or `<>` placeholders with reviewed contract names +and state-change descriptions before committing or generating task-origin signatures. For any non-mainnet rollout, remove each generated `taskOriginConfig` and add this root field: ```json diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json index 333586cea..08383a874 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/base-signer.json @@ -41,14 +41,14 @@ ], "stateChanges": [ { - "name": "<>", + "name": "TEEProverRegistry - Mainnet", "address": "0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA", "changes": [ { "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", "before": "0x000000000000000000000000eab9b34bdd26ad451b381b0934a30faa6ed5e316", "after": "0x0000000000000000000000001d8728cabc8bc022005dd08d02a749b8a32af440", - "description": "<>", + "description": "Upgrades TEEProverRegistry from version 0.5.0 using the legacy Nitro verifier to version 0.6.1 using the hinted Nitro validator. Owner, manager, signers, per-signer image hashes, proposers and game type remain unchanged.", "allowDifference": false } ] @@ -61,7 +61,7 @@ "key": "0x32912047a4c082de3e601c4b381c2aa6252270818a4be33442b17fb41b6cf7d6", "before": "0x000000000000000000000000ee303ba054c5f1e14a8ef87f1c7e285af45a1ba2", "after": "0x000000000000000000000000ef9ecea15265321753047ebf7d54c858d53cb94f", - "description": "Updates the `X` implementation address.", + "description": "Sets gameImpls[621] to the redeployed AggregateVerifier (version 0.2.0), replacing the previous verifier. The new verifier is bound to the existing ProtocolVersions registry and carries the v1.4.2 Cobalt proof hashes.", "allowDifference": false }, { @@ -100,14 +100,14 @@ ] }, { - "name": "<>", + "name": "ProtocolVersions - Mainnet", "address": "0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095", "changes": [ { "key": "0x0000000000000000000000000000000000000000000000000000000000000003", "before": "0x0000000000000000000000000000000000000001000000040000000100000000", "after": "0x0000000000000000000000000000000000000001000000040000000200000000", - "description": "<>", + "description": "Raises minimumProtocolVersion from v1.4.1 to v1.4.2. The format packs the low 16 bytes as major || minor || patch || pre-release, four bytes each, so v1.4.2 is 0x00000001000000040000000200000000 (79228162588051313896972091392).", "allowDifference": false } ] @@ -127,7 +127,7 @@ "key": "0x9f9bc993792815184f8d8acd368f7b5f75268e4d554cb184fd851a7e56448c4d", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Records the nested Safe approval of the Cobalt and TEE upgrade transaction hash from the Coinbase signer Safe.", "allowDifference": false } ] diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json index e87372ade..870125481 100644 --- a/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/config/mainnet/validations/security-council-signer.json @@ -41,14 +41,14 @@ ], "stateChanges": [ { - "name": "<>", + "name": "TEEProverRegistry - Mainnet", "address": "0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA", "changes": [ { "key": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", "before": "0x000000000000000000000000eab9b34bdd26ad451b381b0934a30faa6ed5e316", "after": "0x0000000000000000000000001d8728cabc8bc022005dd08d02a749b8a32af440", - "description": "<>", + "description": "Upgrades TEEProverRegistry from version 0.5.0 using the legacy Nitro verifier to version 0.6.1 using the hinted Nitro validator. Owner, manager, signers, per-signer image hashes, proposers and game type remain unchanged.", "allowDifference": false } ] @@ -74,7 +74,7 @@ "key": "0x32912047a4c082de3e601c4b381c2aa6252270818a4be33442b17fb41b6cf7d6", "before": "0x000000000000000000000000ee303ba054c5f1e14a8ef87f1c7e285af45a1ba2", "after": "0x000000000000000000000000ef9ecea15265321753047ebf7d54c858d53cb94f", - "description": "Updates the `X` implementation address.", + "description": "Sets gameImpls[621] to the redeployed AggregateVerifier (version 0.2.0), replacing the previous verifier. The new verifier is bound to the existing ProtocolVersions registry and carries the v1.4.2 Cobalt proof hashes.", "allowDifference": false }, { @@ -113,14 +113,14 @@ ] }, { - "name": "<>", + "name": "ProtocolVersions - Mainnet", "address": "0x7480Afc8D99a5c645c247dB5A1e4a4f440e6e095", "changes": [ { "key": "0x0000000000000000000000000000000000000000000000000000000000000003", "before": "0x0000000000000000000000000000000000000001000000040000000100000000", "after": "0x0000000000000000000000000000000000000001000000040000000200000000", - "description": "<>", + "description": "Raises minimumProtocolVersion from v1.4.1 to v1.4.2. The format packs the low 16 bytes as major || minor || patch || pre-release, four bytes each, so v1.4.2 is 0x00000001000000040000000200000000 (79228162588051313896972091392).", "allowDifference": false } ] @@ -140,7 +140,7 @@ "key": "0x66ea9fcc65893c116823db4ec39258fb168ef44cd8b5fa06701510e15911738b", "before": "0x0000000000000000000000000000000000000000000000000000000000000000", "after": "0x0000000000000000000000000000000000000000000000000000000000000001", - "description": "<>", + "description": "Records the nested Safe approval of the Cobalt and TEE upgrade transaction hash from the Security Council signer Safe.", "allowDifference": false } ] From c449135af4c5b1c950d4ba511a74487c5d7de673 Mon Sep 17 00:00:00 2001 From: Thanh Trinh Date: Thu, 24 Sep 2026 21:31:42 -0400 Subject: [PATCH 10/10] chore(mainnet): add Cobalt task-origin signatures Co-authored-by: Cursor --- .../mainnet/base-facilitator-signature.json | 35 +++++++++++++++++++ .../base-sc-facilitator-signature.json | 35 +++++++++++++++++++ .../signatures/mainnet/creator-signature.json | 35 +++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-facilitator-signature.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-sc-facilitator-signature.json create mode 100644 active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/creator-signature.json diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-facilitator-signature.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-facilitator-signature.json new file mode 100644 index 000000000..ed86a4481 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-facilitator-signature.json @@ -0,0 +1,35 @@ +{ + "mediaType": "application/vnd.dev.sigstore.bundle+json;version=0.2", + "verificationMaterial": { + "x509CertificateChain": { + "certificates": [ + { + "rawBytes": "MIIEODCCAiCgAwIBAgIUVWeuHH6yZg9JHAVq7reOdMahL2IwDQYJKoZIhvcNAQENBQAwgY8xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxETAPBgNVBAsTCFNlY3VyaXR5MTUwMwYDVQQDEyx1cy1lYXN0LTEucHJvZHVjdGlvbi5pbmZyYXN0cnVjdHVyZS5jYmhxLm5ldDAeFw0yNjA5MjQyMDM2MjZaFw0yNjA5MjUyMDM2MjZaMFoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxEzARBgNVBAsTCnByb2R1Y3Rpb24wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAR/k93c0BBT48BfPh32YnvDOq3ZwPCWfPI8uAtjQgGgQTQoBZfp0G/dzwRu+IoQFASGMmCgxGbCGUTzXBPazigFO5N8FZfArqn+bdzQx+gVQ1+CwPgaMhj2Lj1kPvIQKfGjbjBsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBSAWwKLfxUh+f4uUKzJ3ujAskDj2zAkBgNVHREEHTAbhhlsZGFwOi8vL2Jhc2UtZmFjaWxpdGF0b3JzMA0GCSqGSIb3DQEBDQUAA4ICAQAzHxaeEKDKWebvV6pGTIzrmqODaOzMGbRTUzs01Rl937jpbjwfeBwCibAz7GviA5GYAGKQjlNeu1uIodZUeIXL9lfSmdtrLvyB2gx46CldNMa6FfT8MGSo99vrP+7hPYR5R5tquy8/Edy4TnvPxQUUsF0zA9IJfmWLckFbFaj9l3MdzCcD6ygOjkU8nR/H4UPWoutAAjHFZ8HXCb218VJomX7r2TmUosylTOaECiFfoxMKz8bv+AOOxitg3kG3ZzhqUky/iM/2HjH7tfX+QEt1O/+8mG5PGwtgMItH8UPWCNJySwS8ophFLOrPP/+Ka9jtuvV4G9RP2aVjdjB2l8x5QyNNpiC1bUOsXvJxZ2+sQra+VN++gOm/cQ9gm9EUsi9yKTXckjq7W8Q7hQGiGZJBsGRQhVYfDle7/4PSpkh923y2+nMKhII9g5FkntuyTLjEeHnmnx/JWIn4iSSlpUJQKxa3nhW86Gft2B/SqUvQxZOBXay0+t4Fz4mIOE2Fc9TvKHwISg1BMyO90noq50vUphbMfQnQHrLXu2RKuZZfDQ2fdJ/GqA7JoNTIKfg8pUb27RkjVJz5pBdDhKj4ULri03ULNwbctP4TDpD9q1xgihd7PjfpczQc/JZ+mTBUNu2zi5WrRCGxpEDKrSWO2/yyiD928Yg3cw+Lj6qTpz6+uA==" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + } + ] + }, + "timestampVerificationData": { + "rfc3161Timestamps": [ + { + "signedTimestamp": "MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgVRbHA45S0+jRfTtCbxYBWmDjs/rdHEgq58Hb6VYm7XwCFQCIxM4tUZno+srtQE9fSnO7KsFl7RgPMjAyNjA5MjQyMDM2MjdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkyNDIwMzYyN1owLwYJKoZIhvcNAQkEMSIEIOu1lU1umHKIrwqukrgQee5HgXzaENL26/jt6OEmTWBZMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMFWvAZLdCHh4AH3yfWSKwDHNm/OgSNOBX4UiM4RJwXkoQCZ5/FN601gGg26yCQdxagIwYW9VQgSLRLLQXDf2GWYZ2/7QC9ZeEzKoTAufoxTf8Vuu7U6T8FaUiZYz3H8Bmpws" + } + ] + } + }, + "messageSignature": { + "messageDigest": { + "algorithm": "SHA2_384", + "digest": "EWPWSavB9A80LrrvPyh06innnC5o1kjTspX2FAVu4NRjSNz1V/kfz/6zeLNFmuSx" + }, + "signature": "MGQCMGQOirZhHipS0Kg8FMcskruveoTF59P2OjPRAaRX+wbyconSU/MmoaBC1cUyDdoa/QIwRlf7XvWJt20PgZKWZc4lTmooskIQJRfaKbvNiyb71pp4ARl26P7oiPwFHMjHmaAU" + } + } \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-sc-facilitator-signature.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-sc-facilitator-signature.json new file mode 100644 index 000000000..bd08a5c31 --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/base-sc-facilitator-signature.json @@ -0,0 +1,35 @@ +{ + "mediaType": "application/vnd.dev.sigstore.bundle+json;version=0.2", + "verificationMaterial": { + "x509CertificateChain": { + "certificates": [ + { + "rawBytes": "MIIEOzCCAiOgAwIBAgIUY1RSNBZ3WLEvyzXN86sNLiYDawMwDQYJKoZIhvcNAQENBQAwgY8xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxETAPBgNVBAsTCFNlY3VyaXR5MTUwMwYDVQQDEyx1cy1lYXN0LTEucHJvZHVjdGlvbi5pbmZyYXN0cnVjdHVyZS5jYmhxLm5ldDAeFw0yNjA5MjUwMDQzMjZaFw0yNjA5MjYwMDQzMjZaMFoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxEzARBgNVBAsTCnByb2R1Y3Rpb24wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAShDFDkfJjm8qi+5E86uKm835MR56s8mvTS/vuE49oBZ+gohx3RfIBPXD5qsSikXOQ0D17FO9R4GQmaTroHgwakELUXGnhyeEDtaB8L51S/lDszlaOs6QrbTzJM0QEceTujcTBvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBRwiBekea0mQePeKCcHrIClMkvsOjAnBgNVHREEIDAehhxsZGFwOi8vL2Jhc2Utc2MtZmFjaWxpdGF0b3JzMA0GCSqGSIb3DQEBDQUAA4ICAQAo4PmEm8v+kXLUwM8mLkax5edJtFQBVTWAtsOQVFe7oH9yUMMEqMgvBQ+IojoOHZpIAvJEHuHG5jrk0TY9bGXs43PacHOfLkiUKckZKBe+o6S9E6F7hyKrbigtuzMsVPDCjMvfuNncTDYK7QdGjqR33bIj9zDZskdYCGhcwXiu/75jNkgulZ+39WQvKH2axJGOz1piiZNWjTlfcUNxyCISEsN6tXtbGCMW+8pkpf2EuGtQoslrnrXTZvZFSLmomkWqZlbj/uvfrHLWypV58giFtJja3jvfi5hNpeSGAI3Jd990ihuOkj8aNYhX2yF84IMb8GLt2AOOLPjqTiLPk82YRioaczcj8UU5IsSoMs5ryt0RvdBNRotzMPCuz3QFqw07Nxqk9yOam9y4iBbjKu7uBiFDVKKSC1i5ZYPR9bhFdNM+5M9VR3/QktGywLxSFCBWgjLmzAfXmhWJ1+lrL1QhmD2IJQeCNqM3v/w4SGx8lUQwsNvnDQb92bULj5dNM5XQjhih5kjs7MfGoa8Tb7r8xvyw4OdV9Ld7nXhcBStCtc1CXjoDNFbBeac8dIs3+sdbXIfdiNZaGqkSo757rbnBOcdcmWlv1M4g+diV/M549u4CBZLa87FqQ4CHA/xlxueOQB4fMCum16EC9jX+uSdcp2miP2E9gxj8Ke1n7U+9+Q==" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + } + ] + }, + "timestampVerificationData": { + "rfc3161Timestamps": [ + { + "signedTimestamp": "MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgGx7w6ethd62fAhhsQ/efhGy5gyRwvRCXoeX+HXlQ/kkCFQDywzL9fziW+veIhm7N7OMSxre2QBgPMjAyNjA5MjUwMDQzMjdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkyNTAwNDMyN1owLwYJKoZIhvcNAQkEMSIEIHKpBpeQYAqKbwvmFnx/Zy+WmQ0D6PLocJUei5hQ/u+gMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQDVHk/Ke/hEKHDxi5D42ol1MxuZRh6Fr/1SqPC8i9dnoI8L7KHazkOG1fv37O5OZb8CMEoiiYUE4/sedNLHQdzZjPF6+xmvb8pq1vd4v56uf3ITZRDV2f8xQna4XaRHpQabzA==" + } + ] + } + }, + "messageSignature": { + "messageDigest": { + "algorithm": "SHA2_384", + "digest": "EWPWSavB9A80LrrvPyh06innnC5o1kjTspX2FAVu4NRjSNz1V/kfz/6zeLNFmuSx" + }, + "signature": "MGUCMQC8ksrBd57g/CHTf1qJW9bW799AXmBvI00GRH/zIz3/QIwdHlNbR7h2NfhqSSZHrE8CMDxlfrRtt5/GzazCtKHEfjfTgpPmyjOCsqglHNObcDrg0iakW+V9VjGwNkkeNrykmQ==" + } + } \ No newline at end of file diff --git a/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/creator-signature.json b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/creator-signature.json new file mode 100644 index 000000000..b32f5d8ea --- /dev/null +++ b/active/evm/tasks/2026-09-14-cobalt-upgrade/signatures/mainnet/creator-signature.json @@ -0,0 +1,35 @@ +{ + "mediaType": "application/vnd.dev.sigstore.bundle+json;version=0.2", + "verificationMaterial": { + "x509CertificateChain": { + "certificates": [ + { + "rawBytes": "MIIEPzCCAiegAwIBAgIUNw/Aa4ORU9BJxWyWAuqlprNgusMwDQYJKoZIhvcNAQENBQAwgY8xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxETAPBgNVBAsTCFNlY3VyaXR5MTUwMwYDVQQDEyx1cy1lYXN0LTEucHJvZHVjdGlvbi5pbmZyYXN0cnVjdHVyZS5jYmhxLm5ldDAeFw0yNjA5MjUwMTExMTZaFw0yNjA5MjYwMTExMTZaMFoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzERMA8GA1UEChMIQ29pbmJhc2UxEzARBgNVBAsTCnByb2R1Y3Rpb24wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARig96MM/5hlS6Z0bXgyv/zSTGPHvJEdWevdGSba+T1f+aWSq6PrI+5VjNxDE+IxCWwrK9SGGiTkl3p6Cp2gM+jpZSd3afxLPlgN+FEdITcvrICdXVmUsCOU8sxBaeHPHqjdTBzMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBRwiBekea0mQePeKCcHrIClMkvsOjArBgNVHREEJDAihiB1c2VyOi8vL3RoYW5oLnRyaW5oQGNvaW5iYXNlLmNvbTANBgkqhkiG9w0BAQ0FAAOCAgEAJOss2mMFX1DP9Jo5JQSEKNMDK9u7+ylHGYt0odn/vpvJAsSvxEBAQ/Du+bMIO6V7eyUQCA4CUVHHlpGfo9uvP6jGGcMUGLTChY0xWhARX9GpY+ctYT2rQZ2gkzzfNwiyRH1sWRmX2t86y903yxcEiVSoVgb0f1NZzQfRWOxuLKbMWKeiTOZrHjIKvwiAOvsp5QzlrCwY1/R0qcB8c6V6JWLICbm0nDrRLAkJTLTTLRdaBVu6EciwBPc4mtRfBQ4AwZUqU7MleWZDXyA0yGICEWWIUxS425LoJ3ggVyLjEZHb2X1grFRnsbE72bHqNnU582Gv1Jf6/C3Idb7JfJLCbPoYEIPewVHn+PG91ec+ZajF+kM15YWNToTkVM50WQcoSvSC546oAOtBL9sL+bCaKcRyedXyIbP+Qkc/No0REakWt9HMYAG501NwjS9svOLlT5nhICBZHkzGjD+hSqo4Djcr7NAFD9pPTcKU2EZnwoeqPNtcXiYnD4A1cxC2eNyvGrtFR8wawii46sx7hJI+NDtC0Hnc4JH8qbLtdznRmqjH0kBGeeQfaJL3vEX8IPQrDdRTLWXkxY7JmoH5SNwNeaJYis+Dbyn2zIo//RgGQnzmcHQUlDjvWu6g7Q1/QHaXPW421NE9arMR1Aeojwhaq9MZQrOWcymT3y59m+bAcUE=" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + }, + { + "rawBytes": "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" + } + ] + }, + "timestampVerificationData": { + "rfc3161Timestamps": [ + { + "signedTimestamp": "MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgKpsECtw87BBcKjHrPItiLwAwy1JABxolRKv6VnP8b1YCFQCoTAGdJDstkDg2Z84c3nCOD0UPUxgPMjAyNjA5MjUwMTExMTdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkyNTAxMTExN1owLwYJKoZIhvcNAQkEMSIEIGHwKfUQJcUjP/wrrQjCtQgWI/SMarghBbpusSWR6WiZMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQDGfdtaFhPNmkwgyfvQsOEtSOJENBfsvmpzjdTIkgNmKcj/7x0FHf79E3LJ2c6Rx9cCMQClI+phjv3Mfso4QNcfbc9ArVc1b3lQopigIiBvPJQsn4Lht1yfwd9SKSwIXs9zEhY=" + } + ] + } + }, + "messageSignature": { + "messageDigest": { + "algorithm": "SHA2_384", + "digest": "EWPWSavB9A80LrrvPyh06innnC5o1kjTspX2FAVu4NRjSNz1V/kfz/6zeLNFmuSx" + }, + "signature": "MGUCMHYzYlQ2pffKP4PvdjtqwG0ckyeIXnx7cUXfvY9HsXq6x4TX90/8SLc6YE9WmJM/YwIxALuxUmAC6NABi8dojoXgCA4J5ks2ONpuEwBscNvZ0UA6RuCHISdbsYcmasv/FCnnIA==" + } +} \ No newline at end of file