From 77cd6a70ad3cb58b86f39eeeb3ef60fa7770f279 Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Thu, 21 Sep 2023 14:07:12 +0200 Subject: [PATCH 1/8] Add sanity check that inbox position did indeed move forward --- contracts/src/rollup/RollupCore.sol | 2 ++ contracts/test/Rollup.t.sol | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/src/rollup/RollupCore.sol b/contracts/src/rollup/RollupCore.sol index 7ee83850d..6f1ed186b 100644 --- a/contracts/src/rollup/RollupCore.sol +++ b/contracts/src/rollup/RollupCore.sol @@ -453,6 +453,8 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { } else { nextInboxPosition = currentInboxPosition; } + // sanity check that the next inbox position did indeed move forward due to the code above + require(assertion.beforeStateData.configData.nextInboxPosition > prevInboxPosition, "NEXT_INBOX_BACKWARDS"); // only the genesis assertion processes no messages, and that assertion is created // when we initialize this contract. Therefore, all assertions created here should have a non diff --git a/contracts/test/Rollup.t.sol b/contracts/test/Rollup.t.sol index d613c1920..c03dece1a 100644 --- a/contracts/test/Rollup.t.sol +++ b/contracts/test/Rollup.t.sol @@ -126,9 +126,7 @@ contract RollupTest is Test { vm.expectEmit(false, false, false, false); emit RollupCreated(address(0), address(0), address(0), address(0), address(0)); - address rollupAddr = rollupCreator.createRollup( - config, address(0), new address[](0), false, MAX_DATA_SIZE - ); + address rollupAddr = rollupCreator.createRollup(config, address(0), new address[](0), false, MAX_DATA_SIZE); userRollup = RollupUserLogic(address(rollupAddr)); adminRollup = RollupAdminLogic(address(rollupAddr)); From 34f521a6fa6b4f363be23d6aa5d521b851035c1b Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Thu, 21 Sep 2023 14:17:24 +0200 Subject: [PATCH 2/8] Updated comments and moved sanity check --- contracts/src/rollup/RollupCore.sol | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contracts/src/rollup/RollupCore.sol b/contracts/src/rollup/RollupCore.sol index 6f1ed186b..faf204f14 100644 --- a/contracts/src/rollup/RollupCore.sol +++ b/contracts/src/rollup/RollupCore.sol @@ -408,6 +408,13 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { // All types of assertion must have inbox position in the range prev.inboxPosition <= x <= prev.nextInboxPosition require(afterInboxPosition >= prevInboxPosition, "INBOX_BACKWARDS"); require(afterInboxPosition <= assertion.beforeStateData.configData.nextInboxPosition, "INBOX_TOO_FAR"); + + // SANITY CHECK: the next inbox position did indeed move forward + // this is enforced by code in a later section that artificially increases the nextInboxPosition + // if it hadn't changed the next inbox always increasing means that the assertions will continue to advance + // It also means that below, where we check that afterInboxPosition equals prev.nextInboxPosition + // in the FINISHED state, we can be sure that it processed at least one message + require(assertion.beforeStateData.configData.nextInboxPosition > prevInboxPosition, "NEXT_INBOX_BACKWARDS"); // if the position in the message is > 0, then the afterInboxPosition cannot be the nextInboxPosition // as this would be outside the range - this can only occur for ERRORED states @@ -453,8 +460,6 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { } else { nextInboxPosition = currentInboxPosition; } - // sanity check that the next inbox position did indeed move forward due to the code above - require(assertion.beforeStateData.configData.nextInboxPosition > prevInboxPosition, "NEXT_INBOX_BACKWARDS"); // only the genesis assertion processes no messages, and that assertion is created // when we initialize this contract. Therefore, all assertions created here should have a non From cd0c17379aedcc97dfc014dbbb7f9bdb4066d616 Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Thu, 21 Sep 2023 15:41:27 +0200 Subject: [PATCH 3/8] Added other params to rollup creator salt --- contracts/src/rollup/RollupCore.sol | 4 ++-- contracts/src/rollup/RollupCreator.sol | 3 ++- contracts/test/Rollup.t.sol | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/contracts/src/rollup/RollupCore.sol b/contracts/src/rollup/RollupCore.sol index faf204f14..174f39f1f 100644 --- a/contracts/src/rollup/RollupCore.sol +++ b/contracts/src/rollup/RollupCore.sol @@ -408,9 +408,9 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { // All types of assertion must have inbox position in the range prev.inboxPosition <= x <= prev.nextInboxPosition require(afterInboxPosition >= prevInboxPosition, "INBOX_BACKWARDS"); require(afterInboxPosition <= assertion.beforeStateData.configData.nextInboxPosition, "INBOX_TOO_FAR"); - + // SANITY CHECK: the next inbox position did indeed move forward - // this is enforced by code in a later section that artificially increases the nextInboxPosition + // this is enforced by code in a later section that artificially increases the nextInboxPosition // if it hadn't changed the next inbox always increasing means that the assertions will continue to advance // It also means that below, where we check that afterInboxPosition equals prev.nextInboxPosition // in the FINISHED state, we can be sure that it processed at least one message diff --git a/contracts/src/rollup/RollupCreator.sol b/contracts/src/rollup/RollupCreator.sol index baa34f4be..293ec3e34 100644 --- a/contracts/src/rollup/RollupCreator.sol +++ b/contracts/src/rollup/RollupCreator.sol @@ -117,7 +117,8 @@ contract RollupCreator is Ownable { deployed.proxyAdmin.transferOwnership(config.owner); // Create the rollup proxy to figure out the address and initialize it later - deployed.rollup = new RollupProxy{salt: keccak256(abi.encode(config))}(); + deployed.rollup = + new RollupProxy{salt: keccak256(abi.encode(config, _batchPoster, _validators, disableValidatorWhitelist, maxDataSize))}(); (deployed.bridge, deployed.sequencerInbox, deployed.inbox, deployed.rollupEventInbox, deployed.outbox) = bridgeCreator.createBridge( diff --git a/contracts/test/Rollup.t.sol b/contracts/test/Rollup.t.sol index c03dece1a..00043f26f 100644 --- a/contracts/test/Rollup.t.sol +++ b/contracts/test/Rollup.t.sol @@ -23,6 +23,7 @@ import "../src/libraries/Error.sol"; import "../src/mocks/TestWETH9.sol"; import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; contract RollupTest is Test { address constant owner = address(1337); @@ -127,6 +128,11 @@ contract RollupTest is Test { vm.expectEmit(false, false, false, false); emit RollupCreated(address(0), address(0), address(0), address(0), address(0)); address rollupAddr = rollupCreator.createRollup(config, address(0), new address[](0), false, MAX_DATA_SIZE); + bytes32 rollupSalt = keccak256(abi.encode(config, address(0), new address[](0), false, MAX_DATA_SIZE)); + address expectedRollupAddress = Create2Upgradeable.computeAddress( + rollupSalt, keccak256(type(RollupProxy).creationCode), address(rollupCreator) + ); + assertEq(expectedRollupAddress, rollupAddr, "Unexpected rollup address"); userRollup = RollupUserLogic(address(rollupAddr)); adminRollup = RollupAdminLogic(address(rollupAddr)); From 0b704cf369c28fcc2e745ca83a3f49f0a90551d4 Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Fri, 22 Sep 2023 10:15:48 +0200 Subject: [PATCH 4/8] Tob recommendations --- contracts/src/challengeV2/libraries/ChallengeErrors.sol | 4 ++-- contracts/src/rollup/BOLDUpgradeAction.sol | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/contracts/src/challengeV2/libraries/ChallengeErrors.sol b/contracts/src/challengeV2/libraries/ChallengeErrors.sol index 382ae6ba7..d25b9adba 100644 --- a/contracts/src/challengeV2/libraries/ChallengeErrors.sol +++ b/contracts/src/challengeV2/libraries/ChallengeErrors.sol @@ -37,9 +37,9 @@ error InvalidEndHeight(uint256 actualHeight, uint256 expectedHeight); /// @dev The prefix proof is empty error EmptyPrefixProof(); /// @dev The edge is not of type Block -error EdgeTypeNotBlock(uint256 eType); +error EdgeTypeNotBlock(uint256 level); /// @dev The edge is not of type SmallStep -error EdgeTypeNotSmallStep(uint256 eType); +error EdgeTypeNotSmallStep(uint256 level); /// @dev The first rival record is empty error EmptyFirstRival(); /// @dev The difference between two heights is less than 2 diff --git a/contracts/src/rollup/BOLDUpgradeAction.sol b/contracts/src/rollup/BOLDUpgradeAction.sol index d49f2f3e8..c5af43bfb 100644 --- a/contracts/src/rollup/BOLDUpgradeAction.sol +++ b/contracts/src/rollup/BOLDUpgradeAction.sol @@ -354,9 +354,8 @@ contract BOLDUpgradeAction { } function upgradeSurroundingContracts(address newRollupAddress) private { - // now we upgrade each of the contracts that a reference to the rollup address - // first we upgrade to an implementation which allows setting, then set the rollup address - // then we revert to the previous implementation since we dont require this functionality going forward + // upgrade each of these contracts to an implementation that allows + // the rollup address to be set to the new rollup address TransparentUpgradeableProxy bridge = TransparentUpgradeableProxy(payable(BRIDGE)); address currentBridgeImpl = PROXY_ADMIN_BRIDGE.getProxyImplementation(bridge); From da451e66b0fce1c72d4e57feb96adb3185938c22 Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Fri, 22 Sep 2023 13:10:18 +0200 Subject: [PATCH 5/8] Additional tests --- contracts/src/rollup/BOLDUpgradeAction.sol | 4 +- contracts/src/rollup/RollupLib.sol | 31 ------------ contracts/test/Rollup.t.sol | 22 +++++++++ .../challengeV2/EdgeChallengeManager.t.sol | 48 +++++++++++++++++++ .../challengeV2/EdgeChallengeManagerLib.t.sol | 13 ++--- 5 files changed, 76 insertions(+), 42 deletions(-) diff --git a/contracts/src/rollup/BOLDUpgradeAction.sol b/contracts/src/rollup/BOLDUpgradeAction.sol index c5af43bfb..f6309e374 100644 --- a/contracts/src/rollup/BOLDUpgradeAction.sol +++ b/contracts/src/rollup/BOLDUpgradeAction.sol @@ -325,7 +325,7 @@ contract BOLDUpgradeAction { (ExecutionState memory genesisExecState, uint256 inboxMaxCount) = PREIMAGE_LOOKUP.get(latestConfirmedStateHash); // double check the hash require( - RollupLib.stateHashMem(genesisExecState, inboxMaxCount) == latestConfirmedStateHash, + PREIMAGE_LOOKUP.stateHash(genesisExecState, inboxMaxCount) == latestConfirmedStateHash, "Invalid latest execution hash" ); @@ -354,7 +354,7 @@ contract BOLDUpgradeAction { } function upgradeSurroundingContracts(address newRollupAddress) private { - // upgrade each of these contracts to an implementation that allows + // upgrade each of these contracts to an implementation that allows // the rollup address to be set to the new rollup address TransparentUpgradeableProxy bridge = TransparentUpgradeableProxy(payable(BRIDGE)); diff --git a/contracts/src/rollup/RollupLib.sol b/contracts/src/rollup/RollupLib.sol index b86ca0fad..be62d6e66 100644 --- a/contracts/src/rollup/RollupLib.sol +++ b/contracts/src/rollup/RollupLib.sol @@ -18,37 +18,6 @@ import "../challengeV2/EdgeChallengeManager.sol"; library RollupLib { using GlobalStateLib for GlobalState; - function stateHash(ExecutionState calldata execState, uint256 inboxMaxCount) - internal - pure - returns (bytes32) - { - return - keccak256( - abi.encodePacked( - execState.globalState.hash(), - inboxMaxCount, - execState.machineStatus - ) - ); - } - - /// @dev same as stateHash but expects execState in memory instead of calldata - function stateHashMem(ExecutionState memory execState, uint256 inboxMaxCount) - internal - pure - returns (bytes32) - { - return - keccak256( - abi.encodePacked( - execState.globalState.hash(), - inboxMaxCount, - execState.machineStatus - ) - ); - } - // Not the same as a machine hash for a given execution state function executionStateHash(ExecutionState memory state) internal pure returns (bytes32) { return keccak256(abi.encodePacked(state.machineStatus, state.globalState.hash())); diff --git a/contracts/test/Rollup.t.sol b/contracts/test/Rollup.t.sol index 00043f26f..bcc834490 100644 --- a/contracts/test/Rollup.t.sol +++ b/contracts/test/Rollup.t.sol @@ -26,6 +26,8 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.so import "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; contract RollupTest is Test { + using GlobalStateLib for GlobalState; + address constant owner = address(1337); address constant sequencer = address(7331); @@ -1156,4 +1158,24 @@ contract RollupTest is Test { vm.expectRevert(); adminRollup.setChallengeManager(address(0xdeadbeef)); } + + function testExecutionStateHash() public { + ExecutionState memory es = ExecutionState( + GlobalState([rand.hash(), rand.hash()], [uint64(uint256(rand.hash())), uint64(uint256(rand.hash()))]), + MachineStatus.FINISHED + ); + bytes32 expectedHash = keccak256(abi.encodePacked(es.machineStatus, es.globalState.hash())); + assertEq(RollupLib.executionStateHash(es), expectedHash, "Unexpected hash"); + } + + function testAssertionHash() public { + bytes32 parentHash = rand.hash(); + ExecutionState memory es = ExecutionState( + GlobalState([rand.hash(), rand.hash()], [uint64(uint256(rand.hash())), uint64(uint256(rand.hash()))]), + MachineStatus.FINISHED + ); + bytes32 inboxAcc = rand.hash(); + bytes32 expectedHash = keccak256(abi.encodePacked(parentHash, RollupLib.executionStateHash(es), inboxAcc)); + assertEq(RollupLib.assertionHash(parentHash, es, inboxAcc), expectedHash, "Unexpected hash"); + } } diff --git a/contracts/test/challengeV2/EdgeChallengeManager.t.sol b/contracts/test/challengeV2/EdgeChallengeManager.t.sol index c4be3a811..860bea49f 100644 --- a/contracts/test/challengeV2/EdgeChallengeManager.t.sol +++ b/contracts/test/challengeV2/EdgeChallengeManager.t.sol @@ -262,6 +262,54 @@ contract EdgeChallengeManagerTest is Test { ); } + function testRevertInvalidHash() public { + EdgeInitData memory ei = deployAndInit(); + + (bytes32[] memory states, bytes32[] memory exp) = + appendRandomStatesBetween(genesisStates(), StateToolsLib.mockMachineHash(ei.a1State), height1); + + vm.expectRevert("INVALID_ASSERTION_HASH"); + ei.challengeManager.createLayerZeroEdge( + CreateEdgeArgs({ + level: 0, + endHistoryRoot: MerkleTreeLib.root(exp), + endHeight: height1, + claimId: ei.a2, + prefixProof: abi.encode( + ProofUtils.expansionFromLeaves(states, 0, 1), + ProofUtils.generatePrefixProof(1, ArrayUtilsLib.slice(states, 1, states.length)) + ), + proof: abi.encode( + ProofUtils.generateInclusionProof(ProofUtils.rehashed(states), 0), genesisStateData, ei.a1Data + ) + }) + ); + } + + function testRevertInvalidHashPrev() public { + EdgeInitData memory ei = deployAndInit(); + + (bytes32[] memory states, bytes32[] memory exp) = + appendRandomStatesBetween(genesisStates(), StateToolsLib.mockMachineHash(ei.a1State), height1); + + vm.expectRevert("INVALID_ASSERTION_HASH"); + ei.challengeManager.createLayerZeroEdge( + CreateEdgeArgs({ + level: 0, + endHistoryRoot: MerkleTreeLib.root(exp), + endHeight: height1, + claimId: ei.a1, + prefixProof: abi.encode( + ProofUtils.expansionFromLeaves(states, 0, 1), + ProofUtils.generatePrefixProof(1, ArrayUtilsLib.slice(states, 1, states.length)) + ), + proof: abi.encode( + ProofUtils.generateInclusionProof(ProofUtils.rehashed(states), states.length - 1), ei.a2Data, ei.a1Data + ) + }) + ); + } + function testCanCreateEdgeWithStake() public returns (EdgeInitData memory, bytes32[] memory, bytes32[] memory, bytes32) diff --git a/contracts/test/challengeV2/EdgeChallengeManagerLib.t.sol b/contracts/test/challengeV2/EdgeChallengeManagerLib.t.sol index 18a000531..0f3b40cb2 100644 --- a/contracts/test/challengeV2/EdgeChallengeManagerLib.t.sol +++ b/contracts/test/challengeV2/EdgeChallengeManagerLib.t.sol @@ -1582,21 +1582,16 @@ contract EdgeChallengeManagerLibTest is Test { struct ExecStateVars { ExecutionState execState; bytes32 machineHash; - bytes32 stateHash; } - function randomExecutionState(IOneStepProofEntry os, uint256 inboxMaxCount) - private - returns (ExecStateVars memory) - { + function randomExecutionState(IOneStepProofEntry os) private returns (ExecStateVars memory) { ExecutionState memory execState = ExecutionState( GlobalState([rand.hash(), rand.hash()], [uint64(uint256(rand.hash())), uint64(uint256(rand.hash()))]), MachineStatus.FINISHED ); bytes32 machineHash = os.getMachineHash(execState); - bytes32 stateHash = RollupLib.stateHashMem(execState, inboxMaxCount); - return ExecStateVars(execState, machineHash, stateHash); + return ExecStateVars(execState, machineHash); } function createZeroBlockEdge(uint256 mode) internal { @@ -1608,8 +1603,8 @@ contract EdgeChallengeManagerLibTest is Test { revertArg = abi.encodeWithSelector(NotPowerOfTwo.selector, expectedEndHeight); } - ExecStateVars memory startExec = randomExecutionState(entry, 10); - ExecStateVars memory endExec = randomExecutionState(entry, 20); + ExecStateVars memory startExec = randomExecutionState(entry); + ExecStateVars memory endExec = randomExecutionState(entry); ExpsAndProofs memory roots = newRootsAndProofs(0, expectedEndHeight, startExec.machineHash, endExec.machineHash); bytes32 claimId = rand.hash(); bytes32 endRoot; From 514b34b414faa0cc8a2ece89f04f6c777783a2de Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Fri, 22 Sep 2023 16:22:55 +0200 Subject: [PATCH 6/8] Abi gen --- .../assertionStakingPoolgen.go | 4 ++-- solgen/go/bridgegen/bridgegen.go | 2 +- solgen/go/challengeV2gen/challengeV2gen.go | 4 ++-- solgen/go/mocksgen/mocksgen.go | 4 ++-- solgen/go/rollupgen/rollupgen.go | 18 +++++++++--------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go b/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go index bbe42bf6f..fcec18c09 100644 --- a/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go +++ b/solgen/go/assertionStakingPoolgen/assertionStakingPoolgen.go @@ -67,7 +67,7 @@ type GlobalState struct { // AssertionStakingPoolMetaData contains all meta data concerning the AssertionStakingPool contract. var AssertionStakingPoolMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"_assertionInputs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"AmountExceedsBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"NoBalanceToWithdraw\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionInputs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"depositedTokenBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRequiredStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"makeStakeWithdrawable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"makeStakeWithdrawableAndWithdrawBackIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFromPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawStakeBackIntoPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e06040523480156200001157600080fd5b50604051620016fe380380620016fe8339810160408190526200003491620004ee565b6001600160a01b03838116608090815260a0839052835180516000908155602080830151600155604092830151805160029081558183015160035593810151600480546060840151929098166001600160e01b031990981697909717600160a01b6001600160401b03928316021790965590930151600580546001600160401b03191691909516179093559084015180518051869493600692918391620000dd9183916200020d565b506020820151620000f5906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200011e576200011e6200060f565b02179055505050604082015180518051600a8401919082906200014590829060026200020d565b5060208201516200015d906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200018657620001866200060f565b021790555050509050506080516001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000625565b6001600160a01b031660c052506200064a915050565b82600281019282156200023e579160200282015b828111156200023e57825182559160200191906001019062000221565b506200024c929150620002f2565b5090565b6001830191839082156200023e5791602002820160005b83821115620002b357835183826101000a8154816001600160401b0302191690836001600160401b03160217905550926020019260080160208160070104928301926001030262000267565b8015620002e85782816101000a8154906001600160401b030219169055600801602081600701049283019260010302620002b3565b50506200024c9291505b5b808211156200024c5760008155600101620002f3565b80516001600160a01b03811681146200032157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000361576200036162000326565b60405290565b604051606081016001600160401b038111828210171562000361576200036162000326565b60405160a081016001600160401b038111828210171562000361576200036162000326565b80516001600160401b03811681146200032157600080fd5b600082601f830112620003db57600080fd5b620003e56200033c565b806040840185811115620003f857600080fd5b845b818110156200041d576200040e81620003b1565b845260209384019301620003fa565b509095945050505050565b8051600381106200032157600080fd5b600081830360a08112156200044c57600080fd5b620004566200033c565b915060808112156200046757600080fd5b50620004726200033c565b83601f8401126200048257600080fd5b6200048c6200033c565b8060408501868111156200049f57600080fd5b855b81811015620004bb578051845260209384019301620004a1565b50818452620004cb8782620003c9565b60208501525050508152620004e36080830162000428565b602082015292915050565b60008060008385036102608112156200050657600080fd5b620005118562000309565b9350601f1981016102208112156200052857600080fd5b6200053262000367565b60e08212156200054157600080fd5b6200054b62000367565b9150602087015182526040870151602083015260a0605f19840112156200057157600080fd5b6200057b6200038c565b925060608701518352608087015160208401526200059c60a0880162000309565b6040840152620005af60c08801620003b1565b6060840152620005c260e08801620003b1565b6080840152826040830152818152620005e088610100890162000438565b6020820152620005f5886101a0890162000438565b604082015280945050505061024084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200063857600080fd5b620006438262000309565b9392505050565b60805160a05160c05161104d620006b160003960008181610148015281816102ec0152818161036e01526104b601526000818160e901526104170152600081816101e901528181610390015281816103e50152818161076a01526107df015261104d6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637476083b1161008c578063930412af11610066578063930412af146101d45780639451944d146101dc578063cb23bcb5146101e4578063f0e978891461020b57600080fd5b80637476083b1461018a578063875b2af01461019d5780639252175b146101bd57600080fd5b80634b7a7538116100bd5780634b7a75381461013b57806351ed6a30146101435780636b74d5151461018257600080fd5b80632113ed21146100e457806326c0e5c51461011e57806330fc43ed14610128575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610213565b005b610126610136366004610cc8565b61022e565b610126610354565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610115565b610126610474565b610126610198366004610cc8565b610484565b61010b6101ab366004610ce1565b600e6020526000908152604090205481565b6101c5610516565b60405161011593929190610db5565b610126610768565b6101266107dd565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b60035461010b565b336000908152600e602052604090205461022c9061022e565b565b336000908152600e60205260408120549081900361027f576040517fe06b2da50000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b808211156102c9576040517fa47b7c650000000000000000000000000000000000000000000000000000000081523360048201526024810183905260448101829052606401610276565b6102d38282610e4b565b336000818152600e602052604090209190915561031b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169084610864565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b600061035f60035490565b90506103b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610912565b6040517f76a610180000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376a610189061043f9084906000907f000000000000000000000000000000000000000000000000000000000000000090600401610ec3565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b5050505050565b61047c610768565b61022c6107dd565b336000908152600e6020526040812080548392906104a3908490610f56565b909155506104de90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846109f6565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b6040805160608082018352600080548352600154602080850191909152845160a081018652600280548252600354928201929092526004546001600160a01b0381168288015274010000000000000000000000000000000000000000900467ffffffffffffffff9081169482019490945260055490931660808085019190915284860193909352845160c08101808752949592949093600693859390840192859284929086019184919082845b8154815260200190600101908083116105c3575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116105fb579050505050919092525050508152600382015460209091019060ff16600281111561066a5761066a610d0a565b600281111561067b5761067b610d0a565b9052506040805160c08101825291929190600a830190829081018281608084018260028282826020028201915b8154815260200190600101908083116106a8575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106e0579050505050919092525050508152600382015460209091019060ff16600281111561074f5761074f610d0a565b600281111561076057610760610d0a565b905250905083565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190610f69565b50565b6040516001600160a01b03831660248201526044810182905261090d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a47565b505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190610f69565b6109aa9190610f56565b6040516001600160a01b0385166024820152604481018290529091506107d79085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016108a9565b6040516001600160a01b03808516602483015283166044820152606481018290526107d79085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016108a9565b6000610a9c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b2c9092919063ffffffff16565b80519091501561090d5780806020019051810190610aba9190610f82565b61090d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610276565b6060610b3b8484600085610b45565b90505b9392505050565b606082471015610bbd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610276565b6001600160a01b0385163b610c145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b03168587604051610c309190610fc8565b60006040518083038185875af1925050503d8060008114610c6d576040519150601f19603f3d011682016040523d82523d6000602084013e610c72565b606091505b5091509150610c82828286610c8f565b925050505b949350505050565b60608315610c9e575081610b3e565b825115610cae5782518084602001fd5b8160405162461bcd60e51b81526004016102769190610fe4565b600060208284031215610cda57600080fd5b5035919050565b600060208284031215610cf357600080fd5b81356001600160a01b0381168114610b3e57600080fd5b634e487b7160e01b600052602160045260246000fd5b60038110610d3e57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610d69578251825260209283019290910190600101610d4a565b505050602090810151906040840160005b6002811015610da157835167ffffffffffffffff1682529282019290820190600101610d7a565b5050820151905061090d6080840182610d20565b6000610220820190508451825260208501516020830152604085015180516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c0860152505050610e2760e0830185610d42565b610c87610180830184610d42565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5e57610e5e610e35565b92915050565b818160005b6002811015610e88578154835260209092019160019182019101610e69565b505050600281015467ffffffffffffffff8082166040850152808260401c166060850152505060ff60038201541661090d6080840182610d20565b8381528254602082015260018301546040820152600283015460608201526003830154608082015260048301546001600160a01b03811660a0808401919091521c67ffffffffffffffff90811660c083015260058401541660e08201526102608101610f36610100830160068601610e64565b610f476101a08301600a8601610e64565b82610240830152949350505050565b80820180821115610e5e57610e5e610e35565b600060208284031215610f7b57600080fd5b5051919050565b600060208284031215610f9457600080fd5b81518015158114610b3e57600080fd5b60005b83811015610fbf578181015183820152602001610fa7565b50506000910152565b60008251610fda818460208701610fa4565b9190910192915050565b6020815260008251806020840152611003816040850160208701610fa4565b601f01601f1916919091016040019291505056fea2646970667358221220ca9e4d1bf13f45e13feed746939b2489c64d3aa61070954283cbc4e97595e69d64736f6c63430008110033", + Bin: "0x60e06040523480156200001157600080fd5b50604051620016fe380380620016fe8339810160408190526200003491620004ee565b6001600160a01b03838116608090815260a0839052835180516000908155602080830151600155604092830151805160029081558183015160035593810151600480546060840151929098166001600160e01b031990981697909717600160a01b6001600160401b03928316021790965590930151600580546001600160401b03191691909516179093559084015180518051869493600692918391620000dd9183916200020d565b506020820151620000f5906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200011e576200011e6200060f565b02179055505050604082015180518051600a8401919082906200014590829060026200020d565b5060208201516200015d906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200018657620001866200060f565b021790555050509050506080516001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000625565b6001600160a01b031660c052506200064a915050565b82600281019282156200023e579160200282015b828111156200023e57825182559160200191906001019062000221565b506200024c929150620002f2565b5090565b6001830191839082156200023e5791602002820160005b83821115620002b357835183826101000a8154816001600160401b0302191690836001600160401b03160217905550926020019260080160208160070104928301926001030262000267565b8015620002e85782816101000a8154906001600160401b030219169055600801602081600701049283019260010302620002b3565b50506200024c9291505b5b808211156200024c5760008155600101620002f3565b80516001600160a01b03811681146200032157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000361576200036162000326565b60405290565b604051606081016001600160401b038111828210171562000361576200036162000326565b60405160a081016001600160401b038111828210171562000361576200036162000326565b80516001600160401b03811681146200032157600080fd5b600082601f830112620003db57600080fd5b620003e56200033c565b806040840185811115620003f857600080fd5b845b818110156200041d576200040e81620003b1565b845260209384019301620003fa565b509095945050505050565b8051600381106200032157600080fd5b600081830360a08112156200044c57600080fd5b620004566200033c565b915060808112156200046757600080fd5b50620004726200033c565b83601f8401126200048257600080fd5b6200048c6200033c565b8060408501868111156200049f57600080fd5b855b81811015620004bb578051845260209384019301620004a1565b50818452620004cb8782620003c9565b60208501525050508152620004e36080830162000428565b602082015292915050565b60008060008385036102608112156200050657600080fd5b620005118562000309565b9350601f1981016102208112156200052857600080fd5b6200053262000367565b60e08212156200054157600080fd5b6200054b62000367565b9150602087015182526040870151602083015260a0605f19840112156200057157600080fd5b6200057b6200038c565b925060608701518352608087015160208401526200059c60a0880162000309565b6040840152620005af60c08801620003b1565b6060840152620005c260e08801620003b1565b6080840152826040830152818152620005e088610100890162000438565b6020820152620005f5886101a0890162000438565b604082015280945050505061024084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200063857600080fd5b620006438262000309565b9392505050565b60805160a05160c05161104d620006b160003960008181610148015281816102ec0152818161036e01526104b601526000818160e901526104170152600081816101e901528181610390015281816103e50152818161076a01526107df015261104d6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637476083b1161008c578063930412af11610066578063930412af146101d45780639451944d146101dc578063cb23bcb5146101e4578063f0e978891461020b57600080fd5b80637476083b1461018a578063875b2af01461019d5780639252175b146101bd57600080fd5b80634b7a7538116100bd5780634b7a75381461013b57806351ed6a30146101435780636b74d5151461018257600080fd5b80632113ed21146100e457806326c0e5c51461011e57806330fc43ed14610128575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610213565b005b610126610136366004610cc8565b61022e565b610126610354565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610115565b610126610474565b610126610198366004610cc8565b610484565b61010b6101ab366004610ce1565b600e6020526000908152604090205481565b6101c5610516565b60405161011593929190610db5565b610126610768565b6101266107dd565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b60035461010b565b336000908152600e602052604090205461022c9061022e565b565b336000908152600e60205260408120549081900361027f576040517fe06b2da50000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b808211156102c9576040517fa47b7c650000000000000000000000000000000000000000000000000000000081523360048201526024810183905260448101829052606401610276565b6102d38282610e4b565b336000818152600e602052604090209190915561031b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169084610864565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b600061035f60035490565b90506103b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610912565b6040517f76a610180000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376a610189061043f9084906000907f000000000000000000000000000000000000000000000000000000000000000090600401610ec3565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b5050505050565b61047c610768565b61022c6107dd565b336000908152600e6020526040812080548392906104a3908490610f56565b909155506104de90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846109f6565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b6040805160608082018352600080548352600154602080850191909152845160a081018652600280548252600354928201929092526004546001600160a01b0381168288015274010000000000000000000000000000000000000000900467ffffffffffffffff9081169482019490945260055490931660808085019190915284860193909352845160c08101808752949592949093600693859390840192859284929086019184919082845b8154815260200190600101908083116105c3575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116105fb579050505050919092525050508152600382015460209091019060ff16600281111561066a5761066a610d0a565b600281111561067b5761067b610d0a565b9052506040805160c08101825291929190600a830190829081018281608084018260028282826020028201915b8154815260200190600101908083116106a8575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106e0579050505050919092525050508152600382015460209091019060ff16600281111561074f5761074f610d0a565b600281111561076057610760610d0a565b905250905083565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190610f69565b50565b6040516001600160a01b03831660248201526044810182905261090d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a47565b505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190610f69565b6109aa9190610f56565b6040516001600160a01b0385166024820152604481018290529091506107d79085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016108a9565b6040516001600160a01b03808516602483015283166044820152606481018290526107d79085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016108a9565b6000610a9c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b2c9092919063ffffffff16565b80519091501561090d5780806020019051810190610aba9190610f82565b61090d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610276565b6060610b3b8484600085610b45565b90505b9392505050565b606082471015610bbd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610276565b6001600160a01b0385163b610c145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b03168587604051610c309190610fc8565b60006040518083038185875af1925050503d8060008114610c6d576040519150601f19603f3d011682016040523d82523d6000602084013e610c72565b606091505b5091509150610c82828286610c8f565b925050505b949350505050565b60608315610c9e575081610b3e565b825115610cae5782518084602001fd5b8160405162461bcd60e51b81526004016102769190610fe4565b600060208284031215610cda57600080fd5b5035919050565b600060208284031215610cf357600080fd5b81356001600160a01b0381168114610b3e57600080fd5b634e487b7160e01b600052602160045260246000fd5b60038110610d3e57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610d69578251825260209283019290910190600101610d4a565b505050602090810151906040840160005b6002811015610da157835167ffffffffffffffff1682529282019290820190600101610d7a565b5050820151905061090d6080840182610d20565b6000610220820190508451825260208501516020830152604085015180516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c0860152505050610e2760e0830185610d42565b610c87610180830184610d42565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5e57610e5e610e35565b92915050565b818160005b6002811015610e88578154835260209092019160019182019101610e69565b505050600281015467ffffffffffffffff8082166040850152808260401c166060850152505060ff60038201541661090d6080840182610d20565b8381528254602082015260018301546040820152600283015460608201526003830154608082015260048301546001600160a01b03811660a0808401919091521c67ffffffffffffffff90811660c083015260058401541660e08201526102608101610f36610100830160068601610e64565b610f476101a08301600a8601610e64565b82610240830152949350505050565b80820180821115610e5e57610e5e610e35565b600060208284031215610f7b57600080fd5b5051919050565b600060208284031215610f9457600080fd5b81518015158114610b3e57600080fd5b60005b83811015610fbf578181015183820152602001610fa7565b50506000910152565b60008251610fda818460208701610fa4565b9190910192915050565b6020815260008251806020840152611003816040850160208701610fa4565b601f01601f1916919091016040019291505056fea264697066735822122038643007f067f35e83b75661fe5e8bbb32f0e611281d1ed8f6083007eaa99cbc64736f6c63430008110033", } // AssertionStakingPoolABI is the input ABI used to generate the binding from. @@ -882,7 +882,7 @@ func (_AssertionStakingPool *AssertionStakingPoolFilterer) ParseStakeWithdrawn(l // AssertionStakingPoolCreatorMetaData contains all meta data concerning the AssertionStakingPoolCreator contract. var AssertionStakingPoolCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertionInputs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"PoolDoesntExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"assertionPool\",\"type\":\"address\"}],\"name\":\"NewAssertionPoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"_assertionInputs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"name\":\"createPoolForAssertion\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"_assertionInputs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"contractAssertionStakingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50611f65806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063e1d72030146200003f578063f17d6636146200007f575b600080fd5b62000056620000503660046200052a565b62000096565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b62000056620000903660046200052a565b62000143565b600080620000a685858562000252565b858585604051620000b7906200030d565b620000c59392919062000722565b8190604051809103906000f5905080158015620000e6573d6000803e3d6000fd5b5060405173ffffffffffffffffffffffffffffffffffffffff808316825291925084918716907fd628317c6ebae87acc5dbfadeb835cb97692cc6935ea72bf37461e14a0bbee1e9060200160405180910390a390505b9392505050565b6000806200015385858562000252565b90506000620001648686866200028a565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021830152603582018690526055808301859052835180840390910181526075909201909252805191012090915073ffffffffffffffffffffffffffffffffffffffff81163b156200020f5792506200013c915050565b8686866040517fdb1a0435000000000000000000000000000000000000000000000000000000008152600401620002499392919062000722565b60405180910390fd5b60008383836040516020016200026b9392919062000722565b6040516020818303038152906040528051906020012090509392505050565b600080604051806020016200029f906200030d565b6020820181038252601f19601f82011660405250905080858585604051602001620002cd9392919062000722565b60408051601f1981840301815290829052620002ed929160200162000810565b604051602081830303815290604052805190602001209150509392505050565b6116fe806200083283390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200034057600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156200039a576200039a62000345565b60405290565b6040516060810167ffffffffffffffff811182821017156200039a576200039a62000345565b60405160a0810167ffffffffffffffff811182821017156200039a576200039a62000345565b803567ffffffffffffffff811681146200034057600080fd5b600082601f8301126200041757600080fd5b6200042162000374565b8060408401858111156200043457600080fd5b845b8181101562000459576200044a81620003ec565b84526020938401930162000436565b509095945050505050565b8035600381106200034057600080fd5b600081830360a08112156200048857600080fd5b6200049262000374565b91506080811215620004a357600080fd5b50620004ae62000374565b83601f840112620004be57600080fd5b620004c862000374565b806040850186811115620004db57600080fd5b855b81811015620004f7578035845260209384019301620004dd565b5081845262000507878262000405565b602085015250505081526200051f6080830162000464565b602082015292915050565b60008060008385036102608112156200054257600080fd5b6200054d856200031b565b9350601f1981016102208112156200056457600080fd5b6200056e620003a0565b60e08212156200057d57600080fd5b62000587620003a0565b9150602087013582526040870135602083015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa084011215620005cb57600080fd5b620005d5620003c6565b92506060870135835260808701356020840152620005f660a088016200031b565b60408401526200060960c08801620003ec565b60608401526200061c60e08801620003ec565b60808401528260408301528181526200063a88610100890162000474565b60208201526200064f886101a0890162000474565b6040820152949794965050505061024092909201359150565b60038110620006a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b805180518360005b6002811015620006cd578251825260209283019290910190600101620006ac565b505050602090810151906040840160005b60028110156200070757835167ffffffffffffffff1682529282019290820190600101620006de565b505082015190506200071d608084018262000668565b505050565b60006102608201905073ffffffffffffffffffffffffffffffffffffffff8086168352845180516020850152602081015160408501526040810151905080516060850152602081015160808501528160408201511660a08501526060810151915067ffffffffffffffff80831660c08601528060808301511660e08601525050506020840151620007b8610100840182620006a4565b506040840151620007ce6101a0840182620006a4565b5082610240830152949350505050565b6000815160005b81811015620008015760208185018101518683015201620007e5565b50600093019283525090919050565b600062000829620008228386620007de565b84620007de565b94935050505056fe60e06040523480156200001157600080fd5b50604051620016fe380380620016fe8339810160408190526200003491620004ee565b6001600160a01b03838116608090815260a0839052835180516000908155602080830151600155604092830151805160029081558183015160035593810151600480546060840151929098166001600160e01b031990981697909717600160a01b6001600160401b03928316021790965590930151600580546001600160401b03191691909516179093559084015180518051869493600692918391620000dd9183916200020d565b506020820151620000f5906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200011e576200011e6200060f565b02179055505050604082015180518051600a8401919082906200014590829060026200020d565b5060208201516200015d906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200018657620001866200060f565b021790555050509050506080516001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000625565b6001600160a01b031660c052506200064a915050565b82600281019282156200023e579160200282015b828111156200023e57825182559160200191906001019062000221565b506200024c929150620002f2565b5090565b6001830191839082156200023e5791602002820160005b83821115620002b357835183826101000a8154816001600160401b0302191690836001600160401b03160217905550926020019260080160208160070104928301926001030262000267565b8015620002e85782816101000a8154906001600160401b030219169055600801602081600701049283019260010302620002b3565b50506200024c9291505b5b808211156200024c5760008155600101620002f3565b80516001600160a01b03811681146200032157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000361576200036162000326565b60405290565b604051606081016001600160401b038111828210171562000361576200036162000326565b60405160a081016001600160401b038111828210171562000361576200036162000326565b80516001600160401b03811681146200032157600080fd5b600082601f830112620003db57600080fd5b620003e56200033c565b806040840185811115620003f857600080fd5b845b818110156200041d576200040e81620003b1565b845260209384019301620003fa565b509095945050505050565b8051600381106200032157600080fd5b600081830360a08112156200044c57600080fd5b620004566200033c565b915060808112156200046757600080fd5b50620004726200033c565b83601f8401126200048257600080fd5b6200048c6200033c565b8060408501868111156200049f57600080fd5b855b81811015620004bb578051845260209384019301620004a1565b50818452620004cb8782620003c9565b60208501525050508152620004e36080830162000428565b602082015292915050565b60008060008385036102608112156200050657600080fd5b620005118562000309565b9350601f1981016102208112156200052857600080fd5b6200053262000367565b60e08212156200054157600080fd5b6200054b62000367565b9150602087015182526040870151602083015260a0605f19840112156200057157600080fd5b6200057b6200038c565b925060608701518352608087015160208401526200059c60a0880162000309565b6040840152620005af60c08801620003b1565b6060840152620005c260e08801620003b1565b6080840152826040830152818152620005e088610100890162000438565b6020820152620005f5886101a0890162000438565b604082015280945050505061024084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200063857600080fd5b620006438262000309565b9392505050565b60805160a05160c05161104d620006b160003960008181610148015281816102ec0152818161036e01526104b601526000818160e901526104170152600081816101e901528181610390015281816103e50152818161076a01526107df015261104d6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637476083b1161008c578063930412af11610066578063930412af146101d45780639451944d146101dc578063cb23bcb5146101e4578063f0e978891461020b57600080fd5b80637476083b1461018a578063875b2af01461019d5780639252175b146101bd57600080fd5b80634b7a7538116100bd5780634b7a75381461013b57806351ed6a30146101435780636b74d5151461018257600080fd5b80632113ed21146100e457806326c0e5c51461011e57806330fc43ed14610128575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610213565b005b610126610136366004610cc8565b61022e565b610126610354565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610115565b610126610474565b610126610198366004610cc8565b610484565b61010b6101ab366004610ce1565b600e6020526000908152604090205481565b6101c5610516565b60405161011593929190610db5565b610126610768565b6101266107dd565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b60035461010b565b336000908152600e602052604090205461022c9061022e565b565b336000908152600e60205260408120549081900361027f576040517fe06b2da50000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b808211156102c9576040517fa47b7c650000000000000000000000000000000000000000000000000000000081523360048201526024810183905260448101829052606401610276565b6102d38282610e4b565b336000818152600e602052604090209190915561031b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169084610864565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b600061035f60035490565b90506103b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610912565b6040517f76a610180000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376a610189061043f9084906000907f000000000000000000000000000000000000000000000000000000000000000090600401610ec3565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b5050505050565b61047c610768565b61022c6107dd565b336000908152600e6020526040812080548392906104a3908490610f56565b909155506104de90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846109f6565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b6040805160608082018352600080548352600154602080850191909152845160a081018652600280548252600354928201929092526004546001600160a01b0381168288015274010000000000000000000000000000000000000000900467ffffffffffffffff9081169482019490945260055490931660808085019190915284860193909352845160c08101808752949592949093600693859390840192859284929086019184919082845b8154815260200190600101908083116105c3575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116105fb579050505050919092525050508152600382015460209091019060ff16600281111561066a5761066a610d0a565b600281111561067b5761067b610d0a565b9052506040805160c08101825291929190600a830190829081018281608084018260028282826020028201915b8154815260200190600101908083116106a8575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106e0579050505050919092525050508152600382015460209091019060ff16600281111561074f5761074f610d0a565b600281111561076057610760610d0a565b905250905083565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190610f69565b50565b6040516001600160a01b03831660248201526044810182905261090d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a47565b505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190610f69565b6109aa9190610f56565b6040516001600160a01b0385166024820152604481018290529091506107d79085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016108a9565b6040516001600160a01b03808516602483015283166044820152606481018290526107d79085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016108a9565b6000610a9c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b2c9092919063ffffffff16565b80519091501561090d5780806020019051810190610aba9190610f82565b61090d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610276565b6060610b3b8484600085610b45565b90505b9392505050565b606082471015610bbd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610276565b6001600160a01b0385163b610c145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b03168587604051610c309190610fc8565b60006040518083038185875af1925050503d8060008114610c6d576040519150601f19603f3d011682016040523d82523d6000602084013e610c72565b606091505b5091509150610c82828286610c8f565b925050505b949350505050565b60608315610c9e575081610b3e565b825115610cae5782518084602001fd5b8160405162461bcd60e51b81526004016102769190610fe4565b600060208284031215610cda57600080fd5b5035919050565b600060208284031215610cf357600080fd5b81356001600160a01b0381168114610b3e57600080fd5b634e487b7160e01b600052602160045260246000fd5b60038110610d3e57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610d69578251825260209283019290910190600101610d4a565b505050602090810151906040840160005b6002811015610da157835167ffffffffffffffff1682529282019290820190600101610d7a565b5050820151905061090d6080840182610d20565b6000610220820190508451825260208501516020830152604085015180516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c0860152505050610e2760e0830185610d42565b610c87610180830184610d42565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5e57610e5e610e35565b92915050565b818160005b6002811015610e88578154835260209092019160019182019101610e69565b505050600281015467ffffffffffffffff8082166040850152808260401c166060850152505060ff60038201541661090d6080840182610d20565b8381528254602082015260018301546040820152600283015460608201526003830154608082015260048301546001600160a01b03811660a0808401919091521c67ffffffffffffffff90811660c083015260058401541660e08201526102608101610f36610100830160068601610e64565b610f476101a08301600a8601610e64565b82610240830152949350505050565b80820180821115610e5e57610e5e610e35565b600060208284031215610f7b57600080fd5b5051919050565b600060208284031215610f9457600080fd5b81518015158114610b3e57600080fd5b60005b83811015610fbf578181015183820152602001610fa7565b50506000910152565b60008251610fda818460208701610fa4565b9190910192915050565b6020815260008251806020840152611003816040850160208701610fa4565b601f01601f1916919091016040019291505056fea2646970667358221220ca9e4d1bf13f45e13feed746939b2489c64d3aa61070954283cbc4e97595e69d64736f6c63430008110033a2646970667358221220b171c4aa6204a5f29c25278b6af67bba338fbc59e7c51c742e51b3007430027b64736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50611f65806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063e1d72030146200003f578063f17d6636146200007f575b600080fd5b62000056620000503660046200052a565b62000096565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b62000056620000903660046200052a565b62000143565b600080620000a685858562000252565b858585604051620000b7906200030d565b620000c59392919062000722565b8190604051809103906000f5905080158015620000e6573d6000803e3d6000fd5b5060405173ffffffffffffffffffffffffffffffffffffffff808316825291925084918716907fd628317c6ebae87acc5dbfadeb835cb97692cc6935ea72bf37461e14a0bbee1e9060200160405180910390a390505b9392505050565b6000806200015385858562000252565b90506000620001648686866200028a565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021830152603582018690526055808301859052835180840390910181526075909201909252805191012090915073ffffffffffffffffffffffffffffffffffffffff81163b156200020f5792506200013c915050565b8686866040517fdb1a0435000000000000000000000000000000000000000000000000000000008152600401620002499392919062000722565b60405180910390fd5b60008383836040516020016200026b9392919062000722565b6040516020818303038152906040528051906020012090509392505050565b600080604051806020016200029f906200030d565b6020820181038252601f19601f82011660405250905080858585604051602001620002cd9392919062000722565b60408051601f1981840301815290829052620002ed929160200162000810565b604051602081830303815290604052805190602001209150509392505050565b6116fe806200083283390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200034057600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156200039a576200039a62000345565b60405290565b6040516060810167ffffffffffffffff811182821017156200039a576200039a62000345565b60405160a0810167ffffffffffffffff811182821017156200039a576200039a62000345565b803567ffffffffffffffff811681146200034057600080fd5b600082601f8301126200041757600080fd5b6200042162000374565b8060408401858111156200043457600080fd5b845b8181101562000459576200044a81620003ec565b84526020938401930162000436565b509095945050505050565b8035600381106200034057600080fd5b600081830360a08112156200048857600080fd5b6200049262000374565b91506080811215620004a357600080fd5b50620004ae62000374565b83601f840112620004be57600080fd5b620004c862000374565b806040850186811115620004db57600080fd5b855b81811015620004f7578035845260209384019301620004dd565b5081845262000507878262000405565b602085015250505081526200051f6080830162000464565b602082015292915050565b60008060008385036102608112156200054257600080fd5b6200054d856200031b565b9350601f1981016102208112156200056457600080fd5b6200056e620003a0565b60e08212156200057d57600080fd5b62000587620003a0565b9150602087013582526040870135602083015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa084011215620005cb57600080fd5b620005d5620003c6565b92506060870135835260808701356020840152620005f660a088016200031b565b60408401526200060960c08801620003ec565b60608401526200061c60e08801620003ec565b60808401528260408301528181526200063a88610100890162000474565b60208201526200064f886101a0890162000474565b6040820152949794965050505061024092909201359150565b60038110620006a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b805180518360005b6002811015620006cd578251825260209283019290910190600101620006ac565b505050602090810151906040840160005b60028110156200070757835167ffffffffffffffff1682529282019290820190600101620006de565b505082015190506200071d608084018262000668565b505050565b60006102608201905073ffffffffffffffffffffffffffffffffffffffff8086168352845180516020850152602081015160408501526040810151905080516060850152602081015160808501528160408201511660a08501526060810151915067ffffffffffffffff80831660c08601528060808301511660e08601525050506020840151620007b8610100840182620006a4565b506040840151620007ce6101a0840182620006a4565b5082610240830152949350505050565b6000815160005b81811015620008015760208185018101518683015201620007e5565b50600093019283525090919050565b600062000829620008228386620007de565b84620007de565b94935050505056fe60e06040523480156200001157600080fd5b50604051620016fe380380620016fe8339810160408190526200003491620004ee565b6001600160a01b03838116608090815260a0839052835180516000908155602080830151600155604092830151805160029081558183015160035593810151600480546060840151929098166001600160e01b031990981697909717600160a01b6001600160401b03928316021790965590930151600580546001600160401b03191691909516179093559084015180518051869493600692918391620000dd9183916200020d565b506020820151620000f5906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200011e576200011e6200060f565b02179055505050604082015180518051600a8401919082906200014590829060026200020d565b5060208201516200015d906002808401919062000250565b505050602082015160038201805460ff191660018360028111156200018657620001866200060f565b021790555050509050506080516001600160a01b03166351ed6a306040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000625565b6001600160a01b031660c052506200064a915050565b82600281019282156200023e579160200282015b828111156200023e57825182559160200191906001019062000221565b506200024c929150620002f2565b5090565b6001830191839082156200023e5791602002820160005b83821115620002b357835183826101000a8154816001600160401b0302191690836001600160401b03160217905550926020019260080160208160070104928301926001030262000267565b8015620002e85782816101000a8154906001600160401b030219169055600801602081600701049283019260010302620002b3565b50506200024c9291505b5b808211156200024c5760008155600101620002f3565b80516001600160a01b03811681146200032157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000361576200036162000326565b60405290565b604051606081016001600160401b038111828210171562000361576200036162000326565b60405160a081016001600160401b038111828210171562000361576200036162000326565b80516001600160401b03811681146200032157600080fd5b600082601f830112620003db57600080fd5b620003e56200033c565b806040840185811115620003f857600080fd5b845b818110156200041d576200040e81620003b1565b845260209384019301620003fa565b509095945050505050565b8051600381106200032157600080fd5b600081830360a08112156200044c57600080fd5b620004566200033c565b915060808112156200046757600080fd5b50620004726200033c565b83601f8401126200048257600080fd5b6200048c6200033c565b8060408501868111156200049f57600080fd5b855b81811015620004bb578051845260209384019301620004a1565b50818452620004cb8782620003c9565b60208501525050508152620004e36080830162000428565b602082015292915050565b60008060008385036102608112156200050657600080fd5b620005118562000309565b9350601f1981016102208112156200052857600080fd5b6200053262000367565b60e08212156200054157600080fd5b6200054b62000367565b9150602087015182526040870151602083015260a0605f19840112156200057157600080fd5b6200057b6200038c565b925060608701518352608087015160208401526200059c60a0880162000309565b6040840152620005af60c08801620003b1565b6060840152620005c260e08801620003b1565b6080840152826040830152818152620005e088610100890162000438565b6020820152620005f5886101a0890162000438565b604082015280945050505061024084015190509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200063857600080fd5b620006438262000309565b9392505050565b60805160a05160c05161104d620006b160003960008181610148015281816102ec0152818161036e01526104b601526000818160e901526104170152600081816101e901528181610390015281816103e50152818161076a01526107df015261104d6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80637476083b1161008c578063930412af11610066578063930412af146101d45780639451944d146101dc578063cb23bcb5146101e4578063f0e978891461020b57600080fd5b80637476083b1461018a578063875b2af01461019d5780639252175b146101bd57600080fd5b80634b7a7538116100bd5780634b7a75381461013b57806351ed6a30146101435780636b74d5151461018257600080fd5b80632113ed21146100e457806326c0e5c51461011e57806330fc43ed14610128575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610126610213565b005b610126610136366004610cc8565b61022e565b610126610354565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610115565b610126610474565b610126610198366004610cc8565b610484565b61010b6101ab366004610ce1565b600e6020526000908152604090205481565b6101c5610516565b60405161011593929190610db5565b610126610768565b6101266107dd565b61016a7f000000000000000000000000000000000000000000000000000000000000000081565b60035461010b565b336000908152600e602052604090205461022c9061022e565b565b336000908152600e60205260408120549081900361027f576040517fe06b2da50000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b808211156102c9576040517fa47b7c650000000000000000000000000000000000000000000000000000000081523360048201526024810183905260448101829052606401610276565b6102d38282610e4b565b336000818152600e602052604090209190915561031b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169084610864565b60405182815233907f8108595eb6bad3acefa9da467d90cc2217686d5c5ac85460f8b7849c840645fc9060200160405180910390a25050565b600061035f60035490565b90506103b56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610912565b6040517f76a610180000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906376a610189061043f9084906000907f000000000000000000000000000000000000000000000000000000000000000090600401610ec3565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b5050505050565b61047c610768565b61022c6107dd565b336000908152600e6020526040812080548392906104a3908490610f56565b909155506104de90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846109f6565b60405181815233907f0a7bb2e28cc4698aac06db79cf9163bfcc20719286cf59fa7d492ceda1b8edc29060200160405180910390a250565b6040805160608082018352600080548352600154602080850191909152845160a081018652600280548252600354928201929092526004546001600160a01b0381168288015274010000000000000000000000000000000000000000900467ffffffffffffffff9081169482019490945260055490931660808085019190915284860193909352845160c08101808752949592949093600693859390840192859284929086019184919082845b8154815260200190600101908083116105c3575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116105fb579050505050919092525050508152600382015460209091019060ff16600281111561066a5761066a610d0a565b600281111561067b5761067b610d0a565b9052506040805160c08101825291929190600a830190829081018281608084018260028282826020028201915b8154815260200190600101908083116106a8575050509183525050604080518082019182905260209092019190600284810191826000855b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106e0579050505050919092525050508152600382015460209091019060ff16600281111561074f5761074f610d0a565b600281111561076057610760610d0a565b905250905083565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166357ef4ab96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107c357600080fd5b505af11580156107d7573d6000803e3d6000fd5b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663613739196040518163ffffffff1660e01b81526004016020604051808303816000875af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190610f69565b50565b6040516001600160a01b03831660248201526044810182905261090d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a47565b505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190610f69565b6109aa9190610f56565b6040516001600160a01b0385166024820152604481018290529091506107d79085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016108a9565b6040516001600160a01b03808516602483015283166044820152606481018290526107d79085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016108a9565b6000610a9c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b2c9092919063ffffffff16565b80519091501561090d5780806020019051810190610aba9190610f82565b61090d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610276565b6060610b3b8484600085610b45565b90505b9392505050565b606082471015610bbd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610276565b6001600160a01b0385163b610c145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610276565b600080866001600160a01b03168587604051610c309190610fc8565b60006040518083038185875af1925050503d8060008114610c6d576040519150601f19603f3d011682016040523d82523d6000602084013e610c72565b606091505b5091509150610c82828286610c8f565b925050505b949350505050565b60608315610c9e575081610b3e565b825115610cae5782518084602001fd5b8160405162461bcd60e51b81526004016102769190610fe4565b600060208284031215610cda57600080fd5b5035919050565b600060208284031215610cf357600080fd5b81356001600160a01b0381168114610b3e57600080fd5b634e487b7160e01b600052602160045260246000fd5b60038110610d3e57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610d69578251825260209283019290910190600101610d4a565b505050602090810151906040840160005b6002811015610da157835167ffffffffffffffff1682529282019290820190600101610d7a565b5050820151905061090d6080840182610d20565b6000610220820190508451825260208501516020830152604085015180516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c0860152505050610e2760e0830185610d42565b610c87610180830184610d42565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5e57610e5e610e35565b92915050565b818160005b6002811015610e88578154835260209092019160019182019101610e69565b505050600281015467ffffffffffffffff8082166040850152808260401c166060850152505060ff60038201541661090d6080840182610d20565b8381528254602082015260018301546040820152600283015460608201526003830154608082015260048301546001600160a01b03811660a0808401919091521c67ffffffffffffffff90811660c083015260058401541660e08201526102608101610f36610100830160068601610e64565b610f476101a08301600a8601610e64565b82610240830152949350505050565b80820180821115610e5e57610e5e610e35565b600060208284031215610f7b57600080fd5b5051919050565b600060208284031215610f9457600080fd5b81518015158114610b3e57600080fd5b60005b83811015610fbf578181015183820152602001610fa7565b50506000910152565b60008251610fda818460208701610fa4565b9190910192915050565b6020815260008251806020840152611003816040850160208701610fa4565b601f01601f1916919091016040019291505056fea264697066735822122038643007f067f35e83b75661fe5e8bbb32f0e611281d1ed8f6083007eaa99cbc64736f6c63430008110033a264697066735822122023ad8c2996af69a5d1205d4f74813b28e665c9602add25f40caccec4ddfde9e764736f6c63430008110033", } // AssertionStakingPoolCreatorABI is the input ABI used to generate the binding from. diff --git a/solgen/go/bridgegen/bridgegen.go b/solgen/go/bridgegen/bridgegen.go index c4babe25d..d396f6503 100644 --- a/solgen/go/bridgegen/bridgegen.go +++ b/solgen/go/bridgegen/bridgegen.go @@ -10436,7 +10436,7 @@ func (_Outbox *OutboxFilterer) ParseSendRootUpdated(log types.Log) (*OutboxSendR // SequencerInboxMetaData contains all meta data concerning the SequencerInbox contract. var SequencerInboxMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxDataSize\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"AlreadyValidDASKeyset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stored\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"BadSequencerNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataNotAuthenticated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDataLength\",\"type\":\"uint256\"}],\"name\":\"DataTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedBackwards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedTooFar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeBlockTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeTimeTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HadZeroInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectMessagePreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"NoSuchKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBatchPoster\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOrigin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"InboxMessageDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"}],\"name\":\"InboxMessageDeliveredFromOrigin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidateKeyset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SequencerBatchData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"beforeAcc\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"afterAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delayedAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlockNumber\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structISequencerInbox.TimeBounds\",\"name\":\"timeBounds\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enumISequencerInbox.BatchDataLocation\",\"name\":\"dataLocation\",\"type\":\"uint8\"}],\"name\":\"SequencerBatchDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"SetValidKeyset\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DATA_AUTHENTICATED_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEADER_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2Batch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dasKeySetInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidKeyset\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"creationBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64[2]\",\"name\":\"l1BlockAndTime\",\"type\":\"uint64[2]\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"name\":\"forceInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"getKeysetCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"inboxAccs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"invalidateKeysetHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBatchPoster\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"isValidKeysetHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDataSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTimeVariation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelayAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOwnable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBatchPoster_\",\"type\":\"bool\"}],\"name\":\"setIsBatchPoster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSequencer_\",\"type\":\"bool\"}],\"name\":\"setIsSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"setMaxTimeVariation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"setValidKeyset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayedMessagesRead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRollupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610100604052306080524660c0526200002362000061602090811b62001c9717901c565b151560e0523480156200003557600080fd5b5060405162002ed038038062002ed08339810160408190526200005891620000fe565b60a05262000149565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000a1919062000118565b600060405180830381855afa9150503d8060008114620000de576040519150601f19603f3d011682016040523d82523d6000602084013e620000e3565b606091505b5091509150818015620000f7575080516020145b9250505090565b6000602082840312156200011157600080fd5b5051919050565b6000825160005b818110156200013b57602081860181015185830152016200011f565b506000920191825250919050565b60805160a05160c05160e051612d316200019f600039600081816114c0015261214e0152600061114901526000818161042a01528181611d930152611de801526000818161052901526108b80152612d316000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806384420860116100ee578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610412578063e8eb1dc314610425578063ebea461d1461044c578063f19815781461048257600080fd5b8063d9dd67ab14610394578063e0bc9729146103a7578063e5a358c8146103ba57600080fd5b8063b31761f8116100c8578063b31761f814610343578063cb23bcb514610356578063d1ce8da81461038157600080fd5b806384420860146103155780638f111f3c1461032857806396cc5c781461033b57600080fd5b80636ae71f121161015b5780636f12b0c9116101355780636f12b0c914610282578063715ea34b1461029557806371c3e6fe146102e95780637fa3a40e1461030c57600080fd5b80636ae71f12146102445780636d46e9871461024c5780636e7df3e71461026f57600080fd5b80631f9566321161018c5780631f95663214610216578063258f04951461022957806327957a491461023c57600080fd5b806306f13056146101b35780631637be48146101ce5780631f7a92b214610201575b600080fd5b6101bb610495565b6040519081526020015b60405180910390f35b6101f16101dc3660046125e9565b60009081526008602052604090205460ff1690565b60405190151581526020016101c5565b61021461020f36600461261a565b61051f565b005b610214610224366004612669565b610734565b6101bb6102373660046125e9565b610841565b6101bb602881565b6102146108ae565b6101f161025a3660046126a2565b60096020526000908152604090205460ff1681565b61021461027d366004612669565b610a51565b61021461029036600461270f565b610b5e565b6102c96102a33660046125e9565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101c5565b6101f16102f73660046126a2565b60036020526000908152604090205460ff1681565b6101bb60005481565b6102146103233660046125e9565b610d95565b61021461033636600461277a565b610eef565b610214611146565b6102146103513660046127f7565b6111d5565b600254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016101c5565b61021461038f36600461286b565b6112dc565b6101bb6103a23660046125e9565b611640565b6102146103b536600461277a565b6116cd565b6103e17f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101c5565b600154610369906001600160a01b031681565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104629392919084565b6040805194855260208501939093529183015260608201526080016101c5565b6102146104903660046128ad565b611834565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061291d565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610605576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610645576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612936565b6001600160a01b0316336001600160a01b0316146107f157600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff1691810182905290820361089a5760405162f20c5d60e01b8152600481018490526024016105b9565b6020015167ffffffffffffffff1692915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105b9565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146109a957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105b9565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac89190612936565b6001600160a01b0316336001600160a01b031614610b0e57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610b9d576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610bcd57604051632dd9fc9760e01b815260040160405180910390fd5b600080610bdb888888611d5d565b90925090506000808080610bf2868b8d8480611fa5565b93509350935093508c8414610c245760405163ac7411c960e01b815260048101859052602481018e90526044016105b9565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610c5f9493929190612953565b60405180910390a4505050506001600160a01b038416159150610d8c9050573660006020610c8e83601f6129de565b610c9891906129f1565b9050610200610ca8600283612af7565b610cb291906129f1565b610cbd826006612b06565b610cc791906129de565b610cd190846129de565b9250333214610cdf57600091505b836001600160a01b031663e3db8a49335a610cfa9087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d889190612b30565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c9190612936565b6001600160a01b0316336001600160a01b031614610e5257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b60008181526008602052604090205460ff16610e835760405162f20c5d60e01b8152600481018290526024016105b9565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214610f2e576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610f5e57604051632dd9fc9760e01b815260040160405180910390fd5b600080610f6c8a8a8a611d5d565b90925090508a81838b8b8a8a6000808080610f8a89888a8989611fa5565b93509350935093508a8414158015610fa457506000198b14155b15610fcc5760405163ac7411c960e01b815260048101859052602481018c90526044016105b9565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516110079493929190612953565b60405180910390a4505050506001600160a01b038b1615985061113b97505050505050505057366000602061103d83601f6129de565b61104791906129f1565b9050610200611057600283612af7565b61106191906129f1565b61106c826006612b06565b61107691906129de565b61108090846129de565b925033321461108e57600091505b836001600160a01b031663e3db8a49335a6110a99087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612b30565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361119f576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612936565b6001600160a01b0316336001600160a01b03161461129257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612936565b6001600160a01b0316336001600160a01b03161461139957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b600082826040516113ab929190612b4d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106114715760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105b9565b60008181526008602052604090205460ff16156114bd576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105b9565b437f00000000000000000000000000000000000000000000000000000000000000001561154a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611547919061291d565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906116059088908890612b5d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c7919061291d565b92915050565b8260005a3360009081526003602052604090205490915060ff161580156116ff57506002546001600160a01b03163314155b1561171d57604051632dd9fc9760e01b815260040160405180910390fd5b60008061172b8a8a8a611d5d565b909250905060008b82848b8a8a8680806117488787838888611fa5565b929c5090945092509050888a1480159061176457506000198914155b1561178c5760405163ac7411c960e01b8152600481018b9052602481018a90526044016105b9565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d60016040516117c79493929190612953565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c60405161180a929190612b5d565b60405180910390a25050506001600160a01b0382161561113b57366000602061103d83601f6129de565b600054861161186f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061195486846118836020890189612ba2565b61189360408a0160208b01612ba2565b61189e60018d612b1d565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b60045490915043906119696020880188612ba2565b67ffffffffffffffff1661197d91906129de565b106119b4576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065442906119c96040880160208901612ba2565b67ffffffffffffffff166119dd91906129de565b10611a14576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611a9d576001546001600160a01b031663d5719dc2611a3b60028b612b1d565b6040518263ffffffff1660e01b8152600401611a5991815260200190565b602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a919061291d565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611ae3908c612b1d565b6040518263ffffffff1660e01b8152600401611b0191815260200190565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061291d565b14611b79576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b858a6123fc565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061291d565b9050600080548d83611c1991906129de565b611c239190612b1d565b9050600080600080611c39898860008989611fa5565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611c7c9493929190612953565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611d039190612bf0565b600060405180830381855afa9150503d8060008114611d3e576040519150601f19603f3d011682016040523d82523d6000602084013e611d43565b606091505b5091509150818015611d56575080516020145b9250505090565b604080516080810182526000808252602082018190529181018290526060810182905284846000611d8f8260286129de565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611e14576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105b9565b8115801590611e8057507f4000000000000000000000000000000000000000000000000000000000000000808484600081611e5157611e51612b8c565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611eb7576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218210801590611f01575082826000818110611ed657611ed6612b8c565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b15611f55576000611f16602160018587612c0c565b611f1f91612c36565b60008181526008602052604090205490915060ff16611f535760405162f20c5d60e01b8152600481018290526024016105b9565b505b600080611f6188612441565b915091506000828b8b604051602001611f7c93929190612c54565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b600080600080600054881015611fe7576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061291d565b881115612097576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612c7c565b60008c90559296509094509250905086156123f0573360607f0000000000000000000000000000000000000000000000000000000000000000156122bc576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d7919061291d565b905060006121e548836129f1565b905067ffffffffffffffff81111561223f5760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105b9565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc9092019052915061230a9050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b1079161236f9187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b2919061291d565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516123e49190612cb2565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905260008061242b85612441565b8151602090920191909120969095509350505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161246e612519565b905060008160000151826020015183604001518460600151886040516020016124ee95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b6040516020818303038152906040529050602881511461251057612510612ce5565b94909350915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600654421115612585576006546125789042612b1d565b67ffffffffffffffff1681525b60075461259290426129de565b67ffffffffffffffff1660208201526004544311156125c8576004546125b89043612b1d565b67ffffffffffffffff1660408201525b6005546125d590436129de565b67ffffffffffffffff166060820152919050565b6000602082840312156125fb57600080fd5b5035919050565b6001600160a01b038116811461261757600080fd5b50565b60008082840360a081121561262e57600080fd5b833561263981612602565b92506080601f198201121561264d57600080fd5b506020830190509250929050565b801515811461261757600080fd5b6000806040838503121561267c57600080fd5b823561268781612602565b915060208301356126978161265b565b809150509250929050565b6000602082840312156126b457600080fd5b81356126bf81612602565b9392505050565b60008083601f8401126126d857600080fd5b50813567ffffffffffffffff8111156126f057600080fd5b60208301915083602082850101111561270857600080fd5b9250929050565b60008060008060006080868803121561272757600080fd5b85359450602086013567ffffffffffffffff81111561274557600080fd5b612751888289016126c6565b90955093505060408601359150606086013561276c81612602565b809150509295509295909350565b600080600080600080600060c0888a03121561279557600080fd5b87359650602088013567ffffffffffffffff8111156127b357600080fd5b6127bf8a828b016126c6565b9097509550506040880135935060608801356127da81612602565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561280957600080fd5b6040516080810181811067ffffffffffffffff8211171561283a57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561287e57600080fd5b823567ffffffffffffffff81111561289557600080fd5b6128a1858286016126c6565b90969095509350505050565b60008060008060008060e087890312156128c657600080fd5b86359550602087013560ff811681146128de57600080fd5b945060808701888111156128f157600080fd5b60408801945035925060a087013561290881612602565b8092505060c087013590509295509295509295565b60006020828403121561292f57600080fd5b5051919050565b60006020828403121561294857600080fd5b81516126bf81612602565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a084015250600383106129b957634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156116c7576116c76129c8565b600082612a0e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a4e578160001904821115612a3457612a346129c8565b80851615612a4157918102915b93841c9390800290612a18565b509250929050565b600082612a65575060016116c7565b81612a72575060006116c7565b8160018114612a885760028114612a9257612aae565b60019150506116c7565b60ff841115612aa357612aa36129c8565b50506001821b6116c7565b5060208310610133831016604e8410600b8410161715612ad1575081810a6116c7565b612adb8383612a13565b8060001904821115612aef57612aef6129c8565b029392505050565b60006126bf60ff841683612a56565b80820281158282048414176116c7576116c76129c8565b818103818111156116c7576116c76129c8565b600060208284031215612b4257600080fd5b81516126bf8161265b565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612bb457600080fd5b813567ffffffffffffffff811681146126bf57600080fd5b60005b83811015612be7578181015183820152602001612bcf565b50506000910152565b60008251612c02818460208701612bcc565b9190910192915050565b60008085851115612c1c57600080fd5b83861115612c2957600080fd5b5050820193919092039150565b803560208310156116c757600019602084900360031b1b1692915050565b60008451612c66818460208901612bcc565b8201838582376000930192835250909392505050565b60008060008060808587031215612c9257600080fd5b505082516020840151604085015160609095015191969095509092509050565b6020815260008251806020840152612cd1816040850160208701612bcc565b601f01601f19169190910160400192915050565b634e487b7160e01b600052600160045260246000fdfea26469706673582212206c56fdb76e8fb6df58f354202f7652324eed2c8511af5d2284dcbcefa439446164736f6c63430008110033", + Bin: "0x610100604052306080524660c0526200002362000061602090811b62001c9717901c565b151560e0523480156200003557600080fd5b5060405162002ed038038062002ed08339810160408190526200005891620000fe565b60a05262000149565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000a1919062000118565b600060405180830381855afa9150503d8060008114620000de576040519150601f19603f3d011682016040523d82523d6000602084013e620000e3565b606091505b5091509150818015620000f7575080516020145b9250505090565b6000602082840312156200011157600080fd5b5051919050565b6000825160005b818110156200013b57602081860181015185830152016200011f565b506000920191825250919050565b60805160a05160c05160e051612d316200019f600039600081816114c0015261214e0152600061114901526000818161042a01528181611d930152611de801526000818161052901526108b80152612d316000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806384420860116100ee578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610412578063e8eb1dc314610425578063ebea461d1461044c578063f19815781461048257600080fd5b8063d9dd67ab14610394578063e0bc9729146103a7578063e5a358c8146103ba57600080fd5b8063b31761f8116100c8578063b31761f814610343578063cb23bcb514610356578063d1ce8da81461038157600080fd5b806384420860146103155780638f111f3c1461032857806396cc5c781461033b57600080fd5b80636ae71f121161015b5780636f12b0c9116101355780636f12b0c914610282578063715ea34b1461029557806371c3e6fe146102e95780637fa3a40e1461030c57600080fd5b80636ae71f12146102445780636d46e9871461024c5780636e7df3e71461026f57600080fd5b80631f9566321161018c5780631f95663214610216578063258f04951461022957806327957a491461023c57600080fd5b806306f13056146101b35780631637be48146101ce5780631f7a92b214610201575b600080fd5b6101bb610495565b6040519081526020015b60405180910390f35b6101f16101dc3660046125e9565b60009081526008602052604090205460ff1690565b60405190151581526020016101c5565b61021461020f36600461261a565b61051f565b005b610214610224366004612669565b610734565b6101bb6102373660046125e9565b610841565b6101bb602881565b6102146108ae565b6101f161025a3660046126a2565b60096020526000908152604090205460ff1681565b61021461027d366004612669565b610a51565b61021461029036600461270f565b610b5e565b6102c96102a33660046125e9565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101c5565b6101f16102f73660046126a2565b60036020526000908152604090205460ff1681565b6101bb60005481565b6102146103233660046125e9565b610d95565b61021461033636600461277a565b610eef565b610214611146565b6102146103513660046127f7565b6111d5565b600254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016101c5565b61021461038f36600461286b565b6112dc565b6101bb6103a23660046125e9565b611640565b6102146103b536600461277a565b6116cd565b6103e17f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101c5565b600154610369906001600160a01b031681565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104629392919084565b6040805194855260208501939093529183015260608201526080016101c5565b6102146104903660046128ad565b611834565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061291d565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610605576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610645576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612936565b6001600160a01b0316336001600160a01b0316146107f157600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff1691810182905290820361089a5760405162f20c5d60e01b8152600481018490526024016105b9565b6020015167ffffffffffffffff1692915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105b9565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146109a957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105b9565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac89190612936565b6001600160a01b0316336001600160a01b031614610b0e57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610b9d576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610bcd57604051632dd9fc9760e01b815260040160405180910390fd5b600080610bdb888888611d5d565b90925090506000808080610bf2868b8d8480611fa5565b93509350935093508c8414610c245760405163ac7411c960e01b815260048101859052602481018e90526044016105b9565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610c5f9493929190612953565b60405180910390a4505050506001600160a01b038416159150610d8c9050573660006020610c8e83601f6129de565b610c9891906129f1565b9050610200610ca8600283612af7565b610cb291906129f1565b610cbd826006612b06565b610cc791906129de565b610cd190846129de565b9250333214610cdf57600091505b836001600160a01b031663e3db8a49335a610cfa9087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d889190612b30565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c9190612936565b6001600160a01b0316336001600160a01b031614610e5257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b60008181526008602052604090205460ff16610e835760405162f20c5d60e01b8152600481018290526024016105b9565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214610f2e576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610f5e57604051632dd9fc9760e01b815260040160405180910390fd5b600080610f6c8a8a8a611d5d565b90925090508a81838b8b8a8a6000808080610f8a89888a8989611fa5565b93509350935093508a8414158015610fa457506000198b14155b15610fcc5760405163ac7411c960e01b815260048101859052602481018c90526044016105b9565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516110079493929190612953565b60405180910390a4505050506001600160a01b038b1615985061113b97505050505050505057366000602061103d83601f6129de565b61104791906129f1565b9050610200611057600283612af7565b61106191906129f1565b61106c826006612b06565b61107691906129de565b61108090846129de565b925033321461108e57600091505b836001600160a01b031663e3db8a49335a6110a99087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612b30565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361119f576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612936565b6001600160a01b0316336001600160a01b03161461129257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612936565b6001600160a01b0316336001600160a01b03161461139957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b600082826040516113ab929190612b4d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106114715760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105b9565b60008181526008602052604090205460ff16156114bd576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105b9565b437f00000000000000000000000000000000000000000000000000000000000000001561154a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611547919061291d565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906116059088908890612b5d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c7919061291d565b92915050565b8260005a3360009081526003602052604090205490915060ff161580156116ff57506002546001600160a01b03163314155b1561171d57604051632dd9fc9760e01b815260040160405180910390fd5b60008061172b8a8a8a611d5d565b909250905060008b82848b8a8a8680806117488787838888611fa5565b929c5090945092509050888a1480159061176457506000198914155b1561178c5760405163ac7411c960e01b8152600481018b9052602481018a90526044016105b9565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d60016040516117c79493929190612953565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c60405161180a929190612b5d565b60405180910390a25050506001600160a01b0382161561113b57366000602061103d83601f6129de565b600054861161186f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061195486846118836020890189612ba2565b61189360408a0160208b01612ba2565b61189e60018d612b1d565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b60045490915043906119696020880188612ba2565b67ffffffffffffffff1661197d91906129de565b106119b4576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065442906119c96040880160208901612ba2565b67ffffffffffffffff166119dd91906129de565b10611a14576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611a9d576001546001600160a01b031663d5719dc2611a3b60028b612b1d565b6040518263ffffffff1660e01b8152600401611a5991815260200190565b602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a919061291d565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611ae3908c612b1d565b6040518263ffffffff1660e01b8152600401611b0191815260200190565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061291d565b14611b79576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b858a6123fc565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061291d565b9050600080548d83611c1991906129de565b611c239190612b1d565b9050600080600080611c39898860008989611fa5565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611c7c9493929190612953565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611d039190612bf0565b600060405180830381855afa9150503d8060008114611d3e576040519150601f19603f3d011682016040523d82523d6000602084013e611d43565b606091505b5091509150818015611d56575080516020145b9250505090565b604080516080810182526000808252602082018190529181018290526060810182905284846000611d8f8260286129de565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611e14576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105b9565b8115801590611e8057507f4000000000000000000000000000000000000000000000000000000000000000808484600081611e5157611e51612b8c565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611eb7576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218210801590611f01575082826000818110611ed657611ed6612b8c565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b15611f55576000611f16602160018587612c0c565b611f1f91612c36565b60008181526008602052604090205490915060ff16611f535760405162f20c5d60e01b8152600481018290526024016105b9565b505b600080611f6188612441565b915091506000828b8b604051602001611f7c93929190612c54565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b600080600080600054881015611fe7576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061291d565b881115612097576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612c7c565b60008c90559296509094509250905086156123f0573360607f0000000000000000000000000000000000000000000000000000000000000000156122bc576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d7919061291d565b905060006121e548836129f1565b905067ffffffffffffffff81111561223f5760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105b9565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc9092019052915061230a9050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b1079161236f9187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b2919061291d565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516123e49190612cb2565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905260008061242b85612441565b8151602090920191909120969095509350505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161246e612519565b905060008160000151826020015183604001518460600151886040516020016124ee95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b6040516020818303038152906040529050602881511461251057612510612ce5565b94909350915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600654421115612585576006546125789042612b1d565b67ffffffffffffffff1681525b60075461259290426129de565b67ffffffffffffffff1660208201526004544311156125c8576004546125b89043612b1d565b67ffffffffffffffff1660408201525b6005546125d590436129de565b67ffffffffffffffff166060820152919050565b6000602082840312156125fb57600080fd5b5035919050565b6001600160a01b038116811461261757600080fd5b50565b60008082840360a081121561262e57600080fd5b833561263981612602565b92506080601f198201121561264d57600080fd5b506020830190509250929050565b801515811461261757600080fd5b6000806040838503121561267c57600080fd5b823561268781612602565b915060208301356126978161265b565b809150509250929050565b6000602082840312156126b457600080fd5b81356126bf81612602565b9392505050565b60008083601f8401126126d857600080fd5b50813567ffffffffffffffff8111156126f057600080fd5b60208301915083602082850101111561270857600080fd5b9250929050565b60008060008060006080868803121561272757600080fd5b85359450602086013567ffffffffffffffff81111561274557600080fd5b612751888289016126c6565b90955093505060408601359150606086013561276c81612602565b809150509295509295909350565b600080600080600080600060c0888a03121561279557600080fd5b87359650602088013567ffffffffffffffff8111156127b357600080fd5b6127bf8a828b016126c6565b9097509550506040880135935060608801356127da81612602565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561280957600080fd5b6040516080810181811067ffffffffffffffff8211171561283a57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561287e57600080fd5b823567ffffffffffffffff81111561289557600080fd5b6128a1858286016126c6565b90969095509350505050565b60008060008060008060e087890312156128c657600080fd5b86359550602087013560ff811681146128de57600080fd5b945060808701888111156128f157600080fd5b60408801945035925060a087013561290881612602565b8092505060c087013590509295509295509295565b60006020828403121561292f57600080fd5b5051919050565b60006020828403121561294857600080fd5b81516126bf81612602565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a084015250600383106129b957634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156116c7576116c76129c8565b600082612a0e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a4e578160001904821115612a3457612a346129c8565b80851615612a4157918102915b93841c9390800290612a18565b509250929050565b600082612a65575060016116c7565b81612a72575060006116c7565b8160018114612a885760028114612a9257612aae565b60019150506116c7565b60ff841115612aa357612aa36129c8565b50506001821b6116c7565b5060208310610133831016604e8410600b8410161715612ad1575081810a6116c7565b612adb8383612a13565b8060001904821115612aef57612aef6129c8565b029392505050565b60006126bf60ff841683612a56565b80820281158282048414176116c7576116c76129c8565b818103818111156116c7576116c76129c8565b600060208284031215612b4257600080fd5b81516126bf8161265b565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612bb457600080fd5b813567ffffffffffffffff811681146126bf57600080fd5b60005b83811015612be7578181015183820152602001612bcf565b50506000910152565b60008251612c02818460208701612bcc565b9190910192915050565b60008085851115612c1c57600080fd5b83861115612c2957600080fd5b5050820193919092039150565b803560208310156116c757600019602084900360031b1b1692915050565b60008451612c66818460208901612bcc565b8201838582376000930192835250909392505050565b60008060008060808587031215612c9257600080fd5b505082516020840151604085015160609095015191969095509092509050565b6020815260008251806020840152612cd1816040850160208701612bcc565b601f01601f19169190910160400192915050565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220bc6cfa10c826ec43c05cc4f39c761f8cf3fc72be0d153f7ef9800f49a398406764736f6c63430008110033", } // SequencerInboxABI is the input ABI used to generate the binding from. diff --git a/solgen/go/challengeV2gen/challengeV2gen.go b/solgen/go/challengeV2gen/challengeV2gen.go index 8ad823261..dd88522a4 100644 --- a/solgen/go/challengeV2gen/challengeV2gen.go +++ b/solgen/go/challengeV2gen/challengeV2gen.go @@ -92,8 +92,8 @@ type OneStepData struct { // EdgeChallengeManagerMetaData contains all meta data concerning the EdgeChallengeManager contract. var EdgeChallengeManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AssertionHashEmpty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"h2\",\"type\":\"bytes32\"}],\"name\":\"AssertionHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNoSibling\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"argLevel\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"claimLevel\",\"type\":\"uint256\"}],\"name\":\"ClaimEdgeInvalidLevel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"ClaimEdgeNotLengthOneRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimEdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeClaimMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"edgeId2\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"level1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"level2\",\"type\":\"uint256\"}],\"name\":\"EdgeLevelInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"ancestorEdgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotAncestor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"EdgeNotConfirmed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotLayerZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"EdgeNotLengthOne\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"EdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eType\",\"type\":\"uint256\"}],\"name\":\"EdgeTypeNotBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eType\",\"type\":\"uint256\"}],\"name\":\"EdgeTypeNotSmallStep\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeUnrivaled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyAssertionChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyChallengePeriod\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyClaimId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEdgeSpecificProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyFirstRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOneStepProofEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOriginId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyPrefixProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStakeReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartRoot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"h1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"h2\",\"type\":\"uint256\"}],\"name\":\"HeightDiffLtTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thresholdBlocks\",\"type\":\"uint256\"}],\"name\":\"InsufficientConfirmationBlocks\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeight\",\"type\":\"uint256\"}],\"name\":\"InvalidEndHeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"InvalidHeights\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevels\",\"type\":\"uint256\"}],\"name\":\"LevelTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxProofLength\",\"type\":\"uint256\"}],\"name\":\"MerkleProofTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"NotPowerOfTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"}],\"name\":\"OriginIdMutualIdMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"confirmedRivalId\",\"type\":\"bytes32\"}],\"name\":\"RivalEdgeConfirmed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroBigStepLevels\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasRival\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isLayerZero\",\"type\":\"bool\"}],\"name\":\"EdgeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"lowerChildAlreadyExists\",\"type\":\"bool\"}],\"name\":\"EdgeBisected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByChildren\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByClaim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByOneStepProof\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalTimeUnrivaled\",\"type\":\"uint256\"}],\"name\":\"EdgeConfirmedByTime\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"EdgeRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LAYERZERO_BIGSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_BLOCKEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_SMALLSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BIGSTEP_LEVEL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionChain\",\"outputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bisectionHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"}],\"name\":\"bisectEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"name\":\"calculateEdgeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"}],\"name\":\"calculateMutualId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengePeriodBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"confirmEdgeByChildren\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"confirmEdgeByClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structOneStepData\",\"name\":\"oneStepData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"prevConfig\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"beforeHistoryInclusionProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"afterHistoryInclusionProof\",\"type\":\"bytes32[]\"}],\"name\":\"confirmEdgeByOneStepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"ancestorEdges\",\"type\":\"bytes32[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"internalType\":\"structExecutionStateData\",\"name\":\"claimStateData\",\"type\":\"tuple\"}],\"name\":\"confirmEdgeByTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structCreateEdgeArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"createLayerZeroEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excessStakeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"firstRival\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getEdge\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAtBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"refunded\",\"type\":\"bool\"}],\"internalType\":\"structChallengeEdge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumEdgeType\",\"name\":\"eType\",\"type\":\"uint8\"}],\"name\":\"getLayerZeroEndHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getPrevAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasLengthOneRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"_assertionChain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_challengePeriodBlocks\",\"type\":\"uint256\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"_oneStepProofEntry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"_stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_excessStakeReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_numBigStepLevel\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oneStepProofEntry\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"refundStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"timeUnrivaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615eb880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635d9e2444116101045780639a4fc504116100a2578063e94e051e11610071578063e94e051e1461041d578063eae0328b14610430578063f8ee77d614610443578063fda2892e1461044c57600080fd5b80639a4fc504146103af578063bce6f54f146103c2578063c8bc4e43146103e2578063d6a6bffc1461040a57600080fd5b8063748926f3116100de578063748926f314610363578063750e0c0f146103765780638c1b3a4014610389578063908517e91461039c57600080fd5b80635d9e24441461033e57806360c7dc471461034757806364deed591461035057600080fd5b806342e1aaa81161017157806348dd29241161014b57806348dd2924146102e257806351ed6a30146102f557806354b64151146103085780635a48e0f41461032b57600080fd5b806342e1aaa81461029b57806346c2781a146102ae57806348923bc5146102b757600080fd5b80632f4a3065116101ad5780632f4a30651461021857806339042f7d1461022b5780633e35f5e81461027f578063416e66571461029257600080fd5b80630f73bfad146101d45780631dce5166146101e95780632eaa004314610205575b600080fd5b6101e76101e2366004615087565b61046c565b005b6101f2600a5481565b6040519081526020015b60405180910390f35b6101e76102133660046150a9565b6104d4565b6101e76102263660046150da565b610524565b6101f2610239366004615174565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b6101f261028d3660046150a9565b6108b4565b6101f2600b5481565b6101f26102a93660046151c7565b6108c7565b6101f260075481565b6009546102ca906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b6008546102ca906001600160a01b031681565b6005546102ca906001600160a01b031681565b61031b6103163660046150a9565b610978565b60405190151581526020016101fc565b6101f26103393660046150a9565b610985565b6101f2600d5481565b6101f260065481565b6101e761035e366004615306565b61099f565b6101e76103713660046150a9565b610d6b565b61031b6103843660046150a9565b610e25565b6101e76103973660046153b6565b610e3e565b61031b6103aa3660046150a9565b611012565b6101f26103bd36600461547f565b61101f565b6101f26103d03660046150a9565b60009081526002602052604090205490565b6103f56103f03660046154ba565b611466565b604080519283526020830191909152016101fc565b6101f261041836600461553a565b61161a565b6004546102ca906001600160a01b031681565b6101f261043e3660046150a9565b61168d565b6101f2600c5481565b61045f61045a3660046150a9565b6116a2565b6040516101fc91906155a7565b600d5461047f90600190849084906117e5565b600082815260016020526040902061049690611950565b827fb924f3aa473645c7cf5b10262f927ae4ccf869d7fc239c17144b0c67490d1c73836040516104c891815260200190565b60405180910390a35050565b6104df6001826119b1565b60008181526001602052604090206104f690611950565b60405182907f0d27fcaf1adc41547a5cfc99d2364f6c0dc7e81c9fc3fe8cb38abb409b48358a90600090a350565b600054610100900460ff16158080156105445750600054600160ff909116105b8061055e5750303b15801561055e575060005460ff166001145b6105d55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156105f8576000805461ff0019166101001790555b6001600160a01b038b16610638576040517fc83e086200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038d811691909117909155891661069d576040517ffb60b0ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038b1617905560008a9003610700576040517f8a0eedcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078a90556005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03878116919091179091556006859055831661076f576040517f0f0ec8a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790556107a088611b34565b6107c057604051633abfb6ff60e21b8152600481018990526024016105cc565b600a8890556107ce87611b34565b6107ee57604051633abfb6ff60e21b8152600481018890526024016105cc565b600b8790556107fc86611b34565b61081c57604051633abfb6ff60e21b8152600481018790526024016105cc565b600c869055600082900361085c576040517fa863d6e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d82905580156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b60006108c1600183611b5e565b92915050565b6000808260028111156108dc576108dc61557d565b036108e9575050600a5490565b60018260028111156108fd576108fd61557d565b0361090a575050600b5490565b600282600281111561091e5761091e61557d565b0361092b575050600c5490565b60405162461bcd60e51b815260206004820152601660248201527f556e7265636f676e69736564206564676520747970650000000000000000000060448201526064016105cc565b919050565b60006108c1600183611ccf565b60006108c182600d546001611d049092919063ffffffff16565b6000808351116109af57836109d7565b82600184516109be919061566c565b815181106109ce576109ce61567f565b60200260200101515b905060006109e6600183611e0e565b905060006109fa82600a0154600d54611e52565b90506000816002811115610a1057610a1061557d565b14610a4f5781600a01546040517f77b3c00d0000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b610a5882611ec8565b610aba57610a6582611eec565b600983015460088401546040517fe58c830800000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03909116602483015260448201526064016105cc565b60088054908301546040517f3083622800000000000000000000000000000000000000000000000000000000815260009283926001600160a01b0390911691633083622891610b0f9160040190815260200190565b602060405180830381865afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190615695565b90508015610cec57600880549085015460405163f9cee9df60e01b81526001600160a01b039092169163f9cee9df91610b99918a9060a08201359060c0830135906004016156df565b60006040518083038186803b158015610bb157600080fd5b505afa158015610bc5573d6000803e3d6000fd5b50506008546040517f1171558500000000000000000000000000000000000000000000000000000000815260a08a013560048201526001600160a01b03909116925063117155859150602401602060405180830381865afa158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c52919061575b565b6008546040517f56bbc9e600000000000000000000000000000000000000000000000000000000815260a089013560048201526001600160a01b03909116906356bbc9e690602401602060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb919061575b565b610ce5919061566c565b9150610cf1565b600091505b600754600d54600091610d0c916001918c918c918891611f78565b60008a8152600160205260409020909150610d2690611950565b897f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb83604051610d5891815260200190565b60405180910390a3505050505050505050565b6000610d78600183611e0e565b9050610d83816121cd565b6005546006546001600160a01b03909116908115801590610da357508015155b15610dc4576009830154610dc4906001600160a01b038481169116836122f1565b6000848152600160205260409020610ddb90611950565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b60008181526001602052604081206007015415156108c1565b6000610e5888600d546001611d049092919063ffffffff16565b6008546040517f04972af90000000000000000000000000000000000000000000000000000000081529192506001600160a01b0316906304972af990610ea49084908a90600401615774565b60006040518083038186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b5050505060006040518060600160405280886080016020810190610ef491906157e7565b67ffffffffffffffff168152600854604080517fe78cea9200000000000000000000000000000000000000000000000000000000815290516020938401936001600160a01b039093169263e78cea9292600480820193918290030181865afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f889190615802565b6001600160a01b0390811682528935602090920191909152600954600d54929350610fc5926001928d9216908c9086908c908c908c908c9061239f565b6000898152600160205260409020610fdc90611950565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b60006108c1600183612603565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905260006110718460000135600d54611e52565b9050600061107e826108c7565b9050611088614fec565b600083600281111561109c5761109c61557d565b03611352576110ae60a087018761581f565b90506000036110d057604051630c9ccac560e41b815260040160405180910390fd5b6000806110e060a089018961581f565b8101906110ed91906159a7565b60085481516020830151604080850151905163f9cee9df60e01b81529598509396506001600160a01b03909216945063f9cee9df936111359360608f01359391600401615a7c565b60006040518083038186803b15801561114d57600080fd5b505afa158015611161573d6000803e3d6000fd5b5050600854602080850151865191870151604080890151905163f9cee9df60e01b81526001600160a01b03909516965063f9cee9df95506111a794929392600401615a7c565b60006040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b50506040805160c08101825260608c01358082526020868101519083015260085483517fe531d8c7000000000000000000000000000000000000000000000000000000008152600481019290925291945091840192506001600160a01b03169063e531d8c790602401602060405180830381865afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190615695565b151581526008546020848101516040517f56bbc9e600000000000000000000000000000000000000000000000000000000815260048101919091529201916000916001600160a01b0316906356bbc9e690602401602060405180830381865afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611312919061575b565b118152835160208201528251604090910152600954600d54919450611349916001918b9187916001600160a01b03169089906126d2565b95505050611379565b600954600d5461137691600191899185916001600160a01b039091169087906126d2565b93505b6005546006546001600160a01b0390911690811580159061139957508015155b156113d55760008660c001516113af57306113bc565b6004546001600160a01b03165b90506113d36001600160a01b03841633838561275c565b505b8560400151866020015187600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d6848589606001518a608001518b60a001518c60c001518d60e0015160405161145195949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a45050925195945050505050565b60008060008060006114b5898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019594939250506127ad9050565b81519295509093509150158061154a578260400151836020015184600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d68485866060015187608001518860a001518960c001518a60e0015160405161154195949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d68485856060015186608001518760a001518860c001518960e001516040516115c695949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a4505191989197509095505050505050565b604080516020808201899052818301889052606082018790526080820186905260a08083018690528351808403909101815260c08301845280519082012060e08301526101008083018590528351808403909101815261012090920190925280519101206000905b979650505050505050565b60006108c161169d600184611e0e565b612b74565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152611716600183611e0e565b604080516101a0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e0820152600883015461010082015260098301546001600160a01b038116610120830152909291610140840191600160a01b900460ff16908111156117b1576117b161557d565b60018111156117c2576117c261557d565b8152600a8201546020820152600b9091015460ff16151560409091015292915050565b6000838152602085905260409020600701546118165760405162a7b02b60e01b8152600481018490526024016105cc565b6000828152602085905260409020600701546118475760405162a7b02b60e01b8152600481018490526024016105cc565b6001600083815260208690526040902060090154600160a01b900460ff1660018111156118765761187661557d565b146118b55760008281526020859052604090819020600901549051633bc499ed60e21b81526105cc918491600160a01b90910460ff1690600401615aa3565b6118c184848484612bb9565b600082815260208590526040902060080154831461192957600082815260208590526040908190206008015490517fc2adc3e80000000000000000000000000000000000000000000000000000000081526105cc918591600401918252602082015260400190565b6119338484612ce8565b600083815260208590526040902061194a90612d6b565b50505050565b600a810154815460028301546001840154600485015460408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c0909201905280519101206000906108c1565b6000818152602083905260409020600701546119e25760405162a7b02b60e01b8152600481018290526024016105cc565b60008181526020839052604080822060050154808352912060070154611a1d5760405162a7b02b60e01b8152600481018290526024016105cc565b6001600082815260208590526040902060090154600160a01b900460ff166001811115611a4c57611a4c61557d565b14611a8b5760008181526020849052604090819020600901549051633bc499ed60e21b81526105cc918391600160a01b90910460ff1690600401615aa3565b60008281526020849052604080822060060154808352912060070154611ac65760405162a7b02b60e01b8152600481018290526024016105cc565b6001600082815260208690526040902060090154600160a01b900460ff166001811115611af557611af561557d565b146119295760008181526020859052604090819020600901549051633bc499ed60e21b81526105cc918391600160a01b90910460ff1690600401615aa3565b600081600003611b4657506000919050565b6000611b5360018461566c565b929092161592915050565b600081815260208390526040812060070154611b8f5760405162a7b02b60e01b8152600481018390526024016105cc565b6000828152602084905260408120611ba690611950565b6000818152600186016020526040812054919250819003611bf3576040517fda10f67c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c4c57600084815260208690526040902060070154611c43904361566c565b925050506108c1565b600081815260208690526040902060070154611c7d5760405162a7b02b60e01b8152600481018290526024016105cc565b600081815260208690526040808220600790810154878452919092209091015480821115611cba57611caf818361566c565b9450505050506108c1565b60009450505050506108c1565b505092915050565b6000611cdb8383612603565b8015611cfd57506000828152602084905260409020611cf990612b74565b6001145b9392505050565b600080611d118585611e0e565b90506002611d2382600a015485611e52565b6002811115611d3457611d3461557d565b03611d5a5780546000908152600186016020526040902054611d568682611e0e565b9150505b6001611d6a82600a015485611e52565b6002811115611d7b57611d7b61557d565b03611da55780546000908152600186016020526040902054611d9d8682611e0e565b915050611d5a565b6000611db582600a015485611e52565b6002811115611dc657611dc661557d565b14611e055780600a01546040517f77b3c00d0000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b54949350505050565b600081815260208390526040812060070154611e3f5760405162a7b02b60e01b8152600481018390526024016105cc565b5060009081526020919091526040902090565b600082600003611e64575060006108c1565b818311611e73575060016108c1565b611e7e826001615ab7565b8303611e8c575060026108c1565b6040517f32a194ec00000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105cc565b6008810154600090158015906108c1575050600901546001600160a01b0316151590565b600a8101548154600283015460018401546004850154600386015460408051602080820198909852808201969096526060860194909452608085019290925260a0808501919091528251808503909101815260c08401835280519085012060e08401526101008084019190915281518084039091018152610120909201905280519101206000906108c1565b600085815260208790526040812060070154611fa95760405162a7b02b60e01b8152600481018790526024016105cc565b856000611fb68983611b5e565b905060005b875181101561214f576000611fe98b8a8481518110611fdc57611fdc61567f565b6020026020010151611e0e565b905083816005015414806120005750838160060154145b15612044576120178b61201283611eec565b611b5e565b6120219084615ab7565b92508882815181106120355761203561567f565b6020026020010151935061213c565b600084815260208c9052604090206008015489518a908490811061206a5761206a61567f565b6020026020010151036120a95761209c8b8a848151811061208d5761208d61567f565b60200260200101518689612bb9565b6120178b61201283611eec565b83816005015482600601548b85815181106120c6576120c661567f565b60200260200101518e6000016000898152602001908152602001600020600801546040517f6ebd28c90000000000000000000000000000000000000000000000000000000081526004016105cc959493929190948552602085019390935260408401919091526060830152608082015260a00190565b508061214781615aca565b915050611fbb565b5061215a8682615ab7565b9050848110156121a0576040517f11a8d4d000000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016105cc565b6121aa8989612ce8565b600088815260208a9052604090206121c190612d6b565b98975050505050505050565b60016009820154600160a01b900460ff1660018111156121ef576121ef61557d565b14612227576121fd81611eec565b6009820154604051633bc499ed60e21b81526105cc9291600160a01b900460ff1690600401615aa3565b61223081611ec8565b6122925761223d81611eec565b600982015460088301546040517fe58c830800000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03909116602483015260448201526064016105cc565b600b81015460ff1615156001036122e1576122ac81611eec565b6040517f307f76690000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b600b01805460ff19166001179055565b6040516001600160a01b03831660248201526044810182905261239a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e0f565b505050565b60006123ab8b8b611e0e565b600290810154915060008b815260208d905260409020600a01546123cf9084611e52565b60028111156123e0576123e061557d565b1461242e5760008a815260208c9052604090819020600a015490517f6fd0fedb00000000000000000000000000000000000000000000000000000000815260048101919091526024016105cc565b60008a815260208c90526040902061244590612b74565b6001146124985760008a815260208c90526040902061246390612b74565b6040517f6b595e500000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b6124f38b60000160008c815260200190815260200160002060010154896000013583898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612ef492505050565b60006001600160a01b038a1663b5112fd289848c3561251560208f018f61581f565b6040518663ffffffff1660e01b8152600401612535959493929190615ae4565b602060405180830381865afa158015612552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612576919061575b565b60008c815260208e905260409020600301549091506125d4908261259b856001615ab7565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612ef492505050565b6125de8c8c612ce8565b60008b815260208d9052604090206125f590612d6b565b505050505050505050505050565b6000818152602083905260408120600701546126345760405162a7b02b60e01b8152600481018390526024016105cc565b600082815260208490526040812061264b90611950565b6000818152600186016020526040812054919250819003612698576040517fda10f67c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905290806127218989898988612f81565b915091506000612732838a886134ae565b9050600061274183838c6135f3565b905061274d8b82613682565b9b9a5050505050505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261194a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612336565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915260008087815260208990526040902060090154600160a01b900460ff16600181111561285c5761285c61557d565b146128b457600086815260208890526040908190206009015490517f23f8405d0000000000000000000000000000000000000000000000000000000081526105cc918891600160a01b90910460ff1690600401615aa3565b6128be8787612603565b6128f7576040517f80e07e45000000000000000000000000000000000000000000000000000000008152600481018790526024016105cc565b6000868152602088905260408120604080516101a0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e0820152600883015461010082015260098301546001600160a01b038116610120830152909291610140840191600160a01b900460ff16908111156129a0576129a061557d565b60018111156129b1576129b161557d565b8152600a8201546020820152600b9091015460ff16151560409182015281015160808201519192506000916129e6919061399e565b9050600080878060200190518101906129ff9190615ba1565b9092509050612a2f89612a13856001615ab7565b60608701516080880151612a28906001615ab7565b8686613a4b565b50506040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526000612a928560000151866020015187604001518d888a6101600151613d6e565b9050612a9d81613e4c565b600081815260208e90526040902060070154909350612ac357612ac08c82613682565b91505b506040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000612b2686600001518c8789606001518a608001518b6101600151613d6e565b9050612b328d82613682565b915050612b628382600001518e60000160008f8152602001908152602001600020613ed59092919063ffffffff16565b919b909a509098509650505050505050565b60008082600201548360040154612b8b919061566c565b9050806000036108c157612b9e83611eec565b60405162a7b02b60e01b81526004016105cc91815260200190565b600082815260208590526040808220548583529120612bd790611950565b14612c3e576000838152602085905260409020612bf390611950565b600083815260208690526040908190205490517fe2e27f87000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016105cc565b600082815260208590526040808220600a908101548684529190922090910154612c689083613f55565b1461194a576000838152602085905260409020600a015483908390612c8d9084613f55565b60008581526020889052604090819020600a015490517f9bcfdf3300000000000000000000000000000000000000000000000000000000815260048101949094526024840192909252604483015260648201526084016105cc565b6000818152602083905260408120612cff90611950565b60008181526002850160205260409020549091508015612d55576040517fdd7028f000000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105cc565b5060009081526002909201602052604090912055565b60006009820154600160a01b900460ff166001811115612d8d57612d8d61557d565b14612dde57612d9b81611eec565b60098201546040517f23f8405d0000000000000000000000000000000000000000000000000000000081526105cc9291600160a01b900460ff1690600401615aa3565b60090180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6000612e64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f779092919063ffffffff16565b80519091501561239a5780806020019051810190612e829190615695565b61239a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105cc565b6000612f29828486604051602001612f0e91815260200190565b60405160208183030381529060405280519060200120613f86565b9050808514612f7a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f6600000000000000000060448201526064016105cc565b5050505050565b6040805160608082018352600080835260208301819052928201529080612fa9873585611e52565b6002811115612fba57612fba61557d565b036132e25760208501518551600003612fff576040517fe96bc61a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855160608801351461304d5785516040517f5b177a3c0000000000000000000000000000000000000000000000000000000081526004810191909152606088013560248201526044016105cc565b8560400151613088576040517fc169243600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85606001516130c3576040517fb45d1c3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130d060a088018861581f565b90506000036130f257604051630c9ccac560e41b815260040160405180910390fd5b600061310160a089018961581f565b81019061310e91906159a7565b509091506000905087608001516020015160028111156131305761313061557d565b03613167576040517f46365e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008760a001516020015160028111156131835761318361557d565b036131ba576040517f8999857d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808701516040517fc39619c40000000000000000000000000000000000000000000000000000000081526000916001600160a01b0389169163c39619c49161320591600401615c05565b602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613246919061575b565b90506000876001600160a01b031663c39619c48a60a001516040518263ffffffff1660e01b815260040161327a9190615c05565b602060405180830381865afa158015613297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bb919061575b565b60408051606081018252938452602084019190915282019290925293509091506134a49050565b6132f0878760600135611ccf565b61332c576040517fff6d9bd7000000000000000000000000000000000000000000000000000000008152606087013560048201526024016105cc565b606086013560009081526020889052604081209061334982611950565b905060006009830154600160a01b900460ff16600181111561336d5761336d61557d565b146133a4576040517f12459ffd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133b282600a015486613f55565b8835146133fb57600a8201546040517fd7eaa4660000000000000000000000000000000000000000000000000000000081528935600482015260248101919091526044016105cc565b61340860a089018961581f565b905060000361342a57604051630c9ccac560e41b815260040160405180910390fd5b60008080808061343d60a08e018e61581f565b81019061344a9190615c13565b94509450945094509450613468876001015486896002015486612ef4565b61347c876003015485896004015485612ef4565b6040518060600160405280868152602001858152602001828152508698509850505050505050505b9550959350505050565b6040805160008082526020820190925281906134d4906134cf908751614041565b614077565b90506134df83611b34565b6134ff57604051633abfb6ff60e21b8152600481018490526024016105cc565b8284604001351461354957604080517fdfcc62bc000000000000000000000000000000000000000000000000000000008152908501356004820152602481018490526044016105cc565b6135658460200135866020015186604001358860400151612ef4565b613572608085018561581f565b90506000036135ad576040517f342a075200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806135bd608087018761581f565b8101906135ca9190615caf565b90925090506135e88360016020890135612a2860408b013583615ab7565b509095945050505050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915261367a84846000602086013560408701356060880135338935614217565b949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052906136cc83613e4c565b6000818152602086905260409020600701549091501561371b576040517fbcedf3de000000000000000000000000000000000000000000000000000000008152600481018290526024016105cc565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e0850151600782015561010085015160088201556101208501516009820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19831681178255610140880151889590937fffffffffffffffffffffff0000000000000000000000000000000000000000001690911790600160a01b9084908111156137fc576137fc61557d565b021790555061016082810151600a83015561018090920151600b909101805460ff191691151591909117905583015183516040808601516020808801516080808a01518551808501989098528786019690965260608701939093529185019190915260a0808501939093528151808503909301835260c09093019052805191012060009060008181526001870160205260408120549192508190036138df576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a01909352912055613927565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361392757600082815260018701602052604090208390555b604051806101000160405280848152602001838152602001866000015181526020018661010001518152602001613971886000016000878152602001908152602001600020612b74565b81526101608701516020820152911515604083015261010090950151151560609091015250919392505050565b600060026139ac848461566c565b10156139ee576040517f9029859400000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105cc565b6139f8838361566c565b600203613a1157613a0a836001615ab7565b90506108c1565b600083613a1f60018561566c565b1890506000613a2d82614391565b9050600019811b80613a4060018761566c565b169695505050505050565b60008511613a9b5760405162461bcd60e51b815260206004820152601460248201527f5072652d73697a652063616e6e6f74206265203000000000000000000000000060448201526064016105cc565b85613aa583614077565b14613af25760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d61746368000000000060448201526064016105cc565b84613afc836144d2565b14613b6f5760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b828510613bbe5760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a6560448201526064016105cc565b6000859050600080613bd3856000875161452d565b90505b85831015613c96576000613bea84886146ac565b905084518310613c3c5760405162461bcd60e51b815260206004820152601260248201527f496e646578206f7574206f662072616e6765000000000000000000000000000060448201526064016105cc565b613c608282878681518110613c5357613c5361567f565b6020026020010151614796565b91506001811b613c708186615ab7565b945087851115613c8257613c82615d09565b83613c8c81615aca565b9450505050613bd6565b86613ca082614077565b14613d135760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f60448201527f737400000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b83518214613d635760405162461bcd60e51b815260206004820152601660248201527f496e636f6d706c6574652070726f6f662075736167650000000000000000000060448201526064016105cc565b505050505050505050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152613de48787878787614d15565b50604080516101a08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c083018190524360e084015261010083018190526101208301819052610140830181905261016083019190915261018082015290565b61016081015181516040808401516020808601516080808801516060808a015187518087019a909a528988019890985288019490945286015260a0808601929092528251808603909201825260c08501835281519181019190912060e08501526101008085019390935281518085039093018352610120909301905280519101206000906108c1565b6005830154151580613eea5750600683015415155b15613f4557613ef883611eec565b600584015460068501546040517f8b0e71d00000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016105cc565b6005830191909155600690910155565b600080613f63846001615ab7565b9050613f6f8184611e52565b509392505050565b606061367a8484600085614e09565b8251600090610100811115613fd2576040517ffdac331e0000000000000000000000000000000000000000000000000000000081526004810182905261010060248201526044016105cc565b8260005b82811015614037576000878281518110613ff257613ff261567f565b60200260200101519050816001901b871660000361401e5782600052806020526040600020925061402e565b8060005282602052604060002092505b50600101613fd6565b5095945050505050565b6060611cfd8360008460405160200161405c91815260200190565b60405160208183030381529060405280519060200120614796565b6000808251116140c95760405162461bcd60e51b815260206004820152601660248201527f456d707479206d65726b6c6520657870616e73696f6e0000000000000000000060448201526064016105cc565b60408251111561411b5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c6172676500000000000060448201526064016105cc565b6000805b835181101561421057600084828151811061413c5761413c61567f565b60200260200101519050826000801b036141a85780156141a35780925060018551614167919061566c565b82146141a35760405161418a908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b6141fd565b80156141c757604080516020810183905290810184905260600161418a565b6040516141e4908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b508061420881615aca565b91505061411f565b5092915050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290526101808101919091526001600160a01b0383166142c0576040517ff289e65700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008490036142fb576040517f6932bcfd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6143088989898989614d15565b604051806101a001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001438152602001858152602001846001600160a01b03168152602001600060018111156143725761437261557d565b8152602081018490526000604090910152905098975050505050505050565b6000816000036143e35760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e7420626974730000000060448201526064016105cc565b700100000000000000000000000000000000821061440e57608091821c9161440b9082615ab7565b90505b68010000000000000000821061443157604091821c9161442e9082615ab7565b90505b640100000000821061445057602091821c9161444d9082615ab7565b90505b62010000821061446d57601091821c9161446a9082615ab7565b90505b610100821061448957600891821c916144869082615ab7565b90505b601082106144a457600491821c916144a19082615ab7565b90505b600482106144bf57600291821c916144bc9082615ab7565b90505b60028210610973576108c1600182615ab7565b600080805b8351811015614210578381815181106144f2576144f261567f565b60200260200101516000801b1461451b5761450e816002615e03565b6145189083615ab7565b91505b8061452581615aca565b9150506144d7565b606081831061457e5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206c657373207468616e20656e6400000000000000000060448201526064016105cc565b83518211156145f55760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e677460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b6000614601848461566c565b67ffffffffffffffff811115614619576146196151e4565b604051908082528060200260200182016040528015614642578160200160208202803683370190505b509050835b838110156146a3578581815181106146615761466161567f565b6020026020010151828683614676919061566c565b815181106146865761468661567f565b60209081029190910101528061469b81615aca565b915050614647565b50949350505050565b60008183106146fd5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206c657373207468616e20656e6400000000000000000060448201526064016105cc565b600061470a838518614391565b90506000600161471a8382615ab7565b6001901b614728919061566c565b9050848116848216811561473f57611caf82614f46565b801561474e57611caf81614391565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f000000000060448201526064016105cc565b6060604083106147e85760405162461bcd60e51b815260206004820152600e60248201527f4c6576656c20746f6f206869676800000000000000000000000000000000000060448201526064016105cc565b60008290036148395760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d7074792073756274726565000000000060448201526064016105cc565b60408451111561488b5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c6172676500000000000060448201526064016105cc565b835160000361490a5760006148a1846001615ab7565b67ffffffffffffffff8111156148b9576148b96151e4565b6040519080825280602002602001820160405280156148e2578160200160208202803683370190505b509050828185815181106148f8576148f861567f565b60209081029190910101529050611cfd565b835183106149805760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c60448201527f206f662063757272656e7420657870616e73696f6e000000000000000000000060648201526084016105cc565b81600061498c866144d2565b9050600061499b866002615e03565b6149a59083615ab7565b905060006149b283614391565b6149bb83614391565b11614a0957875167ffffffffffffffff8111156149da576149da6151e4565b604051908082528060200260200182016040528015614a03578160200160208202803683370190505b50614a59565b8751614a16906001615ab7565b67ffffffffffffffff811115614a2e57614a2e6151e4565b604051908082528060200260200182016040528015614a57578160200160208202803683370190505b505b9050604081511115614aad5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a6520747265650000000060448201526064016105cc565b60005b8851811015614c695787811015614b5757888181518110614ad357614ad361567f565b60200260200101516000801b14614b525760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e74206260448201527f697400000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b614c57565b6000859003614b9d57888181518110614b7257614b7261567f565b6020026020010151828281518110614b8c57614b8c61567f565b602002602001018181525050614c57565b888181518110614baf57614baf61567f565b60200260200101516000801b03614be75784828281518110614bd357614bd361567f565b602090810291909101015260009450614c57565b6000801b828281518110614bfd57614bfd61567f565b602002602001018181525050888181518110614c1b57614c1b61567f565b602002602001015185604051602001614c3e929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b80614c6181615aca565b915050614ab0565b508315614c9d57838160018351614c80919061566c565b81518110614c9057614c9061567f565b6020026020010181815250505b8060018251614cac919061566c565b81518110614cbc57614cbc61567f565b60200260200101516000801b036116825760405162461bcd60e51b815260206004820152600f60248201527f4c61737420656e747279207a65726f000000000000000000000000000000000060448201526064016105cc565b6000859003614d50576040517f8d79dbbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828111614d93576040517f2060faf400000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105cc565b6000849003614dce576040517f83c683e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829003612f7a576040517f5cb6e5bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015614e815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105cc565b6001600160a01b0385163b614ed85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105cc565b600080866001600160a01b03168587604051614ef49190615e33565b60006040518083038185875af1925050503d8060008114614f31576040519150601f19603f3d011682016040523d82523d6000602084013e614f36565b606091505b5091509150611682828286614fb3565b6000808211614f975760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e7420626974730000000060448201526064016105cc565b60008280614fa660018261566c565b16189050611cfd81614391565b60608315614fc2575081611cfd565b825115614fd25782518084602001fd5b8160405162461bcd60e51b81526004016105cc9190615e4f565b6040805160c08101825260008082526020820181905291810182905260608101919091526080810161501c61502e565b815260200161502961502e565b905290565b604051806040016040528061504161504d565b81526020016000905290565b6040518060400160405280615060615069565b81526020016150295b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561509a57600080fd5b50508035926020909101359150565b6000602082840312156150bb57600080fd5b5035919050565b6001600160a01b03811681146150d757600080fd5b50565b6000806000806000806000806000806101408b8d0312156150fa57600080fd5b8a35615105816150c2565b995060208b0135985060408b013561511c816150c2565b975060608b0135965060808b0135955060a08b0135945060c08b0135615141816150c2565b935060e08b013592506101008b0135615159816150c2565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a0868803121561518c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600381106150d757600080fd5b8035610973816151af565b6000602082840312156151d957600080fd5b8135611cfd816151af565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561521d5761521d6151e4565b60405290565b6040805190810167ffffffffffffffff8111828210171561521d5761521d6151e4565b604051601f8201601f1916810167ffffffffffffffff8111828210171561526f5761526f6151e4565b604052919050565b600067ffffffffffffffff821115615291576152916151e4565b5060051b60200190565b600082601f8301126152ac57600080fd5b813560206152c16152bc83615277565b615246565b82815260059290921b840181019181810190868411156152e057600080fd5b8286015b848110156152fb57803583529183019183016152e4565b509695505050505050565b600080600083850361012081121561531d57600080fd5b84359350602085013567ffffffffffffffff81111561533b57600080fd5b6153478782880161529b565b93505060e0603f198201121561535c57600080fd5b506040840190509250925092565b60008083601f84011261537c57600080fd5b50813567ffffffffffffffff81111561539457600080fd5b6020830191508360208260051b85010111156153af57600080fd5b9250929050565b60008060008060008060008789036101208112156153d357600080fd5b88359750602089013567ffffffffffffffff808211156153f257600080fd5b908a01906040828d03121561540657600080fd5b81985060a0603f198401121561541b57600080fd5b60408b01975060e08b013592508083111561543557600080fd5b6154418c848d0161536a565b90975095506101008b013592508691508083111561545e57600080fd5b505061546c8a828b0161536a565b989b979a50959850939692959293505050565b60006020828403121561549157600080fd5b813567ffffffffffffffff8111156154a857600080fd5b820160c08185031215611cfd57600080fd5b600080600080606085870312156154d057600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156154f657600080fd5b818701915087601f83011261550a57600080fd5b81358181111561551957600080fd5b88602082850101111561552b57600080fd5b95989497505060200194505050565b60008060008060008060c0878903121561555357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b600052602160045260246000fd5b600281106155a3576155a361557d565b9052565b60006101a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615621828501826001600160a01b03169052565b50506101408084015161563682850182615593565b505061016083810151908301526101808084015180151582850152611cc7565b634e487b7160e01b600052601160045260246000fd5b818103818111156108c1576108c1615656565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156156a757600080fd5b81518015158114611cfd57600080fd5b803567ffffffffffffffff8116811461097357600080fd5b600381106155a3576155a361557d565b8481526101008101602060408682850137606083016040870160005b60028110156157295767ffffffffffffffff615716836156b7565b16835291830191908301906001016156fb565b50505050608085013561573b816151af565b61574860a08401826156cf565b5060c082019390935260e0015292915050565b60006020828403121561576d57600080fd5b5051919050565b600060c0820190508382528235602083015260208301356040830152604083013561579e816150c2565b6001600160a01b0381166060840152506157ba606084016156b7565b67ffffffffffffffff8082166080850152806157d8608087016156b7565b1660a085015250509392505050565b6000602082840312156157f957600080fd5b611cfd826156b7565b60006020828403121561581457600080fd5b8151611cfd816150c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261585457600080fd5b83018035915067ffffffffffffffff82111561586f57600080fd5b6020019150368190038213156153af57600080fd5b600082601f83011261589557600080fd5b61589d615223565b8060408401858111156158af57600080fd5b845b818110156135e8576158c2816156b7565b8452602093840193016158b1565b600081830360e08112156158e357600080fd5b6158eb6151fa565b915060a08112156158fb57600080fd5b615903615223565b608082121561591157600080fd5b615919615223565b915084601f85011261592a57600080fd5b615932615223565b80604086018781111561594457600080fd5b865b8181101561595e578035845260209384019301615946565b5081855261596c8882615884565b6020860152505050818152615983608085016151bc565b6020820152808352505060a0820135602082015260c0820135604082015292915050565b60008060006101e084860312156159bd57600080fd5b833567ffffffffffffffff8111156159d457600080fd5b6159e08682870161529b565b9350506159f085602086016158d0565b9150615a008561010086016158d0565b90509250925092565b805180518360005b6002811015615a30578251825260209283019290910190600101615a11565b505050602090810151906040840160005b6002811015615a6857835167ffffffffffffffff1682529282019290820190600101615a41565b5050820151905061239a60808401826156cf565b8481526101008101615a916020830186615a09565b60c082019390935260e0015292915050565b82815260408101611cfd6020830184615593565b808201808211156108c1576108c1615656565b60006000198203615add57615add615656565b5060010190565b855181526001600160a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b600082601f830112615b5757600080fd5b81516020615b676152bc83615277565b82815260059290921b84018101918181019086841115615b8657600080fd5b8286015b848110156152fb5780518352918301918301615b8a565b60008060408385031215615bb457600080fd5b825167ffffffffffffffff80821115615bcc57600080fd5b615bd886838701615b46565b93506020850151915080821115615bee57600080fd5b50615bfb85828601615b46565b9150509250929050565b60a081016108c18284615a09565b600080600080600060a08688031215615c2b57600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115615c5157600080fd5b615c5d89838a0161529b565b94506060880135915080821115615c7357600080fd5b615c7f89838a0161529b565b93506080880135915080821115615c9557600080fd5b50615ca28882890161529b565b9150509295509295909350565b60008060408385031215615cc257600080fd5b823567ffffffffffffffff80821115615cda57600080fd5b615ce68683870161529b565b93506020850135915080821115615cfc57600080fd5b50615bfb8582860161529b565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615d5a578160001904821115615d4057615d40615656565b80851615615d4d57918102915b93841c9390800290615d24565b509250929050565b600082615d71575060016108c1565b81615d7e575060006108c1565b8160018114615d945760028114615d9e57615dba565b60019150506108c1565b60ff841115615daf57615daf615656565b50506001821b6108c1565b5060208310610133831016604e8410600b8410161715615ddd575081810a6108c1565b615de78383615d1f565b8060001904821115615dfb57615dfb615656565b029392505050565b6000611cfd8383615d62565b60005b83811015615e2a578181015183820152602001615e12565b50506000910152565b60008251615e45818460208701615e0f565b9190910192915050565b6020815260008251806020840152615e6e816040850160208701615e0f565b601f01601f1916919091016040019291505056fea26469706673582212204e8fc2181a8ec2fc9b8ad66a38ecc9bca7d8b59a8076b88acd36957438e32c9464736f6c63430008110033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AssertionHashEmpty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"h2\",\"type\":\"bytes32\"}],\"name\":\"AssertionHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNoSibling\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssertionNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"argLevel\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"claimLevel\",\"type\":\"uint256\"}],\"name\":\"ClaimEdgeInvalidLevel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"ClaimEdgeNotLengthOneRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimEdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeAlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeClaimMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"edgeId2\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"level1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"level2\",\"type\":\"uint256\"}],\"name\":\"EdgeLevelInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"ancestorEdgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotAncestor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"EdgeNotConfirmed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"}],\"name\":\"EdgeNotLayerZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"EdgeNotLengthOne\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"EdgeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"EdgeTypeNotBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"EdgeTypeNotSmallStep\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeUnrivaled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyAssertionChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyChallengePeriod\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyClaimId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEdgeSpecificProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyEndRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyFirstRival\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOneStepProofEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyOriginId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyPrefixProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStakeReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartMachineStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyStartRoot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"h1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"h2\",\"type\":\"uint256\"}],\"name\":\"HeightDiffLtTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thresholdBlocks\",\"type\":\"uint256\"}],\"name\":\"InsufficientConfirmationBlocks\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeight\",\"type\":\"uint256\"}],\"name\":\"InvalidEndHeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"InvalidHeights\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevels\",\"type\":\"uint256\"}],\"name\":\"LevelTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actualLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxProofLength\",\"type\":\"uint256\"}],\"name\":\"MerkleProofTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"NotPowerOfTwo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"}],\"name\":\"OriginIdMutualIdMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"confirmedRivalId\",\"type\":\"bytes32\"}],\"name\":\"RivalEdgeConfirmed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroBigStepLevels\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasRival\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isLayerZero\",\"type\":\"bool\"}],\"name\":\"EdgeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"lowerChildAlreadyExists\",\"type\":\"bool\"}],\"name\":\"EdgeBisected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByChildren\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByClaim\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"}],\"name\":\"EdgeConfirmedByOneStepProof\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalTimeUnrivaled\",\"type\":\"uint256\"}],\"name\":\"EdgeConfirmedByTime\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mutualId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"EdgeRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LAYERZERO_BIGSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_BLOCKEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYERZERO_SMALLSTEPEDGE_HEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BIGSTEP_LEVEL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionChain\",\"outputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bisectionHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"}],\"name\":\"bisectEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"}],\"name\":\"calculateEdgeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"}],\"name\":\"calculateMutualId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengePeriodBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"confirmEdgeByChildren\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"claimingEdgeId\",\"type\":\"bytes32\"}],\"name\":\"confirmEdgeByClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beforeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structOneStepData\",\"name\":\"oneStepData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"prevConfig\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"beforeHistoryInclusionProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"afterHistoryInclusionProof\",\"type\":\"bytes32[]\"}],\"name\":\"confirmEdgeByOneStepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"ancestorEdges\",\"type\":\"bytes32[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"executionState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"internalType\":\"structExecutionStateData\",\"name\":\"claimStateData\",\"type\":\"tuple\"}],\"name\":\"confirmEdgeByTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"prefixProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"structCreateEdgeArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"createLayerZeroEdge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"edgeLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excessStakeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"firstRival\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getEdge\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"originId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"startHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"startHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"endHistoryRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"lowerChildId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"upperChildId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAtBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"enumEdgeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"refunded\",\"type\":\"bool\"}],\"internalType\":\"structChallengeEdge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumEdgeType\",\"name\":\"eType\",\"type\":\"uint8\"}],\"name\":\"getLayerZeroEndHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"getPrevAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasLengthOneRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"hasRival\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIAssertionChain\",\"name\":\"_assertionChain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_challengePeriodBlocks\",\"type\":\"uint256\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"_oneStepProofEntry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"_stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_excessStakeReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_numBigStepLevel\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oneStepProofEntry\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"refundStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"edgeId\",\"type\":\"bytes32\"}],\"name\":\"timeUnrivaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615eb880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80635d9e2444116101045780639a4fc504116100a2578063e94e051e11610071578063e94e051e1461041d578063eae0328b14610430578063f8ee77d614610443578063fda2892e1461044c57600080fd5b80639a4fc504146103af578063bce6f54f146103c2578063c8bc4e43146103e2578063d6a6bffc1461040a57600080fd5b8063748926f3116100de578063748926f314610363578063750e0c0f146103765780638c1b3a4014610389578063908517e91461039c57600080fd5b80635d9e24441461033e57806360c7dc471461034757806364deed591461035057600080fd5b806342e1aaa81161017157806348dd29241161014b57806348dd2924146102e257806351ed6a30146102f557806354b64151146103085780635a48e0f41461032b57600080fd5b806342e1aaa81461029b57806346c2781a146102ae57806348923bc5146102b757600080fd5b80632f4a3065116101ad5780632f4a30651461021857806339042f7d1461022b5780633e35f5e81461027f578063416e66571461029257600080fd5b80630f73bfad146101d45780631dce5166146101e95780632eaa004314610205575b600080fd5b6101e76101e2366004615087565b61046c565b005b6101f2600a5481565b6040519081526020015b60405180910390f35b6101e76102133660046150a9565b6104d4565b6101e76102263660046150da565b610524565b6101f2610239366004615174565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b6101f261028d3660046150a9565b6108b4565b6101f2600b5481565b6101f26102a93660046151c7565b6108c7565b6101f260075481565b6009546102ca906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b6008546102ca906001600160a01b031681565b6005546102ca906001600160a01b031681565b61031b6103163660046150a9565b610978565b60405190151581526020016101fc565b6101f26103393660046150a9565b610985565b6101f2600d5481565b6101f260065481565b6101e761035e366004615306565b61099f565b6101e76103713660046150a9565b610d6b565b61031b6103843660046150a9565b610e25565b6101e76103973660046153b6565b610e3e565b61031b6103aa3660046150a9565b611012565b6101f26103bd36600461547f565b61101f565b6101f26103d03660046150a9565b60009081526002602052604090205490565b6103f56103f03660046154ba565b611466565b604080519283526020830191909152016101fc565b6101f261041836600461553a565b61161a565b6004546102ca906001600160a01b031681565b6101f261043e3660046150a9565b61168d565b6101f2600c5481565b61045f61045a3660046150a9565b6116a2565b6040516101fc91906155a7565b600d5461047f90600190849084906117e5565b600082815260016020526040902061049690611950565b827fb924f3aa473645c7cf5b10262f927ae4ccf869d7fc239c17144b0c67490d1c73836040516104c891815260200190565b60405180910390a35050565b6104df6001826119b1565b60008181526001602052604090206104f690611950565b60405182907f0d27fcaf1adc41547a5cfc99d2364f6c0dc7e81c9fc3fe8cb38abb409b48358a90600090a350565b600054610100900460ff16158080156105445750600054600160ff909116105b8061055e5750303b15801561055e575060005460ff166001145b6105d55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156105f8576000805461ff0019166101001790555b6001600160a01b038b16610638576040517fc83e086200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038d811691909117909155891661069d576040517ffb60b0ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038b1617905560008a9003610700576040517f8a0eedcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078a90556005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03878116919091179091556006859055831661076f576040517f0f0ec8a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790556107a088611b34565b6107c057604051633abfb6ff60e21b8152600481018990526024016105cc565b600a8890556107ce87611b34565b6107ee57604051633abfb6ff60e21b8152600481018890526024016105cc565b600b8790556107fc86611b34565b61081c57604051633abfb6ff60e21b8152600481018790526024016105cc565b600c869055600082900361085c576040517fa863d6e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d82905580156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b60006108c1600183611b5e565b92915050565b6000808260028111156108dc576108dc61557d565b036108e9575050600a5490565b60018260028111156108fd576108fd61557d565b0361090a575050600b5490565b600282600281111561091e5761091e61557d565b0361092b575050600c5490565b60405162461bcd60e51b815260206004820152601660248201527f556e7265636f676e69736564206564676520747970650000000000000000000060448201526064016105cc565b919050565b60006108c1600183611ccf565b60006108c182600d546001611d049092919063ffffffff16565b6000808351116109af57836109d7565b82600184516109be919061566c565b815181106109ce576109ce61567f565b60200260200101515b905060006109e6600183611e0e565b905060006109fa82600a0154600d54611e52565b90506000816002811115610a1057610a1061557d565b14610a4f5781600a01546040517f77b3c00d0000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b610a5882611ec8565b610aba57610a6582611eec565b600983015460088401546040517fe58c830800000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03909116602483015260448201526064016105cc565b60088054908301546040517f3083622800000000000000000000000000000000000000000000000000000000815260009283926001600160a01b0390911691633083622891610b0f9160040190815260200190565b602060405180830381865afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190615695565b90508015610cec57600880549085015460405163f9cee9df60e01b81526001600160a01b039092169163f9cee9df91610b99918a9060a08201359060c0830135906004016156df565b60006040518083038186803b158015610bb157600080fd5b505afa158015610bc5573d6000803e3d6000fd5b50506008546040517f1171558500000000000000000000000000000000000000000000000000000000815260a08a013560048201526001600160a01b03909116925063117155859150602401602060405180830381865afa158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c52919061575b565b6008546040517f56bbc9e600000000000000000000000000000000000000000000000000000000815260a089013560048201526001600160a01b03909116906356bbc9e690602401602060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb919061575b565b610ce5919061566c565b9150610cf1565b600091505b600754600d54600091610d0c916001918c918c918891611f78565b60008a8152600160205260409020909150610d2690611950565b897f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb83604051610d5891815260200190565b60405180910390a3505050505050505050565b6000610d78600183611e0e565b9050610d83816121cd565b6005546006546001600160a01b03909116908115801590610da357508015155b15610dc4576009830154610dc4906001600160a01b038481169116836122f1565b6000848152600160205260409020610ddb90611950565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b60008181526001602052604081206007015415156108c1565b6000610e5888600d546001611d049092919063ffffffff16565b6008546040517f04972af90000000000000000000000000000000000000000000000000000000081529192506001600160a01b0316906304972af990610ea49084908a90600401615774565b60006040518083038186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b5050505060006040518060600160405280886080016020810190610ef491906157e7565b67ffffffffffffffff168152600854604080517fe78cea9200000000000000000000000000000000000000000000000000000000815290516020938401936001600160a01b039093169263e78cea9292600480820193918290030181865afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f889190615802565b6001600160a01b0390811682528935602090920191909152600954600d54929350610fc5926001928d9216908c9086908c908c908c908c9061239f565b6000898152600160205260409020610fdc90611950565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b60006108c1600183612603565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905260006110718460000135600d54611e52565b9050600061107e826108c7565b9050611088614fec565b600083600281111561109c5761109c61557d565b03611352576110ae60a087018761581f565b90506000036110d057604051630c9ccac560e41b815260040160405180910390fd5b6000806110e060a089018961581f565b8101906110ed91906159a7565b60085481516020830151604080850151905163f9cee9df60e01b81529598509396506001600160a01b03909216945063f9cee9df936111359360608f01359391600401615a7c565b60006040518083038186803b15801561114d57600080fd5b505afa158015611161573d6000803e3d6000fd5b5050600854602080850151865191870151604080890151905163f9cee9df60e01b81526001600160a01b03909516965063f9cee9df95506111a794929392600401615a7c565b60006040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b50506040805160c08101825260608c01358082526020868101519083015260085483517fe531d8c7000000000000000000000000000000000000000000000000000000008152600481019290925291945091840192506001600160a01b03169063e531d8c790602401602060405180830381865afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190615695565b151581526008546020848101516040517f56bbc9e600000000000000000000000000000000000000000000000000000000815260048101919091529201916000916001600160a01b0316906356bbc9e690602401602060405180830381865afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611312919061575b565b118152835160208201528251604090910152600954600d54919450611349916001918b9187916001600160a01b03169089906126d2565b95505050611379565b600954600d5461137691600191899185916001600160a01b039091169087906126d2565b93505b6005546006546001600160a01b0390911690811580159061139957508015155b156113d55760008660c001516113af57306113bc565b6004546001600160a01b03165b90506113d36001600160a01b03841633838561275c565b505b8560400151866020015187600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d6848589606001518a608001518b60a001518c60c001518d60e0015160405161145195949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a45050925195945050505050565b60008060008060006114b5898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019594939250506127ad9050565b81519295509093509150158061154a578260400151836020015184600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d68485866060015187608001518860a001518960c001518a60e0015160405161154195949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517f9c4224a3990aed63a3c879ce2d534cb6cce9e2b1d892eab3a3243a5756d68485856060015186608001518760a001518860c001518960e001516040516115c695949392919094855260208501939093526040840191909152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a4505191989197509095505050505050565b604080516020808201899052818301889052606082018790526080820186905260a08083018690528351808403909101815260c08301845280519082012060e08301526101008083018590528351808403909101815261012090920190925280519101206000905b979650505050505050565b60006108c161169d600184611e0e565b612b74565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152611716600183611e0e565b604080516101a0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e0820152600883015461010082015260098301546001600160a01b038116610120830152909291610140840191600160a01b900460ff16908111156117b1576117b161557d565b60018111156117c2576117c261557d565b8152600a8201546020820152600b9091015460ff16151560409091015292915050565b6000838152602085905260409020600701546118165760405162a7b02b60e01b8152600481018490526024016105cc565b6000828152602085905260409020600701546118475760405162a7b02b60e01b8152600481018490526024016105cc565b6001600083815260208690526040902060090154600160a01b900460ff1660018111156118765761187661557d565b146118b55760008281526020859052604090819020600901549051633bc499ed60e21b81526105cc918491600160a01b90910460ff1690600401615aa3565b6118c184848484612bb9565b600082815260208590526040902060080154831461192957600082815260208590526040908190206008015490517fc2adc3e80000000000000000000000000000000000000000000000000000000081526105cc918591600401918252602082015260400190565b6119338484612ce8565b600083815260208590526040902061194a90612d6b565b50505050565b600a810154815460028301546001840154600485015460408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c0909201905280519101206000906108c1565b6000818152602083905260409020600701546119e25760405162a7b02b60e01b8152600481018290526024016105cc565b60008181526020839052604080822060050154808352912060070154611a1d5760405162a7b02b60e01b8152600481018290526024016105cc565b6001600082815260208590526040902060090154600160a01b900460ff166001811115611a4c57611a4c61557d565b14611a8b5760008181526020849052604090819020600901549051633bc499ed60e21b81526105cc918391600160a01b90910460ff1690600401615aa3565b60008281526020849052604080822060060154808352912060070154611ac65760405162a7b02b60e01b8152600481018290526024016105cc565b6001600082815260208690526040902060090154600160a01b900460ff166001811115611af557611af561557d565b146119295760008181526020859052604090819020600901549051633bc499ed60e21b81526105cc918391600160a01b90910460ff1690600401615aa3565b600081600003611b4657506000919050565b6000611b5360018461566c565b929092161592915050565b600081815260208390526040812060070154611b8f5760405162a7b02b60e01b8152600481018390526024016105cc565b6000828152602084905260408120611ba690611950565b6000818152600186016020526040812054919250819003611bf3576040517fda10f67c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c4c57600084815260208690526040902060070154611c43904361566c565b925050506108c1565b600081815260208690526040902060070154611c7d5760405162a7b02b60e01b8152600481018290526024016105cc565b600081815260208690526040808220600790810154878452919092209091015480821115611cba57611caf818361566c565b9450505050506108c1565b60009450505050506108c1565b505092915050565b6000611cdb8383612603565b8015611cfd57506000828152602084905260409020611cf990612b74565b6001145b9392505050565b600080611d118585611e0e565b90506002611d2382600a015485611e52565b6002811115611d3457611d3461557d565b03611d5a5780546000908152600186016020526040902054611d568682611e0e565b9150505b6001611d6a82600a015485611e52565b6002811115611d7b57611d7b61557d565b03611da55780546000908152600186016020526040902054611d9d8682611e0e565b915050611d5a565b6000611db582600a015485611e52565b6002811115611dc657611dc661557d565b14611e055780600a01546040517f77b3c00d0000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b54949350505050565b600081815260208390526040812060070154611e3f5760405162a7b02b60e01b8152600481018390526024016105cc565b5060009081526020919091526040902090565b600082600003611e64575060006108c1565b818311611e73575060016108c1565b611e7e826001615ab7565b8303611e8c575060026108c1565b6040517f32a194ec00000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105cc565b6008810154600090158015906108c1575050600901546001600160a01b0316151590565b600a8101548154600283015460018401546004850154600386015460408051602080820198909852808201969096526060860194909452608085019290925260a0808501919091528251808503909101815260c08401835280519085012060e08401526101008084019190915281518084039091018152610120909201905280519101206000906108c1565b600085815260208790526040812060070154611fa95760405162a7b02b60e01b8152600481018790526024016105cc565b856000611fb68983611b5e565b905060005b875181101561214f576000611fe98b8a8481518110611fdc57611fdc61567f565b6020026020010151611e0e565b905083816005015414806120005750838160060154145b15612044576120178b61201283611eec565b611b5e565b6120219084615ab7565b92508882815181106120355761203561567f565b6020026020010151935061213c565b600084815260208c9052604090206008015489518a908490811061206a5761206a61567f565b6020026020010151036120a95761209c8b8a848151811061208d5761208d61567f565b60200260200101518689612bb9565b6120178b61201283611eec565b83816005015482600601548b85815181106120c6576120c661567f565b60200260200101518e6000016000898152602001908152602001600020600801546040517f6ebd28c90000000000000000000000000000000000000000000000000000000081526004016105cc959493929190948552602085019390935260408401919091526060830152608082015260a00190565b508061214781615aca565b915050611fbb565b5061215a8682615ab7565b9050848110156121a0576040517f11a8d4d000000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016105cc565b6121aa8989612ce8565b600088815260208a9052604090206121c190612d6b565b98975050505050505050565b60016009820154600160a01b900460ff1660018111156121ef576121ef61557d565b14612227576121fd81611eec565b6009820154604051633bc499ed60e21b81526105cc9291600160a01b900460ff1690600401615aa3565b61223081611ec8565b6122925761223d81611eec565b600982015460088301546040517fe58c830800000000000000000000000000000000000000000000000000000000815260048101939093526001600160a01b03909116602483015260448201526064016105cc565b600b81015460ff1615156001036122e1576122ac81611eec565b6040517f307f76690000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b600b01805460ff19166001179055565b6040516001600160a01b03831660248201526044810182905261239a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e0f565b505050565b60006123ab8b8b611e0e565b600290810154915060008b815260208d905260409020600a01546123cf9084611e52565b60028111156123e0576123e061557d565b1461242e5760008a815260208c9052604090819020600a015490517f6fd0fedb00000000000000000000000000000000000000000000000000000000815260048101919091526024016105cc565b60008a815260208c90526040902061244590612b74565b6001146124985760008a815260208c90526040902061246390612b74565b6040517f6b595e500000000000000000000000000000000000000000000000000000000081526004016105cc91815260200190565b6124f38b60000160008c815260200190815260200160002060010154896000013583898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612ef492505050565b60006001600160a01b038a1663b5112fd289848c3561251560208f018f61581f565b6040518663ffffffff1660e01b8152600401612535959493929190615ae4565b602060405180830381865afa158015612552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612576919061575b565b60008c815260208e905260409020600301549091506125d4908261259b856001615ab7565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612ef492505050565b6125de8c8c612ce8565b60008b815260208d9052604090206125f590612d6b565b505050505050505050505050565b6000818152602083905260408120600701546126345760405162a7b02b60e01b8152600481018390526024016105cc565b600082815260208490526040812061264b90611950565b6000818152600186016020526040812054919250819003612698576040517fda10f67c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905290806127218989898988612f81565b915091506000612732838a886134ae565b9050600061274183838c6135f3565b905061274d8b82613682565b9b9a5050505050505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261194a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612336565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915260008087815260208990526040902060090154600160a01b900460ff16600181111561285c5761285c61557d565b146128b457600086815260208890526040908190206009015490517f23f8405d0000000000000000000000000000000000000000000000000000000081526105cc918891600160a01b90910460ff1690600401615aa3565b6128be8787612603565b6128f7576040517f80e07e45000000000000000000000000000000000000000000000000000000008152600481018790526024016105cc565b6000868152602088905260408120604080516101a0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e0820152600883015461010082015260098301546001600160a01b038116610120830152909291610140840191600160a01b900460ff16908111156129a0576129a061557d565b60018111156129b1576129b161557d565b8152600a8201546020820152600b9091015460ff16151560409182015281015160808201519192506000916129e6919061399e565b9050600080878060200190518101906129ff9190615ba1565b9092509050612a2f89612a13856001615ab7565b60608701516080880151612a28906001615ab7565b8686613a4b565b50506040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526000612a928560000151866020015187604001518d888a6101600151613d6e565b9050612a9d81613e4c565b600081815260208e90526040902060070154909350612ac357612ac08c82613682565b91505b506040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526000612b2686600001518c8789606001518a608001518b6101600151613d6e565b9050612b328d82613682565b915050612b628382600001518e60000160008f8152602001908152602001600020613ed59092919063ffffffff16565b919b909a509098509650505050505050565b60008082600201548360040154612b8b919061566c565b9050806000036108c157612b9e83611eec565b60405162a7b02b60e01b81526004016105cc91815260200190565b600082815260208590526040808220548583529120612bd790611950565b14612c3e576000838152602085905260409020612bf390611950565b600083815260208690526040908190205490517fe2e27f87000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016105cc565b600082815260208590526040808220600a908101548684529190922090910154612c689083613f55565b1461194a576000838152602085905260409020600a015483908390612c8d9084613f55565b60008581526020889052604090819020600a015490517f9bcfdf3300000000000000000000000000000000000000000000000000000000815260048101949094526024840192909252604483015260648201526084016105cc565b6000818152602083905260408120612cff90611950565b60008181526002850160205260409020549091508015612d55576040517fdd7028f000000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105cc565b5060009081526002909201602052604090912055565b60006009820154600160a01b900460ff166001811115612d8d57612d8d61557d565b14612dde57612d9b81611eec565b60098201546040517f23f8405d0000000000000000000000000000000000000000000000000000000081526105cc9291600160a01b900460ff1690600401615aa3565b60090180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6000612e64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f779092919063ffffffff16565b80519091501561239a5780806020019051810190612e829190615695565b61239a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105cc565b6000612f29828486604051602001612f0e91815260200190565b60405160208183030381529060405280519060200120613f86565b9050808514612f7a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f6600000000000000000060448201526064016105cc565b5050505050565b6040805160608082018352600080835260208301819052928201529080612fa9873585611e52565b6002811115612fba57612fba61557d565b036132e25760208501518551600003612fff576040517fe96bc61a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855160608801351461304d5785516040517f5b177a3c0000000000000000000000000000000000000000000000000000000081526004810191909152606088013560248201526044016105cc565b8560400151613088576040517fc169243600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85606001516130c3576040517fb45d1c3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130d060a088018861581f565b90506000036130f257604051630c9ccac560e41b815260040160405180910390fd5b600061310160a089018961581f565b81019061310e91906159a7565b509091506000905087608001516020015160028111156131305761313061557d565b03613167576040517f46365e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008760a001516020015160028111156131835761318361557d565b036131ba576040517f8999857d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808701516040517fc39619c40000000000000000000000000000000000000000000000000000000081526000916001600160a01b0389169163c39619c49161320591600401615c05565b602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613246919061575b565b90506000876001600160a01b031663c39619c48a60a001516040518263ffffffff1660e01b815260040161327a9190615c05565b602060405180830381865afa158015613297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bb919061575b565b60408051606081018252938452602084019190915282019290925293509091506134a49050565b6132f0878760600135611ccf565b61332c576040517fff6d9bd7000000000000000000000000000000000000000000000000000000008152606087013560048201526024016105cc565b606086013560009081526020889052604081209061334982611950565b905060006009830154600160a01b900460ff16600181111561336d5761336d61557d565b146133a4576040517f12459ffd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133b282600a015486613f55565b8835146133fb57600a8201546040517fd7eaa4660000000000000000000000000000000000000000000000000000000081528935600482015260248101919091526044016105cc565b61340860a089018961581f565b905060000361342a57604051630c9ccac560e41b815260040160405180910390fd5b60008080808061343d60a08e018e61581f565b81019061344a9190615c13565b94509450945094509450613468876001015486896002015486612ef4565b61347c876003015485896004015485612ef4565b6040518060600160405280868152602001858152602001828152508698509850505050505050505b9550959350505050565b6040805160008082526020820190925281906134d4906134cf908751614041565b614077565b90506134df83611b34565b6134ff57604051633abfb6ff60e21b8152600481018490526024016105cc565b8284604001351461354957604080517fdfcc62bc000000000000000000000000000000000000000000000000000000008152908501356004820152602481018490526044016105cc565b6135658460200135866020015186604001358860400151612ef4565b613572608085018561581f565b90506000036135ad576040517f342a075200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806135bd608087018761581f565b8101906135ca9190615caf565b90925090506135e88360016020890135612a2860408b013583615ab7565b509095945050505050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915261367a84846000602086013560408701356060880135338935614217565b949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052906136cc83613e4c565b6000818152602086905260409020600701549091501561371b576040517fbcedf3de000000000000000000000000000000000000000000000000000000008152600481018290526024016105cc565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e0850151600782015561010085015160088201556101208501516009820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19831681178255610140880151889590937fffffffffffffffffffffff0000000000000000000000000000000000000000001690911790600160a01b9084908111156137fc576137fc61557d565b021790555061016082810151600a83015561018090920151600b909101805460ff191691151591909117905583015183516040808601516020808801516080808a01518551808501989098528786019690965260608701939093529185019190915260a0808501939093528151808503909301835260c09093019052805191012060009060008181526001870160205260408120549192508190036138df576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a01909352912055613927565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361392757600082815260018701602052604090208390555b604051806101000160405280848152602001838152602001866000015181526020018661010001518152602001613971886000016000878152602001908152602001600020612b74565b81526101608701516020820152911515604083015261010090950151151560609091015250919392505050565b600060026139ac848461566c565b10156139ee576040517f9029859400000000000000000000000000000000000000000000000000000000815260048101849052602481018390526044016105cc565b6139f8838361566c565b600203613a1157613a0a836001615ab7565b90506108c1565b600083613a1f60018561566c565b1890506000613a2d82614391565b9050600019811b80613a4060018761566c565b169695505050505050565b60008511613a9b5760405162461bcd60e51b815260206004820152601460248201527f5072652d73697a652063616e6e6f74206265203000000000000000000000000060448201526064016105cc565b85613aa583614077565b14613af25760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d61746368000000000060448201526064016105cc565b84613afc836144d2565b14613b6f5760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b828510613bbe5760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a6560448201526064016105cc565b6000859050600080613bd3856000875161452d565b90505b85831015613c96576000613bea84886146ac565b905084518310613c3c5760405162461bcd60e51b815260206004820152601260248201527f496e646578206f7574206f662072616e6765000000000000000000000000000060448201526064016105cc565b613c608282878681518110613c5357613c5361567f565b6020026020010151614796565b91506001811b613c708186615ab7565b945087851115613c8257613c82615d09565b83613c8c81615aca565b9450505050613bd6565b86613ca082614077565b14613d135760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f60448201527f737400000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b83518214613d635760405162461bcd60e51b815260206004820152601660248201527f496e636f6d706c6574652070726f6f662075736167650000000000000000000060448201526064016105cc565b505050505050505050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290526101608101829052610180810191909152613de48787878787614d15565b50604080516101a08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c083018190524360e084015261010083018190526101208301819052610140830181905261016083019190915261018082015290565b61016081015181516040808401516020808601516080808801516060808a015187518087019a909a528988019890985288019490945286015260a0808601929092528251808603909201825260c08501835281519181019190912060e08501526101008085019390935281518085039093018352610120909301905280519101206000906108c1565b6005830154151580613eea5750600683015415155b15613f4557613ef883611eec565b600584015460068501546040517f8b0e71d00000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016105cc565b6005830191909155600690910155565b600080613f63846001615ab7565b9050613f6f8184611e52565b509392505050565b606061367a8484600085614e09565b8251600090610100811115613fd2576040517ffdac331e0000000000000000000000000000000000000000000000000000000081526004810182905261010060248201526044016105cc565b8260005b82811015614037576000878281518110613ff257613ff261567f565b60200260200101519050816001901b871660000361401e5782600052806020526040600020925061402e565b8060005282602052604060002092505b50600101613fd6565b5095945050505050565b6060611cfd8360008460405160200161405c91815260200190565b60405160208183030381529060405280519060200120614796565b6000808251116140c95760405162461bcd60e51b815260206004820152601660248201527f456d707479206d65726b6c6520657870616e73696f6e0000000000000000000060448201526064016105cc565b60408251111561411b5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c6172676500000000000060448201526064016105cc565b6000805b835181101561421057600084828151811061413c5761413c61567f565b60200260200101519050826000801b036141a85780156141a35780925060018551614167919061566c565b82146141a35760405161418a908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b6141fd565b80156141c757604080516020810183905290810184905260600161418a565b6040516141e4908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b508061420881615aca565b91505061411f565b5092915050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290526101808101919091526001600160a01b0383166142c0576040517ff289e65700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008490036142fb576040517f6932bcfd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6143088989898989614d15565b604051806101a001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001438152602001858152602001846001600160a01b03168152602001600060018111156143725761437261557d565b8152602081018490526000604090910152905098975050505050505050565b6000816000036143e35760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e7420626974730000000060448201526064016105cc565b700100000000000000000000000000000000821061440e57608091821c9161440b9082615ab7565b90505b68010000000000000000821061443157604091821c9161442e9082615ab7565b90505b640100000000821061445057602091821c9161444d9082615ab7565b90505b62010000821061446d57601091821c9161446a9082615ab7565b90505b610100821061448957600891821c916144869082615ab7565b90505b601082106144a457600491821c916144a19082615ab7565b90505b600482106144bf57600291821c916144bc9082615ab7565b90505b60028210610973576108c1600182615ab7565b600080805b8351811015614210578381815181106144f2576144f261567f565b60200260200101516000801b1461451b5761450e816002615e03565b6145189083615ab7565b91505b8061452581615aca565b9150506144d7565b606081831061457e5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206c657373207468616e20656e6400000000000000000060448201526064016105cc565b83518211156145f55760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e677460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b6000614601848461566c565b67ffffffffffffffff811115614619576146196151e4565b604051908082528060200260200182016040528015614642578160200160208202803683370190505b509050835b838110156146a3578581815181106146615761466161567f565b6020026020010151828683614676919061566c565b815181106146865761468661567f565b60209081029190910101528061469b81615aca565b915050614647565b50949350505050565b60008183106146fd5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206c657373207468616e20656e6400000000000000000060448201526064016105cc565b600061470a838518614391565b90506000600161471a8382615ab7565b6001901b614728919061566c565b9050848116848216811561473f57611caf82614f46565b801561474e57611caf81614391565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f000000000060448201526064016105cc565b6060604083106147e85760405162461bcd60e51b815260206004820152600e60248201527f4c6576656c20746f6f206869676800000000000000000000000000000000000060448201526064016105cc565b60008290036148395760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d7074792073756274726565000000000060448201526064016105cc565b60408451111561488b5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c6172676500000000000060448201526064016105cc565b835160000361490a5760006148a1846001615ab7565b67ffffffffffffffff8111156148b9576148b96151e4565b6040519080825280602002602001820160405280156148e2578160200160208202803683370190505b509050828185815181106148f8576148f861567f565b60209081029190910101529050611cfd565b835183106149805760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c60448201527f206f662063757272656e7420657870616e73696f6e000000000000000000000060648201526084016105cc565b81600061498c866144d2565b9050600061499b866002615e03565b6149a59083615ab7565b905060006149b283614391565b6149bb83614391565b11614a0957875167ffffffffffffffff8111156149da576149da6151e4565b604051908082528060200260200182016040528015614a03578160200160208202803683370190505b50614a59565b8751614a16906001615ab7565b67ffffffffffffffff811115614a2e57614a2e6151e4565b604051908082528060200260200182016040528015614a57578160200160208202803683370190505b505b9050604081511115614aad5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a6520747265650000000060448201526064016105cc565b60005b8851811015614c695787811015614b5757888181518110614ad357614ad361567f565b60200260200101516000801b14614b525760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e74206260448201527f697400000000000000000000000000000000000000000000000000000000000060648201526084016105cc565b614c57565b6000859003614b9d57888181518110614b7257614b7261567f565b6020026020010151828281518110614b8c57614b8c61567f565b602002602001018181525050614c57565b888181518110614baf57614baf61567f565b60200260200101516000801b03614be75784828281518110614bd357614bd361567f565b602090810291909101015260009450614c57565b6000801b828281518110614bfd57614bfd61567f565b602002602001018181525050888181518110614c1b57614c1b61567f565b602002602001015185604051602001614c3e929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b80614c6181615aca565b915050614ab0565b508315614c9d57838160018351614c80919061566c565b81518110614c9057614c9061567f565b6020026020010181815250505b8060018251614cac919061566c565b81518110614cbc57614cbc61567f565b60200260200101516000801b036116825760405162461bcd60e51b815260206004820152600f60248201527f4c61737420656e747279207a65726f000000000000000000000000000000000060448201526064016105cc565b6000859003614d50576040517f8d79dbbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828111614d93576040517f2060faf400000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105cc565b6000849003614dce576040517f83c683e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829003612f7a576040517f5cb6e5bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015614e815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105cc565b6001600160a01b0385163b614ed85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105cc565b600080866001600160a01b03168587604051614ef49190615e33565b60006040518083038185875af1925050503d8060008114614f31576040519150601f19603f3d011682016040523d82523d6000602084013e614f36565b606091505b5091509150611682828286614fb3565b6000808211614f975760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e7420626974730000000060448201526064016105cc565b60008280614fa660018261566c565b16189050611cfd81614391565b60608315614fc2575081611cfd565b825115614fd25782518084602001fd5b8160405162461bcd60e51b81526004016105cc9190615e4f565b6040805160c08101825260008082526020820181905291810182905260608101919091526080810161501c61502e565b815260200161502961502e565b905290565b604051806040016040528061504161504d565b81526020016000905290565b6040518060400160405280615060615069565b81526020016150295b60405180604001604052806002906020820280368337509192915050565b6000806040838503121561509a57600080fd5b50508035926020909101359150565b6000602082840312156150bb57600080fd5b5035919050565b6001600160a01b03811681146150d757600080fd5b50565b6000806000806000806000806000806101408b8d0312156150fa57600080fd5b8a35615105816150c2565b995060208b0135985060408b013561511c816150c2565b975060608b0135965060808b0135955060a08b0135945060c08b0135615141816150c2565b935060e08b013592506101008b0135615159816150c2565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a0868803121561518c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600381106150d757600080fd5b8035610973816151af565b6000602082840312156151d957600080fd5b8135611cfd816151af565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561521d5761521d6151e4565b60405290565b6040805190810167ffffffffffffffff8111828210171561521d5761521d6151e4565b604051601f8201601f1916810167ffffffffffffffff8111828210171561526f5761526f6151e4565b604052919050565b600067ffffffffffffffff821115615291576152916151e4565b5060051b60200190565b600082601f8301126152ac57600080fd5b813560206152c16152bc83615277565b615246565b82815260059290921b840181019181810190868411156152e057600080fd5b8286015b848110156152fb57803583529183019183016152e4565b509695505050505050565b600080600083850361012081121561531d57600080fd5b84359350602085013567ffffffffffffffff81111561533b57600080fd5b6153478782880161529b565b93505060e0603f198201121561535c57600080fd5b506040840190509250925092565b60008083601f84011261537c57600080fd5b50813567ffffffffffffffff81111561539457600080fd5b6020830191508360208260051b85010111156153af57600080fd5b9250929050565b60008060008060008060008789036101208112156153d357600080fd5b88359750602089013567ffffffffffffffff808211156153f257600080fd5b908a01906040828d03121561540657600080fd5b81985060a0603f198401121561541b57600080fd5b60408b01975060e08b013592508083111561543557600080fd5b6154418c848d0161536a565b90975095506101008b013592508691508083111561545e57600080fd5b505061546c8a828b0161536a565b989b979a50959850939692959293505050565b60006020828403121561549157600080fd5b813567ffffffffffffffff8111156154a857600080fd5b820160c08185031215611cfd57600080fd5b600080600080606085870312156154d057600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156154f657600080fd5b818701915087601f83011261550a57600080fd5b81358181111561551957600080fd5b88602082850101111561552b57600080fd5b95989497505060200194505050565b60008060008060008060c0878903121561555357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b600052602160045260246000fd5b600281106155a3576155a361557d565b9052565b60006101a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615621828501826001600160a01b03169052565b50506101408084015161563682850182615593565b505061016083810151908301526101808084015180151582850152611cc7565b634e487b7160e01b600052601160045260246000fd5b818103818111156108c1576108c1615656565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156156a757600080fd5b81518015158114611cfd57600080fd5b803567ffffffffffffffff8116811461097357600080fd5b600381106155a3576155a361557d565b8481526101008101602060408682850137606083016040870160005b60028110156157295767ffffffffffffffff615716836156b7565b16835291830191908301906001016156fb565b50505050608085013561573b816151af565b61574860a08401826156cf565b5060c082019390935260e0015292915050565b60006020828403121561576d57600080fd5b5051919050565b600060c0820190508382528235602083015260208301356040830152604083013561579e816150c2565b6001600160a01b0381166060840152506157ba606084016156b7565b67ffffffffffffffff8082166080850152806157d8608087016156b7565b1660a085015250509392505050565b6000602082840312156157f957600080fd5b611cfd826156b7565b60006020828403121561581457600080fd5b8151611cfd816150c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261585457600080fd5b83018035915067ffffffffffffffff82111561586f57600080fd5b6020019150368190038213156153af57600080fd5b600082601f83011261589557600080fd5b61589d615223565b8060408401858111156158af57600080fd5b845b818110156135e8576158c2816156b7565b8452602093840193016158b1565b600081830360e08112156158e357600080fd5b6158eb6151fa565b915060a08112156158fb57600080fd5b615903615223565b608082121561591157600080fd5b615919615223565b915084601f85011261592a57600080fd5b615932615223565b80604086018781111561594457600080fd5b865b8181101561595e578035845260209384019301615946565b5081855261596c8882615884565b6020860152505050818152615983608085016151bc565b6020820152808352505060a0820135602082015260c0820135604082015292915050565b60008060006101e084860312156159bd57600080fd5b833567ffffffffffffffff8111156159d457600080fd5b6159e08682870161529b565b9350506159f085602086016158d0565b9150615a008561010086016158d0565b90509250925092565b805180518360005b6002811015615a30578251825260209283019290910190600101615a11565b505050602090810151906040840160005b6002811015615a6857835167ffffffffffffffff1682529282019290820190600101615a41565b5050820151905061239a60808401826156cf565b8481526101008101615a916020830186615a09565b60c082019390935260e0015292915050565b82815260408101611cfd6020830184615593565b808201808211156108c1576108c1615656565b60006000198203615add57615add615656565b5060010190565b855181526001600160a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b600082601f830112615b5757600080fd5b81516020615b676152bc83615277565b82815260059290921b84018101918181019086841115615b8657600080fd5b8286015b848110156152fb5780518352918301918301615b8a565b60008060408385031215615bb457600080fd5b825167ffffffffffffffff80821115615bcc57600080fd5b615bd886838701615b46565b93506020850151915080821115615bee57600080fd5b50615bfb85828601615b46565b9150509250929050565b60a081016108c18284615a09565b600080600080600060a08688031215615c2b57600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115615c5157600080fd5b615c5d89838a0161529b565b94506060880135915080821115615c7357600080fd5b615c7f89838a0161529b565b93506080880135915080821115615c9557600080fd5b50615ca28882890161529b565b9150509295509295909350565b60008060408385031215615cc257600080fd5b823567ffffffffffffffff80821115615cda57600080fd5b615ce68683870161529b565b93506020850135915080821115615cfc57600080fd5b50615bfb8582860161529b565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615d5a578160001904821115615d4057615d40615656565b80851615615d4d57918102915b93841c9390800290615d24565b509250929050565b600082615d71575060016108c1565b81615d7e575060006108c1565b8160018114615d945760028114615d9e57615dba565b60019150506108c1565b60ff841115615daf57615daf615656565b50506001821b6108c1565b5060208310610133831016604e8410600b8410161715615ddd575081810a6108c1565b615de78383615d1f565b8060001904821115615dfb57615dfb615656565b029392505050565b6000611cfd8383615d62565b60005b83811015615e2a578181015183820152602001615e12565b50506000910152565b60008251615e45818460208701615e0f565b9190910192915050565b6020815260008251806020840152615e6e816040850160208701615e0f565b601f01601f1916919091016040019291505056fea2646970667358221220df8b5759c6f54ff0724ea85507d187ec2709a8d512992bb84db80b233156d77b64736f6c63430008110033", } // EdgeChallengeManagerABI is the input ABI used to generate the binding from. diff --git a/solgen/go/mocksgen/mocksgen.go b/solgen/go/mocksgen/mocksgen.go index 6acc12c31..f1b2a769a 100644 --- a/solgen/go/mocksgen/mocksgen.go +++ b/solgen/go/mocksgen/mocksgen.go @@ -5360,7 +5360,7 @@ func (_MockResultReceiver *MockResultReceiverFilterer) ParseChallengeCompleted(l // SequencerInboxStubMetaData contains all meta data concerning the SequencerInboxStub contract. var SequencerInboxStubMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"maxDataSize_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"AlreadyValidDASKeyset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stored\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"BadSequencerNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataNotAuthenticated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDataLength\",\"type\":\"uint256\"}],\"name\":\"DataTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedBackwards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelayedTooFar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeBlockTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceIncludeTimeTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HadZeroInit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectMessagePreimage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"NoSuchKeyset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotBatchPoster\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOrigin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOwner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"InboxMessageDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageNum\",\"type\":\"uint256\"}],\"name\":\"InboxMessageDeliveredFromOrigin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidateKeyset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SequencerBatchData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchSequenceNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"beforeAcc\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"afterAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delayedAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlockNumber\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structISequencerInbox.TimeBounds\",\"name\":\"timeBounds\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enumISequencerInbox.BatchDataLocation\",\"name\":\"dataLocation\",\"type\":\"uint8\"}],\"name\":\"SequencerBatchDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keysetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"SetValidKeyset\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DATA_AUTHENTICATED_FLAG\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEADER_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"addInitMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2Batch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"afterDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIGasRefunder\",\"name\":\"gasRefunder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prevMessageCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newMessageCount\",\"type\":\"uint256\"}],\"name\":\"addSequencerL2BatchFromOrigin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dasKeySetInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidKeyset\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"creationBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalDelayedMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64[2]\",\"name\":\"l1BlockAndTime\",\"type\":\"uint64[2]\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeL1\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"messageDataHash\",\"type\":\"bytes32\"}],\"name\":\"forceInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"getKeysetCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"inboxAccs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"invalidateKeysetHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBatchPoster\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ksHash\",\"type\":\"bytes32\"}],\"name\":\"isValidKeysetHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDataSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxTimeVariation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelayAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOwnable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBatchPoster_\",\"type\":\"bool\"}],\"name\":\"setIsBatchPoster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isSequencer_\",\"type\":\"bool\"}],\"name\":\"setIsSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation_\",\"type\":\"tuple\"}],\"name\":\"setMaxTimeVariation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"keysetBytes\",\"type\":\"bytes\"}],\"name\":\"setValidKeyset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDelayedMessagesRead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRollupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610100604052306080524660c05262000023620000c5602090811b62001ed217901c565b151560e0523480156200003557600080fd5b506040516200313a3803806200313a83398101604081905262000058916200017b565b60a052600180546001600160a01b039485166001600160a01b03199182161782556002805490911633179055815160045560208083015160055560408084015160065560609093015160075592909316600090815260039092529020805460ff1916909117905562000265565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649162000105919062000234565b600060405180830381855afa9150503d806000811462000142576040519150601f19603f3d011682016040523d82523d6000602084013e62000147565b606091505b50915091508180156200015b575080516020145b9250505090565b6001600160a01b03811681146200017857600080fd5b50565b60008060008084860360e08112156200019357600080fd5b8551620001a08162000162565b6020870151909550620001b38162000162565b93506080603f1982011215620001c857600080fd5b50604051608081016001600160401b0381118282101715620001fa57634e487b7160e01b600052604160045260246000fd5b6040908152868101518252606080880151602084015260808801519183019190915260a08701519082015260c09095015193969295505050565b6000825160005b818110156200025757602081860181015185830152016200023b565b506000920191825250919050565b60805160a05160c05160e051612e7f620002bb600039600081816116fb0152612186015260006113840152600081816104480152818161246a01526124bf0152600081816105470152610af30152612e7f6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80637fa3a40e116100f9578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610430578063e8eb1dc314610443578063ebea461d1461046a578063f1981578146104a057600080fd5b8063d9dd67ab146103b2578063e0bc9729146103c5578063e5a358c8146103d857600080fd5b806396cc5c78116100d357806396cc5c7814610359578063b31761f814610361578063cb23bcb514610374578063d1ce8da81461039f57600080fd5b80637fa3a40e1461032a57806384420860146103335780638f111f3c1461034657600080fd5b80636633ae85116101665780636e7df3e7116101405780636e7df3e71461028d5780636f12b0c9146102a0578063715ea34b146102b357806371c3e6fe1461030757600080fd5b80636633ae851461024f5780636ae71f12146102625780636d46e9871461026a57600080fd5b80631f956632116101975780631f95663214610221578063258f04951461023457806327957a491461024757600080fd5b806306f13056146101be5780631637be48146101d95780631f7a92b21461020c575b600080fd5b6101c66104b3565b6040519081526020015b60405180910390f35b6101fc6101e7366004612737565b60009081526008602052604090205460ff1690565b60405190151581526020016101d0565b61021f61021a366004612768565b61053d565b005b61021f61022f3660046127b7565b610752565b6101c6610242366004612737565b61085f565b6101c6602881565b61021f61025d366004612737565b6108cc565b61021f610ae9565b6101fc6102783660046127f0565b60096020526000908152604090205460ff1681565b61021f61029b3660046127b7565b610c8c565b61021f6102ae36600461285d565b610d99565b6102e76102c1366004612737565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101d0565b6101fc6103153660046127f0565b60036020526000908152604090205460ff1681565b6101c660005481565b61021f610341366004612737565b610fd0565b61021f6103543660046128c8565b61112a565b61021f611381565b61021f61036f366004612945565b611410565b600254610387906001600160a01b031681565b6040516001600160a01b0390911681526020016101d0565b61021f6103ad3660046129b9565b611517565b6101c66103c0366004612737565b61187b565b61021f6103d33660046128c8565b611908565b6103ff7f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101d0565b600154610387906001600160a01b031681565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104809392919084565b6040805194855260208501939093529183015260608201526080016101d0565b61021f6104ae3660046129fb565b611a6f565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190612a6b565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105e05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610623576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610663576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107069190612a84565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190612a84565b6001600160a01b0316336001600160a01b03161461080f57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff169181018290529082036108b85760405162f20c5d60e01b8152600481018490526024016105d7565b6020015167ffffffffffffffff1692915050565b6000816040516020016108e191815260200190565b60408051808303601f1901815290829052600154815160208301207f8db5993b000000000000000000000000000000000000000000000000000000008452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b906064016020604051808303816000875af1158015610970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109949190612a6b565b905080156109e45760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f44454c415945445f494e495400000000000000000000000060448201526064016105d7565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051610a149190612ac5565b60405180910390a2600080610a296001611f98565b91509150600080600080610a438660016000806001611fdd565b935093509350935083600014610a9b5760405162461bcd60e51b815260206004820152601060248201527f414c52454144595f5345515f494e49540000000000000000000000000000000060448201526064016105d7565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6002604051610ad69493929190612af8565b60405180910390a4505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b875760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105d7565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610be457604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105d7565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b9190612a84565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190612a84565b6001600160a01b0316336001600160a01b031614610d4957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610dd8576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610e0857604051632dd9fc9760e01b815260040160405180910390fd5b600080610e16888888612434565b90925090506000808080610e2d868b8d8480611fdd565b93509350935093508c8414610e5f5760405163ac7411c960e01b815260048101859052602481018e90526044016105d7565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610e9a9493929190612af8565b60405180910390a4505050506001600160a01b038416159150610fc79050573660006020610ec983601f612b83565b610ed39190612b96565b9050610200610ee3600283612c9c565b610eed9190612b96565b610ef8826006612cab565b610f029190612b83565b610f0c9084612b83565b9250333214610f1a57600091505b836001600160a01b031663e3db8a49335a610f359087612cc2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc39190612cd5565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190612a84565b6001600160a01b0316336001600160a01b03161461108d57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b60008181526008602052604090205460ff166110be5760405162f20c5d60e01b8152600481018290526024016105d7565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214611169576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661119957604051632dd9fc9760e01b815260040160405180910390fd5b6000806111a78a8a8a612434565b90925090508a81838b8b8a8a60008080806111c589888a8989611fdd565b93509350935093508a84141580156111df57506000198b14155b156112075760405163ac7411c960e01b815260048101859052602481018c90526044016105d7565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516112429493929190612af8565b60405180910390a4505050506001600160a01b038b1615985061137697505050505050505057366000602061127883601f612b83565b6112829190612b96565b9050610200611292600283612c9c565b61129c9190612b96565b6112a7826006612cab565b6112b19190612b83565b6112bb9084612b83565b92503332146112c957600091505b836001600160a01b031663e3db8a49335a6112e49087612cc2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190612cd5565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036113da576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190612a84565b6001600160a01b0316336001600160a01b0316146114cd57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190612a84565b6001600160a01b0316336001600160a01b0316146115d457600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b600082826040516115e6929190612cf2565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106116ac5760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105d7565b60008181526008602052604090205460ff16156116f8576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105d7565b437f0000000000000000000000000000000000000000000000000000000000000000156117855760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190612a6b565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906118409088908890612d02565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190612a6b565b92915050565b8260005a3360009081526003602052604090205490915060ff1615801561193a57506002546001600160a01b03163314155b1561195857604051632dd9fc9760e01b815260040160405180910390fd5b6000806119668a8a8a612434565b909250905060008b82848b8a8a8680806119838787838888611fdd565b929c5090945092509050888a1480159061199f57506000198914155b156119c75760405163ac7411c960e01b8152600481018b9052602481018a90526044016105d7565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6001604051611a029493929190612af8565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c604051611a45929190612d02565b60405180910390a25050506001600160a01b0382161561137657366000602061127883601f612b83565b6000548611611aaa576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611b8f8684611abe6020890189612d47565b611ace60408a0160208b01612d47565b611ad960018d612cc2565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b6004549091504390611ba46020880188612d47565b67ffffffffffffffff16611bb89190612b83565b10611bef576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006544290611c046040880160208901612d47565b67ffffffffffffffff16611c189190612b83565b10611c4f576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611cd8576001546001600160a01b031663d5719dc2611c7660028b612cc2565b6040518263ffffffff1660e01b8152600401611c9491815260200190565b602060405180830381865afa158015611cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd59190612a6b565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611d1e908c612cc2565b6040518263ffffffff1660e01b8152600401611d3c91815260200190565b602060405180830381865afa158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7d9190612a6b565b14611db4576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611dc08a611f98565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612a6b565b9050600080548d83611e549190612b83565b611e5e9190612cc2565b9050600080600080611e74898860008989611fdd565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611eb79493929190612af8565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611f3e9190612d71565b600060405180830381855afa9150503d8060008114611f79576040519150601f19603f3d011682016040523d82523d6000602084013e611f7e565b606091505b5091509150818015611f91575080516020145b9250505090565b6040805160808101825260008082526020820181905291810182905260608101829052600080611fc78561267c565b8151602090920191909120969095509350505050565b60008060008060005488101561201f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120969190612a6b565b8811156120cf576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216c9190612d8d565b60008c9055929650909450925090508615612428573360607f0000000000000000000000000000000000000000000000000000000000000000156122f4576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220f9190612a6b565b9050600061221d4883612b96565b905067ffffffffffffffff8111156122775760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105d7565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc909201905291506123429050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b107916123a79187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190612a6b565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161241c9190612ac5565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905284846000612466826028612b83565b90507f00000000000000000000000000000000000000000000000000000000000000008111156124eb576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105d7565b811580159061255757507f400000000000000000000000000000000000000000000000000000000000000080848460008161252857612528612d31565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561258e576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602182108015906125d85750828260008181106125ad576125ad612d31565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b1561262c5760006125ed602160018587612dc3565b6125f691612ded565b60008181526008602052604090205490915060ff1661262a5760405162f20c5d60e01b8152600481018290526024016105d7565b505b6000806126388861267c565b915091506000828b8b60405160200161265393929190612e0b565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052838101839052855191820183905260288201839052603082018390526038820183905260c087901b7fffffffffffffffff00000000000000000000000000000000000000000000000016958201959095526048016040516020818303038152906040529050602881511461272e5761272e612e33565b94909350915050565b60006020828403121561274957600080fd5b5035919050565b6001600160a01b038116811461276557600080fd5b50565b60008082840360a081121561277c57600080fd5b833561278781612750565b92506080601f198201121561279b57600080fd5b506020830190509250929050565b801515811461276557600080fd5b600080604083850312156127ca57600080fd5b82356127d581612750565b915060208301356127e5816127a9565b809150509250929050565b60006020828403121561280257600080fd5b813561280d81612750565b9392505050565b60008083601f84011261282657600080fd5b50813567ffffffffffffffff81111561283e57600080fd5b60208301915083602082850101111561285657600080fd5b9250929050565b60008060008060006080868803121561287557600080fd5b85359450602086013567ffffffffffffffff81111561289357600080fd5b61289f88828901612814565b9095509350506040860135915060608601356128ba81612750565b809150509295509295909350565b600080600080600080600060c0888a0312156128e357600080fd5b87359650602088013567ffffffffffffffff81111561290157600080fd5b61290d8a828b01612814565b90975095505060408801359350606088013561292881612750565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561295757600080fd5b6040516080810181811067ffffffffffffffff8211171561298857634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156129cc57600080fd5b823567ffffffffffffffff8111156129e357600080fd5b6129ef85828601612814565b90969095509350505050565b60008060008060008060e08789031215612a1457600080fd5b86359550602087013560ff81168114612a2c57600080fd5b94506080870188811115612a3f57600080fd5b60408801945035925060a0870135612a5681612750565b8092505060c087013590509295509295509295565b600060208284031215612a7d57600080fd5b5051919050565b600060208284031215612a9657600080fd5b815161280d81612750565b60005b83811015612abc578181015183820152602001612aa4565b50506000910152565b6020815260008251806020840152612ae4816040850160208701612aa1565b601f01601f19169190910160400192915050565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060038310612b5e57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561190257611902612b6d565b600082612bb357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bf3578160001904821115612bd957612bd9612b6d565b80851615612be657918102915b93841c9390800290612bbd565b509250929050565b600082612c0a57506001611902565b81612c1757506000611902565b8160018114612c2d5760028114612c3757612c53565b6001915050611902565b60ff841115612c4857612c48612b6d565b50506001821b611902565b5060208310610133831016604e8410600b8410161715612c76575081810a611902565b612c808383612bb8565b8060001904821115612c9457612c94612b6d565b029392505050565b600061280d60ff841683612bfb565b808202811582820484141761190257611902612b6d565b8181038181111561190257611902612b6d565b600060208284031215612ce757600080fd5b815161280d816127a9565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5957600080fd5b813567ffffffffffffffff8116811461280d57600080fd5b60008251612d83818460208701612aa1565b9190910192915050565b60008060008060808587031215612da357600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008085851115612dd357600080fd5b83861115612de057600080fd5b5050820193919092039150565b8035602083101561190257600019602084900360031b1b1692915050565b60008451612e1d818460208901612aa1565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220e048e90bf75dfdf746156ed0381c56540d4dee0772cd4506df2d42e325743d0f64736f6c63430008110033", + Bin: "0x610100604052306080524660c05262000023620000c5602090811b62001ed217901c565b151560e0523480156200003557600080fd5b506040516200313a3803806200313a83398101604081905262000058916200017b565b60a052600180546001600160a01b039485166001600160a01b03199182161782556002805490911633179055815160045560208083015160055560408084015160065560609093015160075592909316600090815260039092529020805460ff1916909117905562000265565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649162000105919062000234565b600060405180830381855afa9150503d806000811462000142576040519150601f19603f3d011682016040523d82523d6000602084013e62000147565b606091505b50915091508180156200015b575080516020145b9250505090565b6001600160a01b03811681146200017857600080fd5b50565b60008060008084860360e08112156200019357600080fd5b8551620001a08162000162565b6020870151909550620001b38162000162565b93506080603f1982011215620001c857600080fd5b50604051608081016001600160401b0381118282101715620001fa57634e487b7160e01b600052604160045260246000fd5b6040908152868101518252606080880151602084015260808801519183019190915260a08701519082015260c09095015193969295505050565b6000825160005b818110156200025757602081860181015185830152016200023b565b506000920191825250919050565b60805160a05160c05160e051612e7f620002bb600039600081816116fb0152612186015260006113840152600081816104480152818161246a01526124bf0152600081816105470152610af30152612e7f6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80637fa3a40e116100f9578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610430578063e8eb1dc314610443578063ebea461d1461046a578063f1981578146104a057600080fd5b8063d9dd67ab146103b2578063e0bc9729146103c5578063e5a358c8146103d857600080fd5b806396cc5c78116100d357806396cc5c7814610359578063b31761f814610361578063cb23bcb514610374578063d1ce8da81461039f57600080fd5b80637fa3a40e1461032a57806384420860146103335780638f111f3c1461034657600080fd5b80636633ae85116101665780636e7df3e7116101405780636e7df3e71461028d5780636f12b0c9146102a0578063715ea34b146102b357806371c3e6fe1461030757600080fd5b80636633ae851461024f5780636ae71f12146102625780636d46e9871461026a57600080fd5b80631f956632116101975780631f95663214610221578063258f04951461023457806327957a491461024757600080fd5b806306f13056146101be5780631637be48146101d95780631f7a92b21461020c575b600080fd5b6101c66104b3565b6040519081526020015b60405180910390f35b6101fc6101e7366004612737565b60009081526008602052604090205460ff1690565b60405190151581526020016101d0565b61021f61021a366004612768565b61053d565b005b61021f61022f3660046127b7565b610752565b6101c6610242366004612737565b61085f565b6101c6602881565b61021f61025d366004612737565b6108cc565b61021f610ae9565b6101fc6102783660046127f0565b60096020526000908152604090205460ff1681565b61021f61029b3660046127b7565b610c8c565b61021f6102ae36600461285d565b610d99565b6102e76102c1366004612737565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101d0565b6101fc6103153660046127f0565b60036020526000908152604090205460ff1681565b6101c660005481565b61021f610341366004612737565b610fd0565b61021f6103543660046128c8565b61112a565b61021f611381565b61021f61036f366004612945565b611410565b600254610387906001600160a01b031681565b6040516001600160a01b0390911681526020016101d0565b61021f6103ad3660046129b9565b611517565b6101c66103c0366004612737565b61187b565b61021f6103d33660046128c8565b611908565b6103ff7f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101d0565b600154610387906001600160a01b031681565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104809392919084565b6040805194855260208501939093529183015260608201526080016101d0565b61021f6104ae3660046129fb565b611a6f565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190612a6b565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105e05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610623576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610663576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107069190612a84565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190612a84565b6001600160a01b0316336001600160a01b03161461080f57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff169181018290529082036108b85760405162f20c5d60e01b8152600481018490526024016105d7565b6020015167ffffffffffffffff1692915050565b6000816040516020016108e191815260200190565b60408051808303601f1901815290829052600154815160208301207f8db5993b000000000000000000000000000000000000000000000000000000008452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b906064016020604051808303816000875af1158015610970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109949190612a6b565b905080156109e45760405162461bcd60e51b815260206004820152601460248201527f414c52454144595f44454c415945445f494e495400000000000000000000000060448201526064016105d7565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051610a149190612ac5565b60405180910390a2600080610a296001611f98565b91509150600080600080610a438660016000806001611fdd565b935093509350935083600014610a9b5760405162461bcd60e51b815260206004820152601060248201527f414c52454144595f5345515f494e49540000000000000000000000000000000060448201526064016105d7565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6002604051610ad69493929190612af8565b60405180910390a4505050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b875760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105d7565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610be457604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105d7565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b9190612a84565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190612a84565b6001600160a01b0316336001600160a01b031614610d4957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610dd8576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610e0857604051632dd9fc9760e01b815260040160405180910390fd5b600080610e16888888612434565b90925090506000808080610e2d868b8d8480611fdd565b93509350935093508c8414610e5f5760405163ac7411c960e01b815260048101859052602481018e90526044016105d7565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610e9a9493929190612af8565b60405180910390a4505050506001600160a01b038416159150610fc79050573660006020610ec983601f612b83565b610ed39190612b96565b9050610200610ee3600283612c9c565b610eed9190612b96565b610ef8826006612cab565b610f029190612b83565b610f0c9084612b83565b9250333214610f1a57600091505b836001600160a01b031663e3db8a49335a610f359087612cc2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc39190612cd5565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190612a84565b6001600160a01b0316336001600160a01b03161461108d57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b60008181526008602052604090205460ff166110be5760405162f20c5d60e01b8152600481018290526024016105d7565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214611169576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff1661119957604051632dd9fc9760e01b815260040160405180910390fd5b6000806111a78a8a8a612434565b90925090508a81838b8b8a8a60008080806111c589888a8989611fdd565b93509350935093508a84141580156111df57506000198b14155b156112075760405163ac7411c960e01b815260048101859052602481018c90526044016105d7565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516112429493929190612af8565b60405180910390a4505050506001600160a01b038b1615985061137697505050505050505057366000602061127883601f612b83565b6112829190612b96565b9050610200611292600283612c9c565b61129c9190612b96565b6112a7826006612cab565b6112b19190612b83565b6112bb9084612b83565b92503332146112c957600091505b836001600160a01b031663e3db8a49335a6112e49087612cc2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190612cd5565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036113da576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190612a84565b6001600160a01b0316336001600160a01b0316146114cd57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190612a84565b6001600160a01b0316336001600160a01b0316146115d457600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105d7565b600082826040516115e6929190612cf2565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106116ac5760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105d7565b60008181526008602052604090205460ff16156116f8576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105d7565b437f0000000000000000000000000000000000000000000000000000000000000000156117855760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190612a6b565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906118409088908890612d02565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190612a6b565b92915050565b8260005a3360009081526003602052604090205490915060ff1615801561193a57506002546001600160a01b03163314155b1561195857604051632dd9fc9760e01b815260040160405180910390fd5b6000806119668a8a8a612434565b909250905060008b82848b8a8a8680806119838787838888611fdd565b929c5090945092509050888a1480159061199f57506000198914155b156119c75760405163ac7411c960e01b8152600481018b9052602481018a90526044016105d7565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6001604051611a029493929190612af8565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c604051611a45929190612d02565b60405180910390a25050506001600160a01b0382161561137657366000602061127883601f612b83565b6000548611611aaa576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611b8f8684611abe6020890189612d47565b611ace60408a0160208b01612d47565b611ad960018d612cc2565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b6004549091504390611ba46020880188612d47565b67ffffffffffffffff16611bb89190612b83565b10611bef576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006544290611c046040880160208901612d47565b67ffffffffffffffff16611c189190612b83565b10611c4f576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611cd8576001546001600160a01b031663d5719dc2611c7660028b612cc2565b6040518263ffffffff1660e01b8152600401611c9491815260200190565b602060405180830381865afa158015611cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd59190612a6b565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611d1e908c612cc2565b6040518263ffffffff1660e01b8152600401611d3c91815260200190565b602060405180830381865afa158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7d9190612a6b565b14611db4576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611dc08a611f98565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612a6b565b9050600080548d83611e549190612b83565b611e5e9190612cc2565b9050600080600080611e74898860008989611fdd565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611eb79493929190612af8565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611f3e9190612d71565b600060405180830381855afa9150503d8060008114611f79576040519150601f19603f3d011682016040523d82523d6000602084013e611f7e565b606091505b5091509150818015611f91575080516020145b9250505090565b6040805160808101825260008082526020820181905291810182905260608101829052600080611fc78561267c565b8151602090920191909120969095509350505050565b60008060008060005488101561201f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120969190612a6b565b8811156120cf576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216c9190612d8d565b60008c9055929650909450925090508615612428573360607f0000000000000000000000000000000000000000000000000000000000000000156122f4576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220f9190612a6b565b9050600061221d4883612b96565b905067ffffffffffffffff8111156122775760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105d7565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc909201905291506123429050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b107916123a79187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190612a6b565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161241c9190612ac5565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905284846000612466826028612b83565b90507f00000000000000000000000000000000000000000000000000000000000000008111156124eb576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105d7565b811580159061255757507f400000000000000000000000000000000000000000000000000000000000000080848460008161252857612528612d31565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561258e576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602182108015906125d85750828260008181106125ad576125ad612d31565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b1561262c5760006125ed602160018587612dc3565b6125f691612ded565b60008181526008602052604090205490915060ff1661262a5760405162f20c5d60e01b8152600481018290526024016105d7565b505b6000806126388861267c565b915091506000828b8b60405160200161265393929190612e0b565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052838101839052855191820183905260288201839052603082018390526038820183905260c087901b7fffffffffffffffff00000000000000000000000000000000000000000000000016958201959095526048016040516020818303038152906040529050602881511461272e5761272e612e33565b94909350915050565b60006020828403121561274957600080fd5b5035919050565b6001600160a01b038116811461276557600080fd5b50565b60008082840360a081121561277c57600080fd5b833561278781612750565b92506080601f198201121561279b57600080fd5b506020830190509250929050565b801515811461276557600080fd5b600080604083850312156127ca57600080fd5b82356127d581612750565b915060208301356127e5816127a9565b809150509250929050565b60006020828403121561280257600080fd5b813561280d81612750565b9392505050565b60008083601f84011261282657600080fd5b50813567ffffffffffffffff81111561283e57600080fd5b60208301915083602082850101111561285657600080fd5b9250929050565b60008060008060006080868803121561287557600080fd5b85359450602086013567ffffffffffffffff81111561289357600080fd5b61289f88828901612814565b9095509350506040860135915060608601356128ba81612750565b809150509295509295909350565b600080600080600080600060c0888a0312156128e357600080fd5b87359650602088013567ffffffffffffffff81111561290157600080fd5b61290d8a828b01612814565b90975095505060408801359350606088013561292881612750565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561295757600080fd5b6040516080810181811067ffffffffffffffff8211171561298857634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156129cc57600080fd5b823567ffffffffffffffff8111156129e357600080fd5b6129ef85828601612814565b90969095509350505050565b60008060008060008060e08789031215612a1457600080fd5b86359550602087013560ff81168114612a2c57600080fd5b94506080870188811115612a3f57600080fd5b60408801945035925060a0870135612a5681612750565b8092505060c087013590509295509295509295565b600060208284031215612a7d57600080fd5b5051919050565b600060208284031215612a9657600080fd5b815161280d81612750565b60005b83811015612abc578181015183820152602001612aa4565b50506000910152565b6020815260008251806020840152612ae4816040850160208701612aa1565b601f01601f19169190910160400192915050565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060038310612b5e57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561190257611902612b6d565b600082612bb357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bf3578160001904821115612bd957612bd9612b6d565b80851615612be657918102915b93841c9390800290612bbd565b509250929050565b600082612c0a57506001611902565b81612c1757506000611902565b8160018114612c2d5760028114612c3757612c53565b6001915050611902565b60ff841115612c4857612c48612b6d565b50506001821b611902565b5060208310610133831016604e8410600b8410161715612c76575081810a611902565b612c808383612bb8565b8060001904821115612c9457612c94612b6d565b029392505050565b600061280d60ff841683612bfb565b808202811582820484141761190257611902612b6d565b8181038181111561190257611902612b6d565b600060208284031215612ce757600080fd5b815161280d816127a9565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5957600080fd5b813567ffffffffffffffff8116811461280d57600080fd5b60008251612d83818460208701612aa1565b9190910192915050565b60008060008060808587031215612da357600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008085851115612dd357600080fd5b83861115612de057600080fd5b5050820193919092039150565b8035602083101561190257600019602084900360031b1b1692915050565b60008451612e1d818460208901612aa1565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220d405858288559cfda440a2f80c7acf45386e67c6171e2f3b62dc6749d58561c964736f6c63430008110033", } // SequencerInboxStubABI is the input ABI used to generate the binding from. @@ -8171,7 +8171,7 @@ func (_Simple *SimpleFilterer) ParseRedeemedEvent(log types.Log) (*SimpleRedeeme // SimpleOneStepProofEntryMetaData contains all meta data concerning the SimpleOneStepProofEntry contract. var SimpleOneStepProofEntryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"STEPS_PER_BATCH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"}],\"name\":\"getMachineHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxInboxMessagesRead\",\"type\":\"uint256\"},{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"initialWasmModuleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structExecutionContext\",\"name\":\"execCtx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"step\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"beforeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveOneStep\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"afterHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506108fa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80639c2009cd14610046578063b5112fd21461006d578063c39619c41461008e575b600080fd5b61004f6107d081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61008061007b3660046105ba565b6100a1565b604051908152602001610064565b61008061009c366004610656565b6103c5565b60008181036100f75760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f50524f4f4600000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6100ff610577565b600061010c8585836104eb565b602084015167ffffffffffffffff909216909152905061012d8585836104eb565b60208481015167ffffffffffffffff9093169201919091529050861580159061019657508560001a60f81b7fff00000000000000000000000000000000000000000000000000000000000000161580610196575061018a82610553565b67ffffffffffffffff16155b156101a55785925050506103bc565b87356101b083610569565b67ffffffffffffffff16106101c95785925050506103bc565b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d9092019052805191012086146102af5760405162461bcd60e51b815260206004820152600960248201527f4241445f50524f4f46000000000000000000000000000000000000000000000060448201526064016100ee565b602082810151018051906102c28261069a565b67ffffffffffffffff1690525060208281015101516102e4906107d0906106c1565b67ffffffffffffffff1660000361031f5760208201518051906103068261069a565b67ffffffffffffffff1690525060208281015160009101525b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d90920190528051910120925050505b95945050505050565b600060016103d960a084016080850161070c565b60028111156103ea576103ea6106f6565b146104375760405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f535441545553000000000000000000000000000060448201526064016100ee565b6104e5610449368490038401846107f3565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b92915050565b600081815b600881101561054a5760088367ffffffffffffffff16901b925085858381811061051c5761051c61066e565b919091013560f81c939093179250816105348161088c565b92505080806105429061088c565b9150506104f0565b50935093915050565b602081015160009060015b602002015192915050565b60208101516000908161055e565b604051806040016040528061058a61059c565b815260200161059761059c565b905290565b60405180604001604052806002906020820280368337509192915050565b600080600080600085870360c08112156105d357600080fd5b60608112156105e157600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff8082111561060e57600080fd5b818801915088601f83011261062257600080fd5b81358181111561063157600080fd5b89602082850101111561064357600080fd5b9699959850939650602001949392505050565b600060a0828403121561066857600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff8083168181036106b7576106b7610684565b6001019392505050565b600067ffffffffffffffff808416806106ea57634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561071e57600080fd5b81356003811061072d57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561076d5761076d610734565b60405290565b600082601f83011261078457600080fd5b6040516040810167ffffffffffffffff82821081831117156107a8576107a8610734565b604091825282918501868111156107be57600080fd5b855b818110156107e757803583811681146107d95760008081fd5b8452602093840193016107c0565b50929695505050505050565b60006080828403121561080557600080fd5b6040516040810181811067ffffffffffffffff8211171561082857610828610734565b604052601f8301841361083a57600080fd5b61084261074a565b80604085018681111561085457600080fd5b855b8181101561086e578035845260209384019301610856565b5081845261087c8782610773565b6020850152509195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036108bd576108bd610684565b506001019056fea264697066735822122007d4dadd84b8b8af4371efa20f8079a53924515b593c12a46ed62760f2118ea564736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b506108fa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80639c2009cd14610046578063b5112fd21461006d578063c39619c41461008e575b600080fd5b61004f6107d081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61008061007b3660046105ba565b6100a1565b604051908152602001610064565b61008061009c366004610656565b6103c5565b60008181036100f75760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f50524f4f4600000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6100ff610577565b600061010c8585836104eb565b602084015167ffffffffffffffff909216909152905061012d8585836104eb565b60208481015167ffffffffffffffff9093169201919091529050861580159061019657508560001a60f81b7fff00000000000000000000000000000000000000000000000000000000000000161580610196575061018a82610553565b67ffffffffffffffff16155b156101a55785925050506103bc565b87356101b083610569565b67ffffffffffffffff16106101c95785925050506103bc565b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d9092019052805191012086146102af5760405162461bcd60e51b815260206004820152600960248201527f4241445f50524f4f46000000000000000000000000000000000000000000000060448201526064016100ee565b602082810151018051906102c28261069a565b67ffffffffffffffff1690525060208281015101516102e4906107d0906106c1565b67ffffffffffffffff1660000361031f5760208201518051906103068261069a565b67ffffffffffffffff1690525060208281015160009101525b8151805160209182015182850151805190840151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081880152602d810195909552604d8501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d860152911b1660758301528051808303605d018152607d90920190528051910120925050505b95945050505050565b600060016103d960a084016080850161070c565b60028111156103ea576103ea6106f6565b146104375760405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f535441545553000000000000000000000000000060448201526064016100ee565b6104e5610449368490038401846107f3565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b92915050565b600081815b600881101561054a5760088367ffffffffffffffff16901b925085858381811061051c5761051c61066e565b919091013560f81c939093179250816105348161088c565b92505080806105429061088c565b9150506104f0565b50935093915050565b602081015160009060015b602002015192915050565b60208101516000908161055e565b604051806040016040528061058a61059c565b815260200161059761059c565b905290565b60405180604001604052806002906020820280368337509192915050565b600080600080600085870360c08112156105d357600080fd5b60608112156105e157600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff8082111561060e57600080fd5b818801915088601f83011261062257600080fd5b81358181111561063157600080fd5b89602082850101111561064357600080fd5b9699959850939650602001949392505050565b600060a0828403121561066857600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff8083168181036106b7576106b7610684565b6001019392505050565b600067ffffffffffffffff808416806106ea57634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561071e57600080fd5b81356003811061072d57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561076d5761076d610734565b60405290565b600082601f83011261078457600080fd5b6040516040810167ffffffffffffffff82821081831117156107a8576107a8610734565b604091825282918501868111156107be57600080fd5b855b818110156107e757803583811681146107d95760008081fd5b8452602093840193016107c0565b50929695505050505050565b60006080828403121561080557600080fd5b6040516040810181811067ffffffffffffffff8211171561082857610828610734565b604052601f8301841361083a57600080fd5b61084261074a565b80604085018681111561085457600080fd5b855b8181101561086e578035845260209384019301610856565b5081845261087c8782610773565b6020850152509195945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036108bd576108bd610684565b506001019056fea2646970667358221220bb010f7d85a909391f73abe8ff008f9e61868c066b932e19adb94d5cbc5259e964736f6c63430008110033", } // SimpleOneStepProofEntryABI is the input ABI used to generate the binding from. diff --git a/solgen/go/rollupgen/rollupgen.go b/solgen/go/rollupgen/rollupgen.go index f2b9ec5e6..c3ca898ff 100644 --- a/solgen/go/rollupgen/rollupgen.go +++ b/solgen/go/rollupgen/rollupgen.go @@ -379,7 +379,7 @@ func (_AssertionNodeLib *AssertionNodeLibTransactorRaw) Transact(opts *bind.Tran // BOLDUpgradeActionMetaData contains all meta data concerning the BOLDUpgradeAction contract. var BOLDUpgradeActionMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"l1Timelock\",\"type\":\"address\"},{\"internalType\":\"contractIOldRollup\",\"name\":\"rollup\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"osp\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.Contracts\",\"name\":\"contracts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rei\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seqInbox\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.ProxyAdmins\",\"name\":\"proxyAdmins\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seqInbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rei\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldRollupUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newRollupUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newRollupAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"}],\"internalType\":\"structBOLDUpgradeAction.Implementations\",\"name\":\"implementations\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"miniStakeAmt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"disableValidatorWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"blockLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bigStepLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"smallStepLeafSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevel\",\"type\":\"uint256\"}],\"internalType\":\"structBOLDUpgradeAction.Settings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"}],\"name\":\"RollupMigrated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ANY_TRUST_FAST_CONFIRMER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIGSTEP_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CONFIRM_PERIOD_BLOCKS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DISABLE_VALIDATOR_WHITELIST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_CHALLENGE_MANAGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_NEW_ROLLUP_ADMIN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_NEW_ROLLUP_USER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_OUTBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_PATCHED_OLD_ROLLUP_USER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_REI\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPL_SEQUENCER_INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L1_TIMELOCK\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINI_STAKE_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BIGSTEP_LEVEL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OLD_ROLLUP\",\"outputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OSP\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OUTBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREIMAGE_LOOKUP\",\"outputs\":[{\"internalType\":\"contractStateHashPreImageLookup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_BRIDGE\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_OUTBOX\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_REI\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROXY_ADMIN_SEQUENCER_INBOX\",\"outputs\":[{\"internalType\":\"contractProxyAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REI\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLLUP_READER\",\"outputs\":[{\"internalType\":\"contractRollupReader\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQ_INBOX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SMALLSTEP_LEAF_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"perform\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6104a06040523480156200001257600080fd5b5060405162006fd038038062006fd08339810160408190526200003591620004fe565b83516001600160a01b0390811661010052602080860151821661012052604080870151831661014052606080880151841661016052608088015184166101805260a088015184166101a05260c088015184166101c05260e088015184166102c052865184166102e0529186015183166103005285810151831661032052908501519091166103405251620000c9906200020e565b604051809103906000f080158015620000e6573d6000803e3d6000fd5b506001600160a01b031661036052602084015160405162000107906200021c565b6001600160a01b039091168152602001604051809103906000f08015801562000134573d6000803e3d6000fd5b506001600160a01b0390811661038052825181166103a05260208084015182166103c05260408085015183166103e05260608086015184166104005260808087015185166104205260a08088015186166104405260c08089015187166104605260e098890151871661048052878301516102605287516001600160401b03166101e052948701518616610200529286015161022052908501516102405284820151909316610280528382015115156102a05283850151909252610100830151909152610120820151905261014001519052506200060a9050565b610a2d80620059c083390190565b610be380620063ed83390190565b60405161010081016001600160401b03811182821017156200025c57634e487b7160e01b600052604160045260246000fd5b60405290565b60405161016081016001600160401b03811182821017156200025c57634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620002aa57600080fd5b50565b8051620002ba8162000294565b919050565b600060808284031215620002d257600080fd5b604051608081016001600160401b03811182821017156200030357634e487b7160e01b600052604160045260246000fd5b80604052508091508251620003188162000294565b815260208301516200032a8162000294565b602082015260408301516200033f8162000294565b60408201526060830151620003548162000294565b6060919091015292915050565b600061010082840312156200037557600080fd5b6200037f6200022a565b905081516200038e8162000294565b81526020820151620003a08162000294565b6020820152620003b360408301620002ad565b6040820152620003c660608301620002ad565b6060820152620003d960808301620002ad565b6080820152620003ec60a08301620002ad565b60a0820152620003ff60c08301620002ad565b60c08201526200041260e08301620002ad565b60e082015292915050565b80516001600160401b0381168114620002ba57600080fd5b80518015158114620002ba57600080fd5b600061016082840312156200045a57600080fd5b6200046462000262565b905062000471826200041d565b81526200048160208301620002ad565b6020820152604082015160408201526060820151606082015260808201516080820152620004b260a08301620002ad565b60a0820152620004c560c0830162000435565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b6000806000808486036103e08112156200051757600080fd5b610100808212156200052857600080fd5b620005326200022a565b91508651620005418162000294565b82526200055160208801620002ad565b60208301526200056460408801620002ad565b60408301526200057760608801620002ad565b60608301526200058a60808801620002ad565b60808301526200059d60a08801620002ad565b60a0830152620005b060c08801620002ad565b60c0830152620005c360e08801620002ad565b60e0830152819550620005d988828901620002bf565b94505050620005ed86610180870162000361565b9150620005ff86610280870162000446565b905092959194509250565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516150ae6200091260003960008181610334015261080b01526000818161025d01526109a901526000818161045b01526109d801526000818161040b01526114eb01526000818161069c01526122df01526000818161064c01526120c60152600081816106740152611ead01526000818161073c0152611bfd01526000818161048301528181610a0701528181610dbd0152818161117c015281816112740152818161132801528181611582015281816115b101526118860152600081816106c401526116f10152600081816103e301528181611e7d0152611f2d01526000818161043301528181611fd1015281816120960152818161214601526121ea0152600081816102ca0152818161082c01528181611b5b01528181611bcd01528181611d140152611db80152600081816102a2015281816122af015261235f01526000818161054b0152610b7a01526000818161059b01528181610f830152610fd00152600081816106ec0152611a330152600081816104fb015261194e01526000818161057301526119890152600081816107cd015261186001526000818161038401526118310152600081816102f201526118010152600081816105d4015261090d01526000818161035c0152818161093c01526121bb0152600081816105fc0152818161096b0152611fa2015260008181610714015281816108de0152611d8901526000818161077d015281816108af0152611b2e0152600081816105230152818161110501528181611433015261151301526000818161062401528181610bc6015261191f0152600081816104ab0152611a620152600081816107a50152611a010152600081816103ac01526119db0152600081816104d301526119b501526150ae6000f3fe60806040523480156200001157600080fd5b5060043610620002525760003560e01c80639f9854e51162000142578063c897f55e11620000cc578063dae7cb8b1162000097578063ee9a31a2116200007a578063ee9a31a21462000777578063fa287420146200079f578063faf5625f14620007c757600080fd5b8063dae7cb8b1462000736578063ebe03a93146200075e57600080fd5b8063c897f55e1462000696578063cc8089bb14620006be578063d1da2c5c14620006e6578063d384cb95146200070e57600080fd5b8063be41b367116200010d578063be41b36714620005f6578063bf5e3d52146200061e578063c21c42331462000646578063c519d151146200066e57600080fd5b80639f9854e51462000545578063a388f9b5146200056d578063b38d57f01462000595578063b701069714620005ce57600080fd5b80632cfb7ca311620001e15780634e0e75fb11620001ac578063609fb503116200018f578063609fb50314620004cd57806385e1f4d014620004f55780638765240f146200051d57600080fd5b80634e0e75fb146200047d5780635d9e244414620004a557600080fd5b80632cfb7ca314620003dd5780632db93bdc14620004055780633c2b7840146200042d5780634692de5d146200045557600080fd5b806310a662e2116200022257806310a662e2146200032e5780631b142ea714620003565780631c39b672146200037e5780631ccc2cd114620003a657600080fd5b8062f9731e14620002575780630787484b146200029c5780630a54257d14620002c45780631047fc5214620002ec575b600080fd5b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003147f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620005bd7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620007756200076f366004620026b8565b620007ef565b005b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620007f962001103565b60006200080562001574565b905060007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040516200085990620024a0565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200089c573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a8a919062002777565b6001600160a01b0316815250905060008360405160200162000aad9190620029d6565b604051602081830303815290604052805190602001209050600062000aff826040518060200162000ade90620024ae565b6020820181038252601f19601f820116604052508051906020012062001a8d565b905062000b0c8162001b17565b845161014086015161016087015161018088015160208901516101008a01516102008b01516040517f2f4a30650000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015267ffffffffffffffff90981660248201527f0000000000000000000000000000000000000000000000000000000000000000881660448201526064810196909652608486019490945260a4850192909252841660c484015260e48301527f0000000000000000000000000000000000000000000000000000000000000000831661010483015261012482015290851690632f4a30659061014401600060405180830381600087803b15801562000c1c57600080fd5b505af115801562000c31573d6000803e3d6000fd5b5050505060008260405162000c4690620024ae565b8190604051809103906000f590508015801562000c67573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000cd15760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fda1821180000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063da1821189062000d24908a908990600401620029eb565b600060405180830381600087803b15801562000d3f57600080fd5b505af115801562000d54573d6000803e3d6000fd5b50505050875160001462000f81576000885167ffffffffffffffff81111562000d815762000d8162002602565b60405190808252806020026020018201604052801562000dab578160200160208202803683370190505b50905060005b895181101562000f01577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000dff5762000dff62002ad3565b60200260200101516040518263ffffffff1660e01b815260040162000e3391906001600160a01b0391909116815260200190565b602060405180830381865afa15801562000e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e77919062002aff565b62000ec55760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000cc8565b600182828151811062000edc5762000edc62002ad3565b911515602092830291909101909101528062000ef88162002b33565b91505062000db1565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb7729062000f4b908c90859060040162002bb4565b600060405180830381600087803b15801562000f6657600080fd5b505af115801562000f7b573d6000803e3d6000fd5b50505050505b7f0000000000000000000000000000000000000000000000000000000000000000156200103f576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b1580156200102557600080fd5b505af11580156200103a573d6000803e3d6000fd5b505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200109c57600080fd5b505af1158015620010b1573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200115f57600080fd5b505af115801562001174573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ff919062002c2a565b905060328167ffffffffffffffff16111562001219575060325b60005b8167ffffffffffffffff168167ffffffffffffffff161015620014ba576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015620012c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012ea919062002777565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa15801562001370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001396919062002c48565b905080608001518015620013b65750606081015167ffffffffffffffff16155b15620014a257604080516001808252818301909252600091602080830190803683370190505090508281600081518110620013f557620013f562002ad3565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200146c90849060040162002cdb565b600060405180830381600087803b1580156200148757600080fd5b505af11580156200149c573d6000803e3d6000fd5b50505050505b50508080620014b19062002cf0565b9150506200121c565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200155857600080fd5b505af11580156200156d573d6000803e3d6000fd5b5050505050565b6200157e620024bc565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001634919062002c2a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001693573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016b9919062002d1a565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001767919062002e6e565b9150915082620017788383620023ca565b14620017c75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000cc8565b620017f36040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518061022001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001909919062002f3f565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018281526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018481526020018381526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081525094505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b6040516310270e3d60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181166004840152916000917f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562001ba3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc9919062002777565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d837f000000000000000000000000000000000000000000000000000000000000000063919cc70660e01b8760405160240162001c4591906001600160a01b0391909116815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825262001cbb93929160040162002f59565b600060405180830381600087803b15801562001cd657600080fd5b505af115801562001ceb573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b15801562001d5b57600080fd5b505af115801562001d70573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562001e00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e26919062002777565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d9262001ed49287927f0000000000000000000000000000000000000000000000000000000000000000920162002f59565b600060405180830381600087803b15801562001eef57600080fd5b505af115801562001f04573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b15801562001f7457600080fd5b505af115801562001f89573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562002019573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200203f919062002777565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d92620020ed9287927f0000000000000000000000000000000000000000000000000000000000000000920162002f59565b600060405180830381600087803b1580156200210857600080fd5b505af11580156200211d573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b1580156200218d57600080fd5b505af1158015620021a2573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562002232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002258919062002777565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d92620023069287927f0000000000000000000000000000000000000000000000000000000000000000920162002f59565b600060405180830381600087803b1580156200232157600080fd5b505af115801562002336573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b158015620023a657600080fd5b505af1158015620023bb573d6000803e3d6000fd5b50505050505050505050505050565b81518051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d9091019092528151910120600090828460200151604051602001620024829392919062002f90565b60405160208183030381529060405280519060200120905092915050565b610ed38062002fd083390190565b6111d68062003ea383390190565b604051806102200160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001600081526020016200255b6040518060800160405280600081526020016000815260200160008152602001600081525090565b81526020016000815260200160008152602001600081526020016200257f620025a3565b81526020016000815260200160006001600160a01b03168152602001600081525090565b6040518060400160405280620025b8620025c5565b815260200160005b905290565b6040518060400160405280620025da620025e4565b8152602001620025c05b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156200263f576200263f62002602565b60405290565b6040805190810167ffffffffffffffff811182821017156200263f576200263f62002602565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002697576200269762002602565b604052919050565b6001600160a01b0381168114620026b557600080fd5b50565b60006020808385031215620026cc57600080fd5b823567ffffffffffffffff80821115620026e557600080fd5b818501915085601f830112620026fa57600080fd5b8135818111156200270f576200270f62002602565b8060051b9150620027228483016200266b565b81815291830184019184810190888411156200273d57600080fd5b938501935b838510156200276b57843592506200275a836200269f565b828252938501939085019062002742565b98975050505050505050565b6000602082840312156200278a57600080fd5b815162001b10816200269f565b6000815180845260005b81811015620027bf57602081850181015186830182015201620027a1565b506000602082860101526020601f19601f83011685010191505092915050565b60038110620027fe57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b60028110156200282b5782518252602092830192909101906001016200280a565b505050602090810151906040840160005b60028110156200286557835167ffffffffffffffff16825292820192908201906001016200283c565b505082015190506200287b6080840182620027df565b505050565b805167ffffffffffffffff16825260006103006020830151620028ae60208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151620028de60808601826001600160a01b03169052565b5060a0830151620028fa60a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e08601526200291e8286018262002797565b610100858101519087015261012080860151805182890152602081015161014089015260408101516101608901526060810151610180890152919350915050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e083818901528287015193506102009250620029a58389018562002802565b908601516102a08801528501516001600160a01b03166102c0870152909301516102e0909401939093525090919050565b60208152600062001b10602083018462002880565b600061014080835262002a018184018662002880565b9150506001600160a01b038351166020830152602083015162002a2f60408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e083015161010062002ab6818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050509392505050565b634e487b7160e01b600052603260045260246000fd5b8051801515811462002afa57600080fd5b919050565b60006020828403121562002b1257600080fd5b62001b108262002ae9565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002b675762002b6762002b1d565b5060010190565b600081518084526020808501945080840160005b8381101562002ba95781516001600160a01b03168752958201959082019060010162002b82565b509495945050505050565b60408152600062002bc9604083018562002b6e565b82810360208481019190915284518083528582019282019060005b8181101562002c0457845115158352938301939183019160010162002be4565b5090979650505050505050565b805167ffffffffffffffff8116811462002afa57600080fd5b60006020828403121562002c3d57600080fd5b62001b108262002c11565b600060a0828403121562002c5b57600080fd5b60405160a0810181811067ffffffffffffffff8211171562002c815762002c8162002602565b6040528251815262002c966020840162002c11565b602082015262002ca96040840162002c11565b604082015262002cbc6060840162002c11565b606082015262002ccf6080840162002ae9565b60808201529392505050565b60208152600062001b10602083018462002b6e565b600067ffffffffffffffff80831681810362002d105762002d1062002b1d565b6001019392505050565b6000610180828403121562002d2e57600080fd5b62002d3862002618565b82518152602083015160208201526040830151604082015262002d5e6060840162002c11565b606082015262002d716080840162002c11565b608082015262002d8460a0840162002c11565b60a082015262002d9760c0840162002c11565b60c082015262002daa60e0840162002c11565b60e082015261010062002dbf81850162002c11565b9082015261012062002dd384820162002c11565b9082015261014062002de784820162002c11565b90820152610160928301519281019290925250919050565b600082601f83011262002e1157600080fd5b62002e1b62002645565b80604084018581111562002e2e57600080fd5b845b8181101562002e535762002e448162002c11565b84526020938401930162002e30565b509095945050505050565b80516003811062002afa57600080fd5b60008082840360c081121562002e8357600080fd5b60a081121562002e9257600080fd5b62002e9c62002645565b608082121562002eab57600080fd5b62002eb562002645565b915085601f86011262002ec757600080fd5b62002ed162002645565b80604087018881111562002ee457600080fd5b875b8181101562002f0057805184526020938401930162002ee6565b5081855262002f10898262002dff565b602086015250505081815262002f296080860162002e5e565b602082015260a094909401519395939450505050565b60006020828403121562002f5257600080fd5b5051919050565b60006001600160a01b0380861683528085166020840152506060604083015262002f87606083018462002797565b95945050505050565b83815282602082015260006003831062002fba57634e487b7160e01b600052602160045260246000fd5b5060f89190911b60408201526041019291505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220843c6e515889d3fec9a41f64c5723ea42199269a763404bdbdd7216bfcb9ba0464736f6c63430008110033a264697066735822122092ef030ed8f2c43fc6afa5571cd2a07322326cb2ce81ea2640703b68afdd53d764736f6c63430008110033608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea2646970667358221220c4a1f6a1655b651fc1761ca06b136240ec95c325b62e530e354cb41cf8058ab664736f6c6343000811003360a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea26469706673582212200a66ed548b0359418351f421377373236fb891bd07482855213d9c3d78acb8c164736f6c63430008110033", + Bin: "0x6104a06040523480156200001257600080fd5b5060405162006f6738038062006f678339810160408190526200003591620004fe565b83516001600160a01b0390811661010052602080860151821661012052604080870151831661014052606080880151841661016052608088015184166101805260a088015184166101a05260c088015184166101c05260e088015184166102c052865184166102e0529186015183166103005285810151831661032052908501519091166103405251620000c9906200020e565b604051809103906000f080158015620000e6573d6000803e3d6000fd5b506001600160a01b031661036052602084015160405162000107906200021c565b6001600160a01b039091168152602001604051809103906000f08015801562000134573d6000803e3d6000fd5b506001600160a01b0390811661038052825181166103a05260208084015182166103c05260408085015183166103e05260608086015184166104005260808087015185166104205260a08088015186166104405260c08089015187166104605260e098890151871661048052878301516102605287516001600160401b03166101e052948701518616610200529286015161022052908501516102405284820151909316610280528382015115156102a05283850151909252610100830151909152610120820151905261014001519052506200060a9050565b610a2d806200595783390190565b610be3806200638483390190565b60405161010081016001600160401b03811182821017156200025c57634e487b7160e01b600052604160045260246000fd5b60405290565b60405161016081016001600160401b03811182821017156200025c57634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620002aa57600080fd5b50565b8051620002ba8162000294565b919050565b600060808284031215620002d257600080fd5b604051608081016001600160401b03811182821017156200030357634e487b7160e01b600052604160045260246000fd5b80604052508091508251620003188162000294565b815260208301516200032a8162000294565b602082015260408301516200033f8162000294565b60408201526060830151620003548162000294565b6060919091015292915050565b600061010082840312156200037557600080fd5b6200037f6200022a565b905081516200038e8162000294565b81526020820151620003a08162000294565b6020820152620003b360408301620002ad565b6040820152620003c660608301620002ad565b6060820152620003d960808301620002ad565b6080820152620003ec60a08301620002ad565b60a0820152620003ff60c08301620002ad565b60c08201526200041260e08301620002ad565b60e082015292915050565b80516001600160401b0381168114620002ba57600080fd5b80518015158114620002ba57600080fd5b600061016082840312156200045a57600080fd5b6200046462000262565b905062000471826200041d565b81526200048160208301620002ad565b6020820152604082015160408201526060820151606082015260808201516080820152620004b260a08301620002ad565b60a0820152620004c560c0830162000435565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b6000806000808486036103e08112156200051757600080fd5b610100808212156200052857600080fd5b620005326200022a565b91508651620005418162000294565b82526200055160208801620002ad565b60208301526200056460408801620002ad565b60408301526200057760608801620002ad565b60608301526200058a60808801620002ad565b60808301526200059d60a08801620002ad565b60a0830152620005b060c08801620002ad565b60c0830152620005c360e08801620002ad565b60e0830152819550620005d988828901620002bf565b94505050620005ed86610180870162000361565b9150620005ff86610280870162000446565b905092959194509250565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e051610400516104205161044051610460516104805161503e6200091960003960008181610334015261080b01526000818161025d01526109a901526000818161045b01526109d801526000818161040b01526114eb01526000818161069c015261236701526000818161064c015261214e0152600081816106740152611f3501526000818161073c0152611c8501526000818161048301528181610a0701528181610dbd0152818161117c015281816112740152818161132801528181611582015281816115b1015261190e0152600081816106c4015281816116f1015261176e0152600081816103e301528181611f050152611fb5015260008181610433015281816120590152818161211e015281816121ce01526122720152600081816102ca0152818161082c01528181611be301528181611c5501528181611d9c0152611e400152600081816102a20152818161233701526123e701526000818161054b0152610b7a01526000818161059b01528181610f830152610fd00152600081816106ec0152611abb0152600081816104fb01526119d60152600081816105730152611a110152600081816107cd01526118e801526000818161038401526118b90152600081816102f201526118890152600081816105d4015261090d01526000818161035c0152818161093c01526122430152600081816105fc0152818161096b015261202a015260008181610714015281816108de0152611e1101526000818161077d015281816108af0152611bb60152600081816105230152818161110501528181611433015261151301526000818161062401528181610bc601526119a70152600081816104ab0152611aea0152600081816107a50152611a890152600081816103ac0152611a630152600081816104d30152611a3d015261503e6000f3fe60806040523480156200001157600080fd5b5060043610620002525760003560e01c80639f9854e51162000142578063c897f55e11620000cc578063dae7cb8b1162000097578063ee9a31a2116200007a578063ee9a31a21462000777578063fa287420146200079f578063faf5625f14620007c757600080fd5b8063dae7cb8b1462000736578063ebe03a93146200075e57600080fd5b8063c897f55e1462000696578063cc8089bb14620006be578063d1da2c5c14620006e6578063d384cb95146200070e57600080fd5b8063be41b367116200010d578063be41b36714620005f6578063bf5e3d52146200061e578063c21c42331462000646578063c519d151146200066e57600080fd5b80639f9854e51462000545578063a388f9b5146200056d578063b38d57f01462000595578063b701069714620005ce57600080fd5b80632cfb7ca311620001e15780634e0e75fb11620001ac578063609fb503116200018f578063609fb50314620004cd57806385e1f4d014620004f55780638765240f146200051d57600080fd5b80634e0e75fb146200047d5780635d9e244414620004a557600080fd5b80632cfb7ca314620003dd5780632db93bdc14620004055780633c2b7840146200042d5780634692de5d146200045557600080fd5b806310a662e2116200022257806310a662e2146200032e5780631b142ea714620003565780631c39b672146200037e5780631ccc2cd114620003a657600080fd5b8062f9731e14620002575780630787484b146200029c5780630a54257d14620002c45780631047fc5214620002ec575b600080fd5b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003147f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620005bd7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000293565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620007756200076f3660046200266a565b620007ef565b005b6200027f7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620003ce7f000000000000000000000000000000000000000000000000000000000000000081565b620007f962001103565b60006200080562001574565b905060007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051620008599062002452565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200089c573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a8a919062002729565b6001600160a01b0316815250905060008360405160200162000aad919062002988565b604051602081830303815290604052805190602001209050600062000aff826040518060200162000ade9062002460565b6020820181038252601f19601f820116604052508051906020012062001b15565b905062000b0c8162001b9f565b845161014086015161016087015161018088015160208901516101008a01516102008b01516040517f2f4a30650000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015267ffffffffffffffff90981660248201527f0000000000000000000000000000000000000000000000000000000000000000881660448201526064810196909652608486019490945260a4850192909252841660c484015260e48301527f0000000000000000000000000000000000000000000000000000000000000000831661010483015261012482015290851690632f4a30659061014401600060405180830381600087803b15801562000c1c57600080fd5b505af115801562000c31573d6000803e3d6000fd5b5050505060008260405162000c469062002460565b8190604051809103906000f590508015801562000c67573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000cd15760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fda1821180000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063da1821189062000d24908a9089906004016200299d565b600060405180830381600087803b15801562000d3f57600080fd5b505af115801562000d54573d6000803e3d6000fd5b50505050875160001462000f81576000885167ffffffffffffffff81111562000d815762000d81620025b4565b60405190808252806020026020018201604052801562000dab578160200160208202803683370190505b50905060005b895181101562000f01577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000dff5762000dff62002a85565b60200260200101516040518263ffffffff1660e01b815260040162000e3391906001600160a01b0391909116815260200190565b602060405180830381865afa15801562000e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e77919062002ab1565b62000ec55760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000cc8565b600182828151811062000edc5762000edc62002a85565b911515602092830291909101909101528062000ef88162002ae5565b91505062000db1565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb7729062000f4b908c90859060040162002b66565b600060405180830381600087803b15801562000f6657600080fd5b505af115801562000f7b573d6000803e3d6000fd5b50505050505b7f0000000000000000000000000000000000000000000000000000000000000000156200103f576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b1580156200102557600080fd5b505af11580156200103a573d6000803e3d6000fd5b505050505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200109c57600080fd5b505af1158015620010b1573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200115f57600080fd5b505af115801562001174573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ff919062002bdc565b905060328167ffffffffffffffff16111562001219575060325b60005b8167ffffffffffffffff168167ffffffffffffffff161015620014ba576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015620012c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012ea919062002729565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa15801562001370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001396919062002bfa565b905080608001518015620013b65750606081015167ffffffffffffffff16155b15620014a257604080516001808252818301909252600091602080830190803683370190505090508281600081518110620013f557620013f562002a85565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200146c90849060040162002c8d565b600060405180830381600087803b1580156200148757600080fd5b505af11580156200149c573d6000803e3d6000fd5b50505050505b50508080620014b19062002ca2565b9150506200121c565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200155857600080fd5b505af11580156200156d573d6000803e3d6000fd5b5050505050565b6200157e6200246e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001634919062002bdc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001693573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016b9919062002ccc565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001767919062002e20565b91509150827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633164413084846040518363ffffffff1660e01b8152600401620017bc92919062002ef1565b602060405180830381865afa158015620017da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001800919062002f0e565b146200184f5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000cc8565b6200187b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518061022001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001991919062002f0e565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018281526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020018481526020018381526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081525094505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b6040516310270e3d60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181166004840152916000917f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562001c2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c51919062002729565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d837f000000000000000000000000000000000000000000000000000000000000000063919cc70660e01b8760405160240162001ccd91906001600160a01b0391909116815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825262001d4393929160040162002f28565b600060405180830381600087803b15801562001d5e57600080fd5b505af115801562001d73573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b15801562001de357600080fd5b505af115801562001df8573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa15801562001e88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eae919062002729565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d9262001f5c9287927f0000000000000000000000000000000000000000000000000000000000000000920162002f28565b600060405180830381600087803b15801562001f7757600080fd5b505af115801562001f8c573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b15801562001ffc57600080fd5b505af115801562002011573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa158015620020a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020c7919062002729565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d92620021759287927f0000000000000000000000000000000000000000000000000000000000000000920162002f28565b600060405180830381600087803b1580156200219057600080fd5b505af1158015620021a5573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b1580156200221557600080fd5b505af11580156200222a573d6000803e3d6000fd5b50506040516310270e3d60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401529350600092507f0000000000000000000000000000000000000000000000000000000000000000169063204e1c7a90602401602060405180830381865afa158015620022ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e0919062002729565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166335738f8960e11b1790529151639623609d60e01b81529293506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639623609d926200238e9287927f0000000000000000000000000000000000000000000000000000000000000000920162002f28565b600060405180830381600087803b158015620023a957600080fd5b505af1158015620023be573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b03858116600483015284811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506399a88ec49150604401600060405180830381600087803b1580156200242e57600080fd5b505af115801562002443573d6000803e3d6000fd5b50505050505050505050505050565b610ed38062002f6083390190565b6111d68062003e3383390190565b604051806102200160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001600081526020016200250d6040518060800160405280600081526020016000815260200160008152602001600081525090565b81526020016000815260200160008152602001600081526020016200253162002555565b81526020016000815260200160006001600160a01b03168152602001600081525090565b60405180604001604052806200256a62002577565b815260200160005b905290565b60405180604001604052806200258c62002596565b8152602001620025725b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620025f157620025f1620025b4565b60405290565b6040805190810167ffffffffffffffff81118282101715620025f157620025f1620025b4565b604051601f8201601f1916810167ffffffffffffffff81118282101715620026495762002649620025b4565b604052919050565b6001600160a01b03811681146200266757600080fd5b50565b600060208083850312156200267e57600080fd5b823567ffffffffffffffff808211156200269757600080fd5b818501915085601f830112620026ac57600080fd5b813581811115620026c157620026c1620025b4565b8060051b9150620026d48483016200261d565b8181529183018401918481019088841115620026ef57600080fd5b938501935b838510156200271d57843592506200270c8362002651565b8282529385019390850190620026f4565b98975050505050505050565b6000602082840312156200273c57600080fd5b815162001b988162002651565b6000815180845260005b81811015620027715760208185018101518683018201520162002753565b506000602082860101526020601f19601f83011685010191505092915050565b60038110620027b057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015620027dd578251825260209283019290910190600101620027bc565b505050602090810151906040840160005b60028110156200281757835167ffffffffffffffff1682529282019290820190600101620027ee565b505082015190506200282d608084018262002791565b505050565b805167ffffffffffffffff168252600061030060208301516200286060208601826001600160a01b03169052565b50604083015160408501526060830151606085015260808301516200289060808601826001600160a01b03169052565b5060a0830151620028ac60a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e0860152620028d08286018262002749565b610100858101519087015261012080860151805182890152602081015161014089015260408101516101608901526060810151610180890152919350915050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e0838189015282870151935061020092506200295783890185620027b4565b908601516102a08801528501516001600160a01b03166102c0870152909301516102e0909401939093525090919050565b60208152600062001b98602083018462002832565b6000610140808352620029b38184018662002832565b9150506001600160a01b0383511660208301526020830151620029e160408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e083015161010062002a68818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050509392505050565b634e487b7160e01b600052603260045260246000fd5b8051801515811462002aac57600080fd5b919050565b60006020828403121562002ac457600080fd5b62001b988262002a9b565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002b195762002b1962002acf565b5060010190565b600081518084526020808501945080840160005b8381101562002b5b5781516001600160a01b03168752958201959082019060010162002b34565b509495945050505050565b60408152600062002b7b604083018562002b20565b82810360208481019190915284518083528582019282019060005b8181101562002bb657845115158352938301939183019160010162002b96565b5090979650505050505050565b805167ffffffffffffffff8116811462002aac57600080fd5b60006020828403121562002bef57600080fd5b62001b988262002bc3565b600060a0828403121562002c0d57600080fd5b60405160a0810181811067ffffffffffffffff8211171562002c335762002c33620025b4565b6040528251815262002c486020840162002bc3565b602082015262002c5b6040840162002bc3565b604082015262002c6e6060840162002bc3565b606082015262002c816080840162002a9b565b60808201529392505050565b60208152600062001b98602083018462002b20565b600067ffffffffffffffff80831681810362002cc25762002cc262002acf565b6001019392505050565b6000610180828403121562002ce057600080fd5b62002cea620025ca565b82518152602083015160208201526040830151604082015262002d106060840162002bc3565b606082015262002d236080840162002bc3565b608082015262002d3660a0840162002bc3565b60a082015262002d4960c0840162002bc3565b60c082015262002d5c60e0840162002bc3565b60e082015261010062002d7181850162002bc3565b9082015261012062002d8584820162002bc3565b9082015261014062002d9984820162002bc3565b90820152610160928301519281019290925250919050565b600082601f83011262002dc357600080fd5b62002dcd620025f7565b80604084018581111562002de057600080fd5b845b8181101562002e055762002df68162002bc3565b84526020938401930162002de2565b509095945050505050565b80516003811062002aac57600080fd5b60008082840360c081121562002e3557600080fd5b60a081121562002e4457600080fd5b62002e4e620025f7565b608082121562002e5d57600080fd5b62002e67620025f7565b915085601f86011262002e7957600080fd5b62002e83620025f7565b80604087018881111562002e9657600080fd5b875b8181101562002eb257805184526020938401930162002e98565b5081855262002ec2898262002db1565b602086015250505081815262002edb6080860162002e10565b602082015260a094909401519395939450505050565b60c0810162002f018285620027b4565b8260a08301529392505050565b60006020828403121562002f2157600080fd5b5051919050565b60006001600160a01b0380861683528085166020840152506060604083015262002f56606083018462002749565b9594505050505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201515ad57cf082a66aa89d652f160f96241ce5a7f55cc28ad76590a621709786764736f6c63430008110033a2646970667358221220b09fde82145d66754c7661939591a528f4ddfa859db10aee8b4fc72a268a693764736f6c63430008110033608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea26469706673582212204c1355eb4512417ff2457946a1d8bc79f874768e478c654c7e9fb6bddc99653064736f6c6343000811003360a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea264697066735822122035e03977b5029ddf76de0c2e7f12a3cb4fb9c84fdcc8078c4aaecfe9a087f19264736f6c63430008110033", } // BOLDUpgradeActionABI is the input ABI used to generate the binding from. @@ -1731,7 +1731,7 @@ func (_BOLDUpgradeAction *BOLDUpgradeActionFilterer) ParseRollupMigrated(log typ // BridgeCreatorMetaData contains all meta data concerning the BridgeCreator contract. var BridgeCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxDataSize\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"TemplatesUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeTemplate\",\"outputs\":[{\"internalType\":\"contractBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollup\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"maxTimeVariation\",\"type\":\"tuple\"}],\"name\":\"createBridge\",\"outputs\":[{\"internalType\":\"contractBridge\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contractSequencerInbox\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contractInbox\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contractRollupEventInbox\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contractOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inboxTemplate\",\"outputs\":[{\"internalType\":\"contractInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outboxTemplate\",\"outputs\":[{\"internalType\":\"contractOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEventInboxTemplate\",\"outputs\":[{\"internalType\":\"contractRollupEventInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerInboxTemplate\",\"outputs\":[{\"internalType\":\"contractSequencerInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridgeTemplate\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sequencerInboxTemplate\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_inboxTemplate\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rollupEventInboxTemplate\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outboxTemplate\",\"type\":\"address\"}],\"name\":\"updateTemplates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200b1c23803806200b1c2833981016040819052620000349162000268565b6200003f33620001d2565b6040516200004d9062000222565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905560405181906200009b9062000230565b908152602001604051809103906000f080158015620000be573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556040518190620000ef906200023e565b908152602001604051809103906000f08015801562000112573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b039290921691909117905560405162000141906200024c565b604051809103906000f0801580156200015e573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03929092169190911790556040516200018d906200025a565b604051809103906000f080158015620001aa573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790555062000282565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611a108062001c6183390190565b612ed0806200367183390190565b612a99806200654183390190565b6109e48062008fda83390190565b61180480620099be83390190565b6000602082840312156200027b57600080fd5b5051919050565b6119cf80620002926000396000f3fe60806040523480156200001157600080fd5b5060043610620000cd5760003560e01c806395fd089f116200007f578063e6027a871162000062578063e6027a8714620001b2578063f2fde38b14620001c6578063fc6a2ed014620001dd57600080fd5b806395fd089f146200018a578063ae583c03146200019e57600080fd5b8063715018a611620000b4578063715018a614620001415780637ba0e857146200014b5780638da5cb5b146200017857600080fd5b80632147e58e14620000d25780636c6e47c014620000eb575b600080fd5b620000e9620000e33660046200094b565b620001f1565b005b62000102620000fc366004620009bb565b62000299565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0015b60405180910390f35b620000e962000776565b6003546200015f906001600160a01b031681565b6040516001600160a01b03909116815260200162000138565b6000546001600160a01b03166200015f565b6001546200015f906001600160a01b031681565b6004546200015f906001600160a01b031681565b6002546200015f906001600160a01b031681565b620000e9620001d736600462000aa1565b6200078e565b6005546200015f906001600160a01b031681565b620001fb62000842565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0388811691909117909255600280548216878416179055600380548216868416179055600480548216858416179055600580549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a15050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905281908190819081906001546040516001600160a01b03909116908a90620002f19062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000334573d6000803e3d6000fd5b506001600160a01b0390811660208301526002546040519116908a906200035b9062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200039e573d6000803e3d6000fd5b506001600160a01b0390811660408084019190915260035490519116908a90620003c89062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200040b573d6000803e3d6000fd5b506001600160a01b0390811660608301526004546040519116908a90620004329062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000475573d6000803e3d6000fd5b506001600160a01b0390811660808301526005546040519116908a906200049c9062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620004df573d6000803e3d6000fd5b506001600160a01b0390811660a0830152602082015160405163189acdbd60e31b81528a8316600482015291169063c4d66de890602401600060405180830381600087803b1580156200053157600080fd5b505af115801562000546573d6000803e3d6000fd5b50505060408083015160208085015183517f1f7a92b20000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201528c516024820152918c01516044830152928b0151606482015260608b0151608482015291169150631f7a92b29060a401600060405180830381600087803b158015620005d557600080fd5b505af1158015620005ea573d6000803e3d6000fd5b5050506060820151602083015160408085015190517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015290821660248201529116915063485cc95590604401600060405180830381600087803b1580156200066257600080fd5b505af115801562000677573d6000803e3d6000fd5b5050506080820151602083015160405163189acdbd60e31b81526001600160a01b0391821660048201529116915063c4d66de890602401600060405180830381600087803b158015620006c957600080fd5b505af1158015620006de573d6000803e3d6000fd5b50505060a0820151602083015160405163189acdbd60e31b81526001600160a01b0391821660048201529116915063c4d66de890602401600060405180830381600087803b1580156200073057600080fd5b505af115801562000745573d6000803e3d6000fd5b50505050602081015160408201516060830151608084015160a090940151929c919b50995091975095509350505050565b6200078062000842565b6200078c6000620008b8565b565b6200079862000842565b6001600160a01b03811662000834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200083f81620008b8565b50565b6000546001600160a01b031633146200078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200082b565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ed38062000ac783390190565b80356001600160a01b03811681146200094657600080fd5b919050565b600080600080600060a086880312156200096457600080fd5b6200096f866200092e565b94506200097f602087016200092e565b93506200098f604087016200092e565b92506200099f606087016200092e565b9150620009af608087016200092e565b90509295509295909350565b600080600083850360c0811215620009d257600080fd5b620009dd856200092e565b9350620009ed602086016200092e565b925060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121562000a2057600080fd5b506040516080810181811067ffffffffffffffff8211171562000a6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525060408501358152606085013560208201526080850135604082015260a08501356060820152809150509250925092565b60006020828403121562000ab457600080fd5b62000abf826200092e565b939250505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122091a5b0afb29f9ebc9fef82203f2f1a6acf129a7b1c5fc7a4f1398258e5681f0964736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516119d961003760003960008181610b660152610f9401526119d96000f3fe60806040526004361061017f5760003560e01c80639e5d4c49116100d6578063d5719dc21161007f578063eca067ad11610059578063eca067ad14610457578063ee35f3271461046c578063f81ff3b31461048c57600080fd5b8063d5719dc214610417578063e76f5c8d14610437578063e77145f41461023457600080fd5b8063c4d66de8116100b0578063c4d66de8146103b7578063cb23bcb5146103d7578063cee3d728146103f757600080fd5b80639e5d4c4914610337578063ab5d894314610365578063ae60bd131461037a57600080fd5b80635fca4a16116101385780638db5993b116101125780638db5993b146102cc578063919cc706146102df578063945e1147146102ff57600080fd5b80635fca4a16146102565780637a88b1071461026c57806386598a561461028c57600080fd5b8063413b35bd11610169578063413b35bd146101c857806347fb24c5146102145780634f61f8501461023657600080fd5b806284120c1461018457806316bf5579146101a8575b600080fd5b34801561019057600080fd5b506007545b6040519081526020015b60405180910390f35b3480156101b457600080fd5b506101956101c33660046116da565b6104ac565b3480156101d457600080fd5b506102046101e336600461170b565b6001600160a01b031660009081526002602052604090206001015460ff1690565b604051901515815260200161019f565b34801561022057600080fd5b5061023461022f36600461172f565b6104cd565b005b34801561024257600080fd5b5061023461025136600461170b565b6107d3565b34801561026257600080fd5b50610195600a5481565b34801561027857600080fd5b5061019561028736600461176d565b6108fe565b34801561029857600080fd5b506102ac6102a7366004611799565b61095f565b60408051948552602085019390935291830152606082015260800161019f565b6101956102da3660046117cb565b610af8565b3480156102eb57600080fd5b506102346102fa36600461170b565b610b5c565b34801561030b57600080fd5b5061031f61031a3660046116da565b610ca1565b6040516001600160a01b03909116815260200161019f565b34801561034357600080fd5b50610357610352366004611812565b610ccb565b60405161019f92919061189b565b34801561037157600080fd5b5061031f610e78565b34801561038657600080fd5b5061020461039536600461170b565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103c357600080fd5b506102346103d236600461170b565b610ebb565b3480156103e357600080fd5b5060085461031f906001600160a01b031681565b34801561040357600080fd5b5061023461041236600461172f565b6110ab565b34801561042357600080fd5b506101956104323660046116da565b611419565b34801561044357600080fd5b5061031f6104523660046116da565b611429565b34801561046357600080fd5b50600654610195565b34801561047857600080fd5b5060095461031f906001600160a01b031681565b34801561049857600080fd5b506102346104a73660046116da565b611439565b600781815481106104bc57600080fd5b600091825260209091200154905081565b6008546001600160a01b0316331461059c5760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054d91906118f3565b9050336001600160a01b0382161461059a57600854604051630739600760e01b81523360048201526001600160a01b03918216602482015290821660448201526064015b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a2821515811515036106085750505050565b82156106a357604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191690911790556107cc565b600380546106b390600190611910565b815481106106c3576106c3611931565b6000918252602090912001548254600380546001600160a01b039093169290919081106106f2576106f2611931565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061074057610740611931565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600380548061077657610776611947565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6008546001600160a01b0316331461089d5760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906118f3565b9050336001600160a01b0382161461089b57600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b6009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9060200160405180910390a150565b6009546000906001600160a01b03163314610947576040517f88f84f04000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b610956600d8443424887611508565b90505b92915050565b6009546000908190819081906001600160a01b031633146109ae576040517f88f84f04000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b85600a54141580156109bf57508515155b80156109cc5750600a5415155b15610a1157600a546040517fe2051feb000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604401610591565b600a85905560075493508315610a4f5760078054610a3190600190611910565b81548110610a4157610a41611931565b906000526020600020015492505b8615610a80576006610a62600189611910565b81548110610a7257610a72611931565b906000526020600020015491505b60408051602081018590529081018990526060810183905260800160408051601f198184030181529190528051602090910120600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018190559398929750909550919350915050565b3360009081526001602081905260408220015460ff16610b46576040517fb6c60ea3000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b610b54848443424887611508565b949350505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bfa5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610591565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610c70576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610591565b50506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60048181548110610cb157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff16610d1c576040517f32ea82ab000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b8215801590610d3357506001600160a01b0386163b155b15610d75576040517fb5cf5b8f0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602401610591565b6005805473ffffffffffffffffffffffffffffffffffffffff19811633179091556040516001600160a01b03918216918816908790610db7908890889061195d565b60006040518083038185875af1925050503d8060008114610df4576040519150601f19603f3d011682016040523d82523d6000602084013e610df9565b606091505b506005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610e66908a908a908a9061196d565b60405180910390a35094509492505050565b6005546000906001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000018101610eb657600091505090565b919050565b600054610100900460ff1615808015610edb5750600054600160ff909116105b80610ef55750303b158015610ef5575060005460ff166001145b610f675760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610591565b6000805460ff191660011790558015610f8a576000805461ff0019166101001790555b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110285760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610591565b600580546001600160a01b0373ffffffffffffffffffffffffffffffffffffffff1991821681179092556008805490911691841691909117905580156107cf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6008546001600160a01b031633146111755760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b91906118f3565b9050336001600160a01b0382161461117357600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b7fffffffffffffffffffffffff00000000000000000000000000000000000000016001600160a01b038316016111e2576040517f77abed100000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610591565b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a28215158115150361124f5750505050565b82156112eb57604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff191690911790556107cc565b600480546112fb90600190611910565b8154811061130b5761130b611931565b6000918252602090912001548254600480546001600160a01b0390931692909190811061133a5761133a611931565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460026000600485600001548154811061138857611388611931565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560048054806113be576113be611947565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600681815481106104bc57600080fd5b60038181548110610cb157600080fd5b6008546001600160a01b031633146115035760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b991906118f3565b9050336001600160a01b0382161461150157600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b600a55565b600654604080517fff0000000000000000000000000000000000000000000000000000000000000060f88a901b166020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b1660218301527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a5909201909252805191012060009190600082156116055760066115e7600185611910565b815481106115f7576115f7611931565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156116ec57600080fd5b5035919050565b6001600160a01b038116811461170857600080fd5b50565b60006020828403121561171d57600080fd5b8135611728816116f3565b9392505050565b6000806040838503121561174257600080fd5b823561174d816116f3565b91506020830135801515811461176257600080fd5b809150509250929050565b6000806040838503121561178057600080fd5b823561178b816116f3565b946020939093013593505050565b600080600080608085870312156117af57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156117e057600080fd5b833560ff811681146117f157600080fd5b92506020840135611801816116f3565b929592945050506040919091013590565b6000806000806060858703121561182857600080fd5b8435611833816116f3565b935060208501359250604085013567ffffffffffffffff8082111561185757600080fd5b818701915087601f83011261186b57600080fd5b81358181111561187a57600080fd5b88602082850101111561188c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156118d1578581018301518582016060015282016118b5565b506000606082860101526060601f19601f830116850101925050509392505050565b60006020828403121561190557600080fd5b8151611728816116f3565b8181038181111561095957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220e17c4fa516aef1025bbd9042f6a81bce4320d01116e045245bb984afe41977fb64736f6c63430008110033610100604052306080524660c0526200002362000061602090811b62001c9717901c565b151560e0523480156200003557600080fd5b5060405162002ed038038062002ed08339810160408190526200005891620000fe565b60a05262000149565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000a1919062000118565b600060405180830381855afa9150503d8060008114620000de576040519150601f19603f3d011682016040523d82523d6000602084013e620000e3565b606091505b5091509150818015620000f7575080516020145b9250505090565b6000602082840312156200011157600080fd5b5051919050565b6000825160005b818110156200013b57602081860181015185830152016200011f565b506000920191825250919050565b60805160a05160c05160e051612d316200019f600039600081816114c0015261214e0152600061114901526000818161042a01528181611d930152611de801526000818161052901526108b80152612d316000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806384420860116100ee578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610412578063e8eb1dc314610425578063ebea461d1461044c578063f19815781461048257600080fd5b8063d9dd67ab14610394578063e0bc9729146103a7578063e5a358c8146103ba57600080fd5b8063b31761f8116100c8578063b31761f814610343578063cb23bcb514610356578063d1ce8da81461038157600080fd5b806384420860146103155780638f111f3c1461032857806396cc5c781461033b57600080fd5b80636ae71f121161015b5780636f12b0c9116101355780636f12b0c914610282578063715ea34b1461029557806371c3e6fe146102e95780637fa3a40e1461030c57600080fd5b80636ae71f12146102445780636d46e9871461024c5780636e7df3e71461026f57600080fd5b80631f9566321161018c5780631f95663214610216578063258f04951461022957806327957a491461023c57600080fd5b806306f13056146101b35780631637be48146101ce5780631f7a92b214610201575b600080fd5b6101bb610495565b6040519081526020015b60405180910390f35b6101f16101dc3660046125e9565b60009081526008602052604090205460ff1690565b60405190151581526020016101c5565b61021461020f36600461261a565b61051f565b005b610214610224366004612669565b610734565b6101bb6102373660046125e9565b610841565b6101bb602881565b6102146108ae565b6101f161025a3660046126a2565b60096020526000908152604090205460ff1681565b61021461027d366004612669565b610a51565b61021461029036600461270f565b610b5e565b6102c96102a33660046125e9565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101c5565b6101f16102f73660046126a2565b60036020526000908152604090205460ff1681565b6101bb60005481565b6102146103233660046125e9565b610d95565b61021461033636600461277a565b610eef565b610214611146565b6102146103513660046127f7565b6111d5565b600254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016101c5565b61021461038f36600461286b565b6112dc565b6101bb6103a23660046125e9565b611640565b6102146103b536600461277a565b6116cd565b6103e17f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101c5565b600154610369906001600160a01b031681565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104629392919084565b6040805194855260208501939093529183015260608201526080016101c5565b6102146104903660046128ad565b611834565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061291d565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610605576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610645576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612936565b6001600160a01b0316336001600160a01b0316146107f157600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff1691810182905290820361089a5760405162f20c5d60e01b8152600481018490526024016105b9565b6020015167ffffffffffffffff1692915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105b9565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146109a957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105b9565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac89190612936565b6001600160a01b0316336001600160a01b031614610b0e57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610b9d576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610bcd57604051632dd9fc9760e01b815260040160405180910390fd5b600080610bdb888888611d5d565b90925090506000808080610bf2868b8d8480611fa5565b93509350935093508c8414610c245760405163ac7411c960e01b815260048101859052602481018e90526044016105b9565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610c5f9493929190612953565b60405180910390a4505050506001600160a01b038416159150610d8c9050573660006020610c8e83601f6129de565b610c9891906129f1565b9050610200610ca8600283612af7565b610cb291906129f1565b610cbd826006612b06565b610cc791906129de565b610cd190846129de565b9250333214610cdf57600091505b836001600160a01b031663e3db8a49335a610cfa9087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d889190612b30565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c9190612936565b6001600160a01b0316336001600160a01b031614610e5257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b60008181526008602052604090205460ff16610e835760405162f20c5d60e01b8152600481018290526024016105b9565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214610f2e576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610f5e57604051632dd9fc9760e01b815260040160405180910390fd5b600080610f6c8a8a8a611d5d565b90925090508a81838b8b8a8a6000808080610f8a89888a8989611fa5565b93509350935093508a8414158015610fa457506000198b14155b15610fcc5760405163ac7411c960e01b815260048101859052602481018c90526044016105b9565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516110079493929190612953565b60405180910390a4505050506001600160a01b038b1615985061113b97505050505050505057366000602061103d83601f6129de565b61104791906129f1565b9050610200611057600283612af7565b61106191906129f1565b61106c826006612b06565b61107691906129de565b61108090846129de565b925033321461108e57600091505b836001600160a01b031663e3db8a49335a6110a99087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612b30565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361119f576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612936565b6001600160a01b0316336001600160a01b03161461129257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612936565b6001600160a01b0316336001600160a01b03161461139957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b600082826040516113ab929190612b4d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106114715760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105b9565b60008181526008602052604090205460ff16156114bd576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105b9565b437f00000000000000000000000000000000000000000000000000000000000000001561154a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611547919061291d565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906116059088908890612b5d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c7919061291d565b92915050565b8260005a3360009081526003602052604090205490915060ff161580156116ff57506002546001600160a01b03163314155b1561171d57604051632dd9fc9760e01b815260040160405180910390fd5b60008061172b8a8a8a611d5d565b909250905060008b82848b8a8a8680806117488787838888611fa5565b929c5090945092509050888a1480159061176457506000198914155b1561178c5760405163ac7411c960e01b8152600481018b9052602481018a90526044016105b9565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d60016040516117c79493929190612953565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c60405161180a929190612b5d565b60405180910390a25050506001600160a01b0382161561113b57366000602061103d83601f6129de565b600054861161186f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061195486846118836020890189612ba2565b61189360408a0160208b01612ba2565b61189e60018d612b1d565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b60045490915043906119696020880188612ba2565b67ffffffffffffffff1661197d91906129de565b106119b4576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065442906119c96040880160208901612ba2565b67ffffffffffffffff166119dd91906129de565b10611a14576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611a9d576001546001600160a01b031663d5719dc2611a3b60028b612b1d565b6040518263ffffffff1660e01b8152600401611a5991815260200190565b602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a919061291d565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611ae3908c612b1d565b6040518263ffffffff1660e01b8152600401611b0191815260200190565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061291d565b14611b79576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b858a6123fc565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061291d565b9050600080548d83611c1991906129de565b611c239190612b1d565b9050600080600080611c39898860008989611fa5565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611c7c9493929190612953565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611d039190612bf0565b600060405180830381855afa9150503d8060008114611d3e576040519150601f19603f3d011682016040523d82523d6000602084013e611d43565b606091505b5091509150818015611d56575080516020145b9250505090565b604080516080810182526000808252602082018190529181018290526060810182905284846000611d8f8260286129de565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611e14576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105b9565b8115801590611e8057507f4000000000000000000000000000000000000000000000000000000000000000808484600081611e5157611e51612b8c565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611eb7576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218210801590611f01575082826000818110611ed657611ed6612b8c565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b15611f55576000611f16602160018587612c0c565b611f1f91612c36565b60008181526008602052604090205490915060ff16611f535760405162f20c5d60e01b8152600481018290526024016105b9565b505b600080611f6188612441565b915091506000828b8b604051602001611f7c93929190612c54565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b600080600080600054881015611fe7576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061291d565b881115612097576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612c7c565b60008c90559296509094509250905086156123f0573360607f0000000000000000000000000000000000000000000000000000000000000000156122bc576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d7919061291d565b905060006121e548836129f1565b905067ffffffffffffffff81111561223f5760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105b9565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc9092019052915061230a9050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b1079161236f9187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b2919061291d565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516123e49190612cb2565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905260008061242b85612441565b8151602090920191909120969095509350505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161246e612519565b905060008160000151826020015183604001518460600151886040516020016124ee95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b6040516020818303038152906040529050602881511461251057612510612ce5565b94909350915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600654421115612585576006546125789042612b1d565b67ffffffffffffffff1681525b60075461259290426129de565b67ffffffffffffffff1660208201526004544311156125c8576004546125b89043612b1d565b67ffffffffffffffff1660408201525b6005546125d590436129de565b67ffffffffffffffff166060820152919050565b6000602082840312156125fb57600080fd5b5035919050565b6001600160a01b038116811461261757600080fd5b50565b60008082840360a081121561262e57600080fd5b833561263981612602565b92506080601f198201121561264d57600080fd5b506020830190509250929050565b801515811461261757600080fd5b6000806040838503121561267c57600080fd5b823561268781612602565b915060208301356126978161265b565b809150509250929050565b6000602082840312156126b457600080fd5b81356126bf81612602565b9392505050565b60008083601f8401126126d857600080fd5b50813567ffffffffffffffff8111156126f057600080fd5b60208301915083602082850101111561270857600080fd5b9250929050565b60008060008060006080868803121561272757600080fd5b85359450602086013567ffffffffffffffff81111561274557600080fd5b612751888289016126c6565b90955093505060408601359150606086013561276c81612602565b809150509295509295909350565b600080600080600080600060c0888a03121561279557600080fd5b87359650602088013567ffffffffffffffff8111156127b357600080fd5b6127bf8a828b016126c6565b9097509550506040880135935060608801356127da81612602565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561280957600080fd5b6040516080810181811067ffffffffffffffff8211171561283a57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561287e57600080fd5b823567ffffffffffffffff81111561289557600080fd5b6128a1858286016126c6565b90969095509350505050565b60008060008060008060e087890312156128c657600080fd5b86359550602087013560ff811681146128de57600080fd5b945060808701888111156128f157600080fd5b60408801945035925060a087013561290881612602565b8092505060c087013590509295509295509295565b60006020828403121561292f57600080fd5b5051919050565b60006020828403121561294857600080fd5b81516126bf81612602565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a084015250600383106129b957634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156116c7576116c76129c8565b600082612a0e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a4e578160001904821115612a3457612a346129c8565b80851615612a4157918102915b93841c9390800290612a18565b509250929050565b600082612a65575060016116c7565b81612a72575060006116c7565b8160018114612a885760028114612a9257612aae565b60019150506116c7565b60ff841115612aa357612aa36129c8565b50506001821b6116c7565b5060208310610133831016604e8410600b8410161715612ad1575081810a6116c7565b612adb8383612a13565b8060001904821115612aef57612aef6129c8565b029392505050565b60006126bf60ff841683612a56565b80820281158282048414176116c7576116c76129c8565b818103818111156116c7576116c76129c8565b600060208284031215612b4257600080fd5b81516126bf8161265b565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612bb457600080fd5b813567ffffffffffffffff811681146126bf57600080fd5b60005b83811015612be7578181015183820152602001612bcf565b50506000910152565b60008251612c02818460208701612bcc565b9190910192915050565b60008085851115612c1c57600080fd5b83861115612c2957600080fd5b5050820193919092039150565b803560208310156116c757600019602084900360031b1b1692915050565b60008451612c66818460208901612bcc565b8201838582376000930192835250909392505050565b60008060008060808587031215612c9257600080fd5b505082516020840151604085015160609095015191969095509092509050565b6020815260008251806020840152612cd1816040850160208701612bcc565b601f01601f19169190910160400192915050565b634e487b7160e01b600052600160045260246000fdfea26469706673582212206c56fdb76e8fb6df58f354202f7652324eed2c8511af5d2284dcbcefa439446164736f6c6343000811003360e0604052306080524660c05234801561001857600080fd5b5060405162002a9938038062002a9983398101604081905261003991610041565b60a05261005a565b60006020828403121561005357600080fd5b5051919050565b60805160a05160c0516129d0620000c96000396000818161053c01528181610753015281816111f50152818161158f0152611a1601526000818161047f015281816107cb0152818161082001528181611d380152611d91015260008181610b83015261163101526129d06000f3fe6080604052600436106101ab5760003560e01c80636e6e8a6a116100ec578063c474d2c51161008a578063e78cea9211610064578063e78cea9214610435578063e8eb1dc31461046d578063ee35f327146104a1578063efeadb6d146104c157600080fd5b8063c474d2c5146103e2578063e3de72a514610402578063e6bd12cf1461042257600080fd5b80638a631aa6116100c65780638a631aa614610352578063a66b327d14610372578063b75436bb14610392578063babcc539146103b257600080fd5b80636e6e8a6a1461030a57806370665f141461031d5780638456cb591461033d57600080fd5b8063439370b1116101595780635c975abb116101335780635c975abb146102b95780635e916758146102d1578063679b6ded146102e457806367ef3ab8146102f757600080fd5b8063439370b114610271578063485cc955146102795780635075788b1461029957600080fd5b80631fe927cf1161018a5780631fe927cf1461020957806322bd5c1c146102295780633f4ba83a1461025a57600080fd5b8062f72382146101b05780630f4d14e9146101e35780631b871c8d146101f6575b600080fd5b3480156101bc57600080fd5b506101d06101cb366004612126565b6104e1565b6040519081526020015b60405180910390f35b6101d06101f13660046121a3565b610628565b6101d06102043660046121bc565b61068b565b34801561021557600080fd5b506101d0610224366004612261565b6106fd565b34801561023557600080fd5b5060665461024a90600160a01b900460ff1681565b60405190151581526020016101da565b34801561026657600080fd5b5061026f6108a8565b005b6101d06109dd565b34801561028557600080fd5b5061026f6102943660046122a3565b610aaa565b3480156102a557600080fd5b506101d06102b4366004612126565b610cd3565b3480156102c557600080fd5b5060335460ff1661024a565b6101d06102df3660046122dc565b610d7e565b6101d06102f23660046121bc565b610e31565b6101d0610305366004612346565b610f67565b6101d06103183660046121bc565b61101d565b34801561032957600080fd5b506101d06103383660046123b9565b61119f565b34801561034957600080fd5b5061026f611326565b34801561035e57600080fd5b506101d061036d366004612406565b611458565b34801561037e57600080fd5b506101d061038d36600461245b565b611501565b34801561039e57600080fd5b506101d06103ad366004612261565b611539565b3480156103be57600080fd5b5061024a6103cd36600461247d565b60676020526000908152604090205460ff1681565b3480156103ee57600080fd5b5061026f6103fd36600461247d565b611627565b34801561040e57600080fd5b5061026f61041d366004612587565b61173b565b6101d0610430366004612346565b6119c0565b34801561044157600080fd5b50606554610455906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b34801561047957600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ad57600080fd5b50606654610455906001600160a01b031681565b3480156104cd57600080fd5b5061026f6104dc366004612649565b611ae2565b60006104eb611cdf565b606654600160a01b900460ff16801561051457503260009081526067602052604090205460ff16155b1561053957604051630f51ed7160e41b81523260048201526024015b60405180910390fd5b467f00000000000000000000000000000000000000000000000000000000000000000361057957604051635180dd8360e11b815260040160405180910390fd5b3332146105995760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff8811156105c25760405163107c527b60e01b815260040160405180910390fd5b61061c600373111100000000000000000000000000000000111019330160008b8b8b8b6001600160a01b03168b8b8b604051602001610608989796959493929190612664565b604051602081830303815290604052611d34565b98975050505050505050565b6000610632611cdf565b606654600160a01b900460ff16801561065b57503260009081526067602052604090205460ff16155b1561067b57604051630f51ed7160e41b8152326004820152602401610530565b6106836109dd565b90505b919050565b6000610695611cdf565b606654600160a01b900460ff1680156106be57503260009081526067602052604090205460ff16155b156106de57604051630f51ed7160e41b8152326004820152602401610530565b6106ef8a8a8a8a8a8a8a8a8a61101d565b9a9950505050505050505050565b6000610707611cdf565b606654600160a01b900460ff16801561073057503260009081526067602052604090205460ff16155b1561075057604051630f51ed7160e41b8152326004820152602401610530565b467f0000000000000000000000000000000000000000000000000000000000000000146107a9576040517fc6ea680300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3332146107c95760405163feb3d07160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000082111561084c576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610530565b600061087160033386866040516108649291906126c6565b6040518091039020611e13565b60405190915081907fab532385be8f1005a4b6ba8fa20a2245facb346134ac739fe9a5198dc1580b9c90600090a290505b92915050565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa1580156108f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091691906126d6565b9050336001600160a01b038216146109d2576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098c91906126d6565b9050336001600160a01b038216146109d057604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b6109da611ed9565b50565b60006109e7611cdf565b606654600160a01b900460ff168015610a1057503260009081526067602052604090205460ff16155b15610a3057604051630f51ed7160e41b8152326004820152602401610530565b33803b151580610a405750323314155b15610a5e575033731111000000000000000000000000000000001111015b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152346034820152610aa490600c903390605401610608565b91505090565b600054610100900460ff1615808015610aca5750600054600160ff909116105b80610ae45750303b158015610ae4575060005460ff166001145b610b565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610530565b6000805460ff191660011790558015610b79576000805461ff0019166101001790555b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610530565b606580546001600160a01b038086167fffffffffffffffffffffffff000000000000000000000000000000000000000090921691909117909155606680547fffffffffffffffffffffff00000000000000000000000000000000000000000016918416919091179055610c88611f2b565b8015610cce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610cdd611cdf565b606654600160a01b900460ff168015610d0657503260009081526067602052604090205460ff16155b15610d2657604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff881115610d4f5760405163107c527b60e01b815260040160405180910390fd5b61061c60033360008b8b8b8b6001600160a01b03168b8b8b604051602001610608989796959493929190612664565b6000610d88611cdf565b606654600160a01b900460ff168015610db157503260009081526067602052604090205460ff16155b15610dd157604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff861115610dfa5760405163107c527b60e01b815260040160405180910390fd5b610e2760073360018989896001600160a01b0316348a8a60405160200161060897969594939291906126f3565b9695505050505050565b6000610e3b611cdf565b606654600160a01b900460ff168015610e6457503260009081526067602052604090205460ff16155b15610e8457604051630f51ed7160e41b8152326004820152602401610530565b610e8e8486612764565b610e988a8a61277b565b610ea2919061277b565b341015610f0357610eb38486612764565b610ebd8a8a61277b565b610ec7919061277b565b6040517f7040b58c0000000000000000000000000000000000000000000000000000000081526004810191909152346024820152604401610530565b6001600160a01b0387163b15610f2d57731111000000000000000000000000000000001111870196505b6001600160a01b0386163b156106de57731111000000000000000000000000000000001111860195506106ef8a8a8a8a8a8a8a8a8a61101d565b6000610f71611cdf565b606654600160a01b900460ff168015610f9a57503260009081526067602052604090205460ff16155b15610fba57604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff871115610fe35760405163107c527b60e01b815260040160405180910390fd5b61101260073360008a8a8a8a6001600160a01b0316348b8b604051602001610608989796959493929190612664565b979650505050505050565b6000611027611cdf565b606654600160a01b900460ff16801561105057503260009081526067602052604090205460ff16155b1561107057604051630f51ed7160e41b8152326004820152602401610530565b846001148061107f5750836001145b156110cc57338a8a348b8b8b8b8b8b8b6040517f07c266e30000000000000000000000000000000000000000000000000000000081526004016105309b9a9998979695949392919061278e565b67ffffffffffffffff8511156110f55760405163107c527b60e01b815260040160405180910390fd5b60006111018348611501565b905080891015611147576040517ffadf238a00000000000000000000000000000000000000000000000000000000815260048101829052602481018a9052604401610530565b6111906009338d6001600160a01b03168d348e8e6001600160a01b03168e6001600160a01b03168e8e8e8e90508f8f6040516020016106089b9a99989796959493929190612814565b9b9a5050505050505050505050565b60006111a9611cdf565b606654600160a01b900460ff1680156111d257503260009081526067602052604090205460ff16155b156111f257604051630f51ed7160e41b8152326004820152602401610530565b467f00000000000000000000000000000000000000000000000000000000000000000361123257604051635180dd8360e11b815260040160405180910390fd5b3332146112525760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff86111561127b5760405163107c527b60e01b815260040160405180910390fd5b604080516001600160a01b0384166024808301919091528251808303909101815260449091018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f25e16063000000000000000000000000000000000000000000000000000000001790529151610e279260039233731111000000000000000000000000000000001110190192610608926000928d928d928d926064928e9201612892565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139491906126d6565b9050336001600160a01b03821614611450576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140a91906126d6565b9050336001600160a01b0382161461144e57604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b6109da611fb0565b6000611462611cdf565b606654600160a01b900460ff16801561148b57503260009081526067602052604090205460ff16155b156114ab57604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff8711156114d45760405163107c527b60e01b815260040160405180910390fd5b61101260033360018a8a8a6001600160a01b03168a8a8a60405160200161060897969594939291906126f3565b6000811561150f5781611511565b485b61151c846006612764565b6115289061057861277b565b6115329190612764565b9392505050565b6000611543611cdf565b606654600160a01b900460ff16801561156c57503260009081526067602052604090205460ff16155b1561158c57604051630f51ed7160e41b8152326004820152602401610530565b467f0000000000000000000000000000000000000000000000000000000000000000146115e5576040517fc6ea680300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153260033385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3492505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116c55760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610530565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610cce576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610530565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a991906126d6565b9050336001600160a01b03821614611865576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f91906126d6565b9050336001600160a01b0382161461186357604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b81518351146118b65760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e505554000000000000000000000000000000000000006044820152606401610530565b60005b83518110156119ba578281815181106118d4576118d4612900565b6020026020010151606760008684815181106118f2576118f2612900565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555083818151811061194357611943612900565b60200260200101516001600160a01b03167fd9739f45a01ce092c5cdb3d68f63d63d21676b1c6c0b4f9cbc6be4cf5449595a84838151811061198757611987612900565b60200260200101516040516119a0911515815260200190565b60405180910390a2806119b281612916565b9150506118b9565b50505050565b60006119ca611cdf565b606654600160a01b900460ff1680156119f357503260009081526067602052604090205460ff16155b15611a1357604051630f51ed7160e41b8152326004820152602401610530565b467f000000000000000000000000000000000000000000000000000000000000000003611a5357604051635180dd8360e11b815260040160405180910390fd5b333214611a735760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff871115611a9c5760405163107c527b60e01b815260040160405180910390fd5b611012600773111100000000000000000000000000000000111019330160008a8a8a8a6001600160a01b0316348b8b604051602001610608989796959493929190612664565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906126d6565b9050336001600160a01b03821614611c0c576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906126d6565b9050336001600160a01b03821614611c0a57604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b606654600160a01b900460ff16151582151503611c6b5760405162461bcd60e51b815260206004820152600b60248201527f414c52454144595f5345540000000000000000000000000000000000000000006044820152606401610530565b60668054831515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb390611cd390841515815260200190565b60405180910390a15050565b60335460ff1615611d325760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610530565b565b60007f000000000000000000000000000000000000000000000000000000000000000082511115611dbd5781516040517f4634691b00000000000000000000000000000000000000000000000000000000815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610530565b6000611dd185858580519060200120611e13565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b84604051611e03919061294e565b60405180910390a2949350505050565b6065546000906001600160a01b0316638db5993b348673111100000000000000000000000000000000111187016040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260ff90921660048301526001600160a01b031660248201526044810186905260640160206040518083038185885af1158015611eac573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ed19190612981565b949350505050565b611ee1611fed565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16611fa85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610530565b611d3261203f565b611fb8611cdf565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f0e3390565b60335460ff16611d325760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610530565b600054610100900460ff166120bc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610530565b6033805460ff19169055565b6001600160a01b03811681146109da57600080fd5b60008083601f8401126120ef57600080fd5b50813567ffffffffffffffff81111561210757600080fd5b60208301915083602082850101111561211f57600080fd5b9250929050565b600080600080600080600060c0888a03121561214157600080fd5b8735965060208801359550604088013594506060880135612161816120c8565b93506080880135925060a088013567ffffffffffffffff81111561218457600080fd5b6121908a828b016120dd565b989b979a50959850939692959293505050565b6000602082840312156121b557600080fd5b5035919050565b60008060008060008060008060006101008a8c0312156121db57600080fd5b89356121e6816120c8565b985060208a0135975060408a0135965060608a0135612204816120c8565b955060808a0135612214816120c8565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561223e57600080fd5b61224a8c828d016120dd565b915080935050809150509295985092959850929598565b6000806020838503121561227457600080fd5b823567ffffffffffffffff81111561228b57600080fd5b612297858286016120dd565b90969095509350505050565b600080604083850312156122b657600080fd5b82356122c1816120c8565b915060208301356122d1816120c8565b809150509250929050565b6000806000806000608086880312156122f457600080fd5b8535945060208601359350604086013561230d816120c8565b9250606086013567ffffffffffffffff81111561232957600080fd5b612335888289016120dd565b969995985093965092949392505050565b60008060008060008060a0878903121561235f57600080fd5b863595506020870135945060408701359350606087013561237f816120c8565b9250608087013567ffffffffffffffff81111561239b57600080fd5b6123a789828a016120dd565b979a9699509497509295939492505050565b600080600080600060a086880312156123d157600080fd5b8535945060208601359350604086013592506060860135915060808601356123f8816120c8565b809150509295509295909350565b60008060008060008060a0878903121561241f57600080fd5b86359550602087013594506040870135612438816120c8565b935060608701359250608087013567ffffffffffffffff81111561239b57600080fd5b6000806040838503121561246e57600080fd5b50508035926020909101359150565b60006020828403121561248f57600080fd5b8135611532816120c8565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124d9576124d961249a565b604052919050565b600067ffffffffffffffff8211156124fb576124fb61249a565b5060051b60200190565b8035801515811461068657600080fd5b600082601f83011261252657600080fd5b8135602061253b612536836124e1565b6124b0565b82815260059290921b8401810191818101908684111561255a57600080fd5b8286015b8481101561257c5761256f81612505565b835291830191830161255e565b509695505050505050565b6000806040838503121561259a57600080fd5b823567ffffffffffffffff808211156125b257600080fd5b818501915085601f8301126125c657600080fd5b813560206125d6612536836124e1565b82815260059290921b840181019181810190898411156125f557600080fd5b948201945b8386101561261c57853561260d816120c8565b825294820194908201906125fa565b9650508601359250508082111561263257600080fd5b5061263f85828601612515565b9150509250929050565b60006020828403121561265b57600080fd5b61153282612505565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b168152876001820152866021820152856041820152846061820152836081820152818360a18301376000910160a101908152979650505050505050565b8183823760009101908152919050565b6000602082840312156126e857600080fd5b8151611532816120c8565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815286600182015285602182015284604182015283606182015281836081830137600091016081019081529695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108a2576108a261274e565b808201808211156108a2576108a261274e565b60006101406001600160a01b03808f168452808e1660208501528c60408501528b60608501528a6080850152808a1660a085015280891660c0850152508660e084015285610100840152806101208401528381840152506101608385828501376000838501820152601f909301601f19169091019091019b9a5050505050505050505050565b8b81528a60208201528960408201528860608201528760808201528660a08201528560c08201528460e08201528361010082015260006101208385828501376000929093019092019081529b9a5050505050505050505050565b60005b83811015612889578181015183820152602001612871565b50506000910152565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b168152866001820152856021820152846041820152836061820152826081820152600082516128ed8160a185016020870161286e565b9190910160a10198975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129475761294761274e565b5060010190565b602081526000825180602084015261296d81604085016020870161286e565b601f01601f19169190910160400192915050565b60006020828403121561299357600080fd5b505191905056fea26469706673582212203fb619d192ddab43b02aa2709fd9cdd03156c9d91b417c53e00eb2ad7f1eb9a264736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516109ae6100366000396000818160e801526102a701526109ae6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063cb23bcb511610050578063cb23bcb514610089578063cf8d56d6146100b8578063e78cea92146100cb57600080fd5b80636ae71f121461006c578063c4d66de814610076575b600080fd5b6100746100de565b005b6100746100843660046107a2565b61029d565b60015461009c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100746100c63660046107c6565b610491565b60005461009c906001600160a01b031681565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101815760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146101f7576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610178565b60008054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026c9190610842565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361033b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610178565b6000546001600160a01b03161561037e576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166103be576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa15801561043d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104619190610842565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6001546001600160a01b031633146104eb5760405162461bcd60e51b815260206004820152600b60248201527f4f4e4c595f524f4c4c55500000000000000000000000000000000000000000006044820152606401610178565b806105385760405162461bcd60e51b815260206004820152601260248201527f454d5054595f434841494e5f434f4e46494700000000000000000000000000006044820152606401610178565b6001486105436106c4565b156105b857606c6001600160a01b031663f5d6ded76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab919061085f565b6105b59082610878565b90505b600085838387876040516020016105d39594939291906108b8565b60408051808303601f190181529082905260008054825160208401207f8db5993b000000000000000000000000000000000000000000000000000000008552600b6004860152602485018390526044850152919350916001600160a01b0390911690638db5993b906064016020604051808303816000875af115801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061085f565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516106b39190610929565b60405180910390a250505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491610730919061095c565b600060405180830381855afa9150503d806000811461076b576040519150601f19603f3d011682016040523d82523d6000602084013e610770565b606091505b5091509150818015610783575080516020145b9250505090565b6001600160a01b038116811461079f57600080fd5b50565b6000602082840312156107b457600080fd5b81356107bf8161078a565b9392505050565b6000806000604084860312156107db57600080fd5b83359250602084013567ffffffffffffffff808211156107fa57600080fd5b818601915086601f83011261080e57600080fd5b81358181111561081d57600080fd5b87602082850101111561082f57600080fd5b6020830194508093505050509250925092565b60006020828403121561085457600080fd5b81516107bf8161078a565b60006020828403121561087157600080fd5b5051919050565b808201808211156108b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8581527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660208201528360218201528183604183013760009101604101908152949350505050565b60005b83811015610920578181015183820152602001610908565b50506000910152565b6020815260008251806020840152610948816040850160208701610905565b601f01601f19169190910160400192915050565b6000825161096e818460208701610905565b919091019291505056fea26469706673582212206dac08f48f4d7695476a9905fc98e80e1d29104caa21b58fff1336d7b803524c64736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516117cd6100376000396000818161043c01526107bf01526117cd6000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c80638515bc6a116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb51461028e578063d5b5cc23146102a1578063e78cea92146102c157600080fd5b8063c4d66de81461025b578063c75184df1461026e57600080fd5b8063a04cee60116100b2578063a04cee6014610220578063ae6dead714610233578063b0f305371461025357600080fd5b80638515bc6a146102055780639f0c04bf1461020d57600080fd5b806346547790116101245780636ae71f12116101095780636ae71f12146101d557806372f2a8c7146101dd57806380648b02146101e557600080fd5b806346547790146101aa5780635a129efe146101b257600080fd5b80627436d31461015557806308635a951461017b5780631198527114610190578063288e5b1014610197575b600080fd5b6101686101633660046110f6565b6102d4565b6040519081526020015b60405180910390f35b61018e610189366004611218565b610311565b005b6000610168565b61018e6101a536600461130d565b610384565b6101686103d8565b6101c56101c03660046113a9565b610415565b6040519015158152602001610172565b61018e610432565b61016861060d565b6101ed610628565b6040516001600160a01b039091168152602001610172565b610168610666565b61016861021b3660046113c2565b6106a9565b61018e61022e366004611451565b6106ee565b6101686102413660046113a9565b60036020526000908152604090205481565b610168610786565b61018e610269366004611473565b6107b5565b610276600281565b6040516001600160801b039091168152602001610172565b6000546101ed906001600160a01b031681565b6101686102af3660046113a9565b60026020526000908152604090205481565b6001546101ed906001600160a01b031681565b60006103098484846040516020016102ee91815260200190565b60405160208183030381529060405280519060200120610a34565b949350505050565b600061032389898989898989896106a9565b90506103658c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e9250859150610aef9050565b6103768a8a8a8a8a8a8a8a8a610c5c565b505050505050505050505050565b33156103bc576040517f0e13b69d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103cd898989898989898989610c5c565b505050505050505050565b6004546000906001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b6001600160801b0316919050565b600080600061042384610f78565b92509250506103098282610fb5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610565576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03821660248201526044016104e6565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190611497565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b6006546000906001810161062357506000919050565b919050565b6007546000906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000001810161062357600091505090565b60045460009070010000000000000000000000000000000090046001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b600088888888888888886040516020016106ca9897969594939291906114b4565b60405160208183030381529060405280519060200120905098975050505050505050565b6000546001600160a01b03163314610747576000546040517f3933c6fc0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911660248201526044016104e6565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6005546000906001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016104e6565b6001600160a01b0381166108ad576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546001600160a01b0316156108f0576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182526001600160801b038082526020808301829052828401829052600019606084018190526001600160a01b0360809094018490526004818155600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169094179093556006556007805473ffffffffffffffffffffffffffffffffffffffff19908116851790915560018054948716949091168417905583517fcb23bcb50000000000000000000000000000000000000000000000000000000081529351929363cb23bcb5938184019390918290030181865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190611497565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b8251600090610100811115610a80576040517ffdac331e0000000000000000000000000000000000000000000000000000000081526004810182905261010060248201526044016104e6565b8260005b82811015610ae5576000878281518110610aa057610aa0611520565b60200260200101519050816001901b8716600003610acc57826000528060205260406000209250610adc565b8060005282602052604060002092505b50600101610a84565b5095945050505050565b610100835110610b305782516040517fab6a06830000000000000000000000000000000000000000000000000000000081526004016104e691815260200190565b8251610b3d906002611630565b8210610b8d578183516002610b529190611630565b6040517f0b8a724b000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016104e6565b6000610b9a8484846102d4565b600081815260036020526040902054909150610be5576040517f8730d7c8000000000000000000000000000000000000000000000000000000008152600481018290526024016104e6565b6000806000610bf386610f78565b925092509250610c038282610fb5565b15610c3d576040517f9715b8d3000000000000000000000000000000000000000000000000000000008152600481018790526024016104e6565b600092835260026020526040909220600190911b909117905550505050565b6000886001600160a01b0316886001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648c604051610ca391815260200190565b60405180910390a4600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280886001600160801b03168152602001876001600160801b03168152602001866001600160801b031681526020018b60001b81526020018a6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610ed4888585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fc492505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050565b6000808080610f8860ff86611652565b90506000610f9760ff87611666565b60008381526002602052604090205492979096509194509092505050565b80821c60011615155b92915050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c49906110169088908890889060040161169e565b6000604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261105d91908101906116e8565b91509150816110a8578051156110765780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156110ee576110ee6110af565b604052919050565b60008060006060848603121561110b57600080fd5b833567ffffffffffffffff8082111561112357600080fd5b818601915086601f83011261113757600080fd5b813560208282111561114b5761114b6110af565b8160051b925061115c8184016110c5565b828152928401810192818101908a85111561117657600080fd5b948201945b848610156111945785358252948201949082019061117b565b9a918901359950506040909701359695505050505050565b6001600160a01b03811681146111c157600080fd5b50565b8035610623816111ac565b60008083601f8401126111e157600080fd5b50813567ffffffffffffffff8111156111f957600080fd5b60208301915083602082850101111561121157600080fd5b9250929050565b60008060008060008060008060008060006101208c8e03121561123a57600080fd5b8b3567ffffffffffffffff8082111561125257600080fd5b818e0191508e601f83011261126657600080fd5b81358181111561127557600080fd5b8f60208260051b850101111561128a57600080fd5b60208381019e50909c508e01359a506112a560408f016111c4565b99506112b360608f016111c4565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e01359150808211156112e657600080fd5b506112f38e828f016111cf565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561132c57600080fd5b8935985060208a013561133e816111ac565b975060408a013561134e816111ac565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561138657600080fd5b6113928c828d016111cf565b915080935050809150509295985092959850929598565b6000602082840312156113bb57600080fd5b5035919050565b60008060008060008060008060e0898b0312156113de57600080fd5b88356113e9816111ac565b975060208901356113f9816111ac565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561143157600080fd5b61143d8b828c016111cf565b999c989b5096995094979396929594505050565b6000806040838503121561146457600080fd5b50508035926020909101359150565b60006020828403121561148557600080fd5b8135611490816111ac565b9392505050565b6000602082840312156114a957600080fd5b8151611490816111ac565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561158757816000190482111561156d5761156d611536565b8085161561157a57918102915b93841c9390800290611551565b509250929050565b60008261159e57506001610fbe565b816115ab57506000610fbe565b81600181146115c157600281146115cb576115e7565b6001915050610fbe565b60ff8411156115dc576115dc611536565b50506001821b610fbe565b5060208310610133831016604e8410600b841016171561160a575081810a610fbe565b611614838361154c565b806000190482111561162857611628611536565b029392505050565b6000611490838361158f565b634e487b7160e01b600052601260045260246000fd5b6000826116615761166161163c565b500490565b6000826116755761167561163c565b500690565b60005b8381101561169557818101518382015260200161167d565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526116d281608085016020870161167a565b601f01601f191691909101608001949350505050565b600080604083850312156116fb57600080fd5b8251801515811461170b57600080fd5b602084015190925067ffffffffffffffff8082111561172957600080fd5b818501915085601f83011261173d57600080fd5b81518181111561174f5761174f6110af565b6117626020601f19601f840116016110c5565b915080825286602082850101111561177957600080fd5b61178a81602084016020860161167a565b508092505050925092905056fea2646970667358221220f97735c6ce65cfe41023d1626f05c807e67ba1b01a8fd4a0ace2ebdb6cc1e2fd64736f6c63430008110033", + Bin: "0x60806040523480156200001157600080fd5b506040516200b1c23803806200b1c2833981016040819052620000349162000268565b6200003f33620001d2565b6040516200004d9062000222565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905560405181906200009b9062000230565b908152602001604051809103906000f080158015620000be573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556040518190620000ef906200023e565b908152602001604051809103906000f08015801562000112573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b039290921691909117905560405162000141906200024c565b604051809103906000f0801580156200015e573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03929092169190911790556040516200018d906200025a565b604051809103906000f080158015620001aa573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790555062000282565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611a108062001c6183390190565b612ed0806200367183390190565b612a99806200654183390190565b6109e48062008fda83390190565b61180480620099be83390190565b6000602082840312156200027b57600080fd5b5051919050565b6119cf80620002926000396000f3fe60806040523480156200001157600080fd5b5060043610620000cd5760003560e01c806395fd089f116200007f578063e6027a871162000062578063e6027a8714620001b2578063f2fde38b14620001c6578063fc6a2ed014620001dd57600080fd5b806395fd089f146200018a578063ae583c03146200019e57600080fd5b8063715018a611620000b4578063715018a614620001415780637ba0e857146200014b5780638da5cb5b146200017857600080fd5b80632147e58e14620000d25780636c6e47c014620000eb575b600080fd5b620000e9620000e33660046200094b565b620001f1565b005b62000102620000fc366004620009bb565b62000299565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0015b60405180910390f35b620000e962000776565b6003546200015f906001600160a01b031681565b6040516001600160a01b03909116815260200162000138565b6000546001600160a01b03166200015f565b6001546200015f906001600160a01b031681565b6004546200015f906001600160a01b031681565b6002546200015f906001600160a01b031681565b620000e9620001d736600462000aa1565b6200078e565b6005546200015f906001600160a01b031681565b620001fb62000842565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0388811691909117909255600280548216878416179055600380548216868416179055600480548216858416179055600580549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a15050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905281908190819081906001546040516001600160a01b03909116908a90620002f19062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000334573d6000803e3d6000fd5b506001600160a01b0390811660208301526002546040519116908a906200035b9062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200039e573d6000803e3d6000fd5b506001600160a01b0390811660408084019190915260035490519116908a90620003c89062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200040b573d6000803e3d6000fd5b506001600160a01b0390811660608301526004546040519116908a90620004329062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000475573d6000803e3d6000fd5b506001600160a01b0390811660808301526005546040519116908a906200049c9062000920565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620004df573d6000803e3d6000fd5b506001600160a01b0390811660a0830152602082015160405163189acdbd60e31b81528a8316600482015291169063c4d66de890602401600060405180830381600087803b1580156200053157600080fd5b505af115801562000546573d6000803e3d6000fd5b50505060408083015160208085015183517f1f7a92b20000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201528c516024820152918c01516044830152928b0151606482015260608b0151608482015291169150631f7a92b29060a401600060405180830381600087803b158015620005d557600080fd5b505af1158015620005ea573d6000803e3d6000fd5b5050506060820151602083015160408085015190517f485cc9550000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015290821660248201529116915063485cc95590604401600060405180830381600087803b1580156200066257600080fd5b505af115801562000677573d6000803e3d6000fd5b5050506080820151602083015160405163189acdbd60e31b81526001600160a01b0391821660048201529116915063c4d66de890602401600060405180830381600087803b158015620006c957600080fd5b505af1158015620006de573d6000803e3d6000fd5b50505060a0820151602083015160405163189acdbd60e31b81526001600160a01b0391821660048201529116915063c4d66de890602401600060405180830381600087803b1580156200073057600080fd5b505af115801562000745573d6000803e3d6000fd5b50505050602081015160408201516060830151608084015160a090940151929c919b50995091975095509350505050565b6200078062000842565b6200078c6000620008b8565b565b6200079862000842565b6001600160a01b03811662000834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200083f81620008b8565b50565b6000546001600160a01b031633146200078c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200082b565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ed38062000ac783390190565b80356001600160a01b03811681146200094657600080fd5b919050565b600080600080600060a086880312156200096457600080fd5b6200096f866200092e565b94506200097f602087016200092e565b93506200098f604087016200092e565b92506200099f606087016200092e565b9150620009af608087016200092e565b90509295509295909350565b600080600083850360c0811215620009d257600080fd5b620009dd856200092e565b9350620009ed602086016200092e565b925060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121562000a2057600080fd5b506040516080810181811067ffffffffffffffff8211171562000a6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525060408501358152606085013560208201526080850135604082015260a08501356060820152809150509250925092565b60006020828403121562000ab457600080fd5b62000abf826200092e565b939250505056fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f9421e71491bfac4a1e42206bbc750e74f8a013190efd74053b4c56cd972536a64736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516119d961003760003960008181610b660152610f9401526119d96000f3fe60806040526004361061017f5760003560e01c80639e5d4c49116100d6578063d5719dc21161007f578063eca067ad11610059578063eca067ad14610457578063ee35f3271461046c578063f81ff3b31461048c57600080fd5b8063d5719dc214610417578063e76f5c8d14610437578063e77145f41461023457600080fd5b8063c4d66de8116100b0578063c4d66de8146103b7578063cb23bcb5146103d7578063cee3d728146103f757600080fd5b80639e5d4c4914610337578063ab5d894314610365578063ae60bd131461037a57600080fd5b80635fca4a16116101385780638db5993b116101125780638db5993b146102cc578063919cc706146102df578063945e1147146102ff57600080fd5b80635fca4a16146102565780637a88b1071461026c57806386598a561461028c57600080fd5b8063413b35bd11610169578063413b35bd146101c857806347fb24c5146102145780634f61f8501461023657600080fd5b806284120c1461018457806316bf5579146101a8575b600080fd5b34801561019057600080fd5b506007545b6040519081526020015b60405180910390f35b3480156101b457600080fd5b506101956101c33660046116da565b6104ac565b3480156101d457600080fd5b506102046101e336600461170b565b6001600160a01b031660009081526002602052604090206001015460ff1690565b604051901515815260200161019f565b34801561022057600080fd5b5061023461022f36600461172f565b6104cd565b005b34801561024257600080fd5b5061023461025136600461170b565b6107d3565b34801561026257600080fd5b50610195600a5481565b34801561027857600080fd5b5061019561028736600461176d565b6108fe565b34801561029857600080fd5b506102ac6102a7366004611799565b61095f565b60408051948552602085019390935291830152606082015260800161019f565b6101956102da3660046117cb565b610af8565b3480156102eb57600080fd5b506102346102fa36600461170b565b610b5c565b34801561030b57600080fd5b5061031f61031a3660046116da565b610ca1565b6040516001600160a01b03909116815260200161019f565b34801561034357600080fd5b50610357610352366004611812565b610ccb565b60405161019f92919061189b565b34801561037157600080fd5b5061031f610e78565b34801561038657600080fd5b5061020461039536600461170b565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103c357600080fd5b506102346103d236600461170b565b610ebb565b3480156103e357600080fd5b5060085461031f906001600160a01b031681565b34801561040357600080fd5b5061023461041236600461172f565b6110ab565b34801561042357600080fd5b506101956104323660046116da565b611419565b34801561044357600080fd5b5061031f6104523660046116da565b611429565b34801561046357600080fd5b50600654610195565b34801561047857600080fd5b5060095461031f906001600160a01b031681565b34801561049857600080fd5b506102346104a73660046116da565b611439565b600781815481106104bc57600080fd5b600091825260209091200154905081565b6008546001600160a01b0316331461059c5760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054d91906118f3565b9050336001600160a01b0382161461059a57600854604051630739600760e01b81523360048201526001600160a01b03918216602482015290821660448201526064015b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a2821515811515036106085750505050565b82156106a357604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191690911790556107cc565b600380546106b390600190611910565b815481106106c3576106c3611931565b6000918252602090912001548254600380546001600160a01b039093169290919081106106f2576106f2611931565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061074057610740611931565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600380548061077657610776611947565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6008546001600160a01b0316331461089d5760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906118f3565b9050336001600160a01b0382161461089b57600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b6009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9060200160405180910390a150565b6009546000906001600160a01b03163314610947576040517f88f84f04000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b610956600d8443424887611508565b90505b92915050565b6009546000908190819081906001600160a01b031633146109ae576040517f88f84f04000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b85600a54141580156109bf57508515155b80156109cc5750600a5415155b15610a1157600a546040517fe2051feb000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604401610591565b600a85905560075493508315610a4f5760078054610a3190600190611910565b81548110610a4157610a41611931565b906000526020600020015492505b8615610a80576006610a62600189611910565b81548110610a7257610a72611931565b906000526020600020015491505b60408051602081018590529081018990526060810183905260800160408051601f198184030181529190528051602090910120600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018190559398929750909550919350915050565b3360009081526001602081905260408220015460ff16610b46576040517fb6c60ea3000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b610b54848443424887611508565b949350505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bfa5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610591565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610c70576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610591565b50506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60048181548110610cb157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff16610d1c576040517f32ea82ab000000000000000000000000000000000000000000000000000000008152336004820152602401610591565b8215801590610d3357506001600160a01b0386163b155b15610d75576040517fb5cf5b8f0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602401610591565b6005805473ffffffffffffffffffffffffffffffffffffffff19811633179091556040516001600160a01b03918216918816908790610db7908890889061195d565b60006040518083038185875af1925050503d8060008114610df4576040519150601f19603f3d011682016040523d82523d6000602084013e610df9565b606091505b506005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610e66908a908a908a9061196d565b60405180910390a35094509492505050565b6005546000906001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000018101610eb657600091505090565b919050565b600054610100900460ff1615808015610edb5750600054600160ff909116105b80610ef55750303b158015610ef5575060005460ff166001145b610f675760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610591565b6000805460ff191660011790558015610f8a576000805461ff0019166101001790555b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110285760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610591565b600580546001600160a01b0373ffffffffffffffffffffffffffffffffffffffff1991821681179092556008805490911691841691909117905580156107cf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6008546001600160a01b031633146111755760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b91906118f3565b9050336001600160a01b0382161461117357600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b7fffffffffffffffffffffffff00000000000000000000000000000000000000016001600160a01b038316016111e2576040517f77abed100000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610591565b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a28215158115150361124f5750505050565b82156112eb57604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff191690911790556107cc565b600480546112fb90600190611910565b8154811061130b5761130b611931565b6000918252602090912001548254600480546001600160a01b0390931692909190811061133a5761133a611931565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460026000600485600001548154811061138857611388611931565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560048054806113be576113be611947565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600681815481106104bc57600080fd5b60038181548110610cb157600080fd5b6008546001600160a01b031633146115035760085460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b991906118f3565b9050336001600160a01b0382161461150157600854604051630739600760e01b81523360048201526001600160a01b0391821660248201529082166044820152606401610591565b505b600a55565b600654604080517fff0000000000000000000000000000000000000000000000000000000000000060f88a901b166020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b1660218301527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a5909201909252805191012060009190600082156116055760066115e7600185611910565b815481106115f7576115f7611931565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156116ec57600080fd5b5035919050565b6001600160a01b038116811461170857600080fd5b50565b60006020828403121561171d57600080fd5b8135611728816116f3565b9392505050565b6000806040838503121561174257600080fd5b823561174d816116f3565b91506020830135801515811461176257600080fd5b809150509250929050565b6000806040838503121561178057600080fd5b823561178b816116f3565b946020939093013593505050565b600080600080608085870312156117af57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156117e057600080fd5b833560ff811681146117f157600080fd5b92506020840135611801816116f3565b929592945050506040919091013590565b6000806000806060858703121561182857600080fd5b8435611833816116f3565b935060208501359250604085013567ffffffffffffffff8082111561185757600080fd5b818701915087601f83011261186b57600080fd5b81358181111561187a57600080fd5b88602082850101111561188c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156118d1578581018301518582016060015282016118b5565b506000606082860101526060601f19601f830116850101925050509392505050565b60006020828403121561190557600080fd5b8151611728816116f3565b8181038181111561095957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220e17c4fa516aef1025bbd9042f6a81bce4320d01116e045245bb984afe41977fb64736f6c63430008110033610100604052306080524660c0526200002362000061602090811b62001c9717901c565b151560e0523480156200003557600080fd5b5060405162002ed038038062002ed08339810160408190526200005891620000fe565b60a05262000149565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000a1919062000118565b600060405180830381855afa9150503d8060008114620000de576040519150601f19603f3d011682016040523d82523d6000602084013e620000e3565b606091505b5091509150818015620000f7575080516020145b9250505090565b6000602082840312156200011157600080fd5b5051919050565b6000825160005b818110156200013b57602081860181015185830152016200011f565b506000920191825250919050565b60805160a05160c05160e051612d316200019f600039600081816114c0015261214e0152600061114901526000818161042a01528181611d930152611de801526000818161052901526108b80152612d316000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806384420860116100ee578063d9dd67ab11610097578063e78cea9211610071578063e78cea9214610412578063e8eb1dc314610425578063ebea461d1461044c578063f19815781461048257600080fd5b8063d9dd67ab14610394578063e0bc9729146103a7578063e5a358c8146103ba57600080fd5b8063b31761f8116100c8578063b31761f814610343578063cb23bcb514610356578063d1ce8da81461038157600080fd5b806384420860146103155780638f111f3c1461032857806396cc5c781461033b57600080fd5b80636ae71f121161015b5780636f12b0c9116101355780636f12b0c914610282578063715ea34b1461029557806371c3e6fe146102e95780637fa3a40e1461030c57600080fd5b80636ae71f12146102445780636d46e9871461024c5780636e7df3e71461026f57600080fd5b80631f9566321161018c5780631f95663214610216578063258f04951461022957806327957a491461023c57600080fd5b806306f13056146101b35780631637be48146101ce5780631f7a92b214610201575b600080fd5b6101bb610495565b6040519081526020015b60405180910390f35b6101f16101dc3660046125e9565b60009081526008602052604090205460ff1690565b60405190151581526020016101c5565b61021461020f36600461261a565b61051f565b005b610214610224366004612669565b610734565b6101bb6102373660046125e9565b610841565b6101bb602881565b6102146108ae565b6101f161025a3660046126a2565b60096020526000908152604090205460ff1681565b61021461027d366004612669565b610a51565b61021461029036600461270f565b610b5e565b6102c96102a33660046125e9565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101c5565b6101f16102f73660046126a2565b60036020526000908152604090205460ff1681565b6101bb60005481565b6102146103233660046125e9565b610d95565b61021461033636600461277a565b610eef565b610214611146565b6102146103513660046127f7565b6111d5565b600254610369906001600160a01b031681565b6040516001600160a01b0390911681526020016101c5565b61021461038f36600461286b565b6112dc565b6101bb6103a23660046125e9565b611640565b6102146103b536600461277a565b6116cd565b6103e17f400000000000000000000000000000000000000000000000000000000000000081565b6040517fff0000000000000000000000000000000000000000000000000000000000000090911681526020016101c5565b600154610369906001600160a01b031681565b6101bb7f000000000000000000000000000000000000000000000000000000000000000081565b6004546005546006546007546104629392919084565b6040805194855260208501939093529183015260608201526080016101c5565b6102146104903660046128ad565b611834565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061291d565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610605576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610645576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790558035600455602081013560055560408101356006556060013560075550565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612936565b6001600160a01b0316336001600160a01b0316146107f157600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260096020526040808220805460ff1916841515179055516004917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff1691810182905290820361089a5760405162f20c5d60e01b8152600481018490526024016105b9565b6020015167ffffffffffffffff1692915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361094c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016105b9565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146109a957604051631194af8760e11b81523360048201526001600160a01b03821660248201526044016105b9565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190612936565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac89190612936565b6001600160a01b0316336001600160a01b031614610b0e57600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b6001600160a01b038216600090815260036020526040808220805460ff1916841515179055516001917fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e91a25050565b8060005a9050333214610b9d576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610bcd57604051632dd9fc9760e01b815260040160405180910390fd5b600080610bdb888888611d5d565b90925090506000808080610bf2868b8d8480611fa5565b93509350935093508c8414610c245760405163ac7411c960e01b815260048101859052602481018e90526044016105b9565b80838e7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a6000604051610c5f9493929190612953565b60405180910390a4505050506001600160a01b038416159150610d8c9050573660006020610c8e83601f6129de565b610c9891906129f1565b9050610200610ca8600283612af7565b610cb291906129f1565b610cbd826006612b06565b610cc791906129de565b610cd190846129de565b9250333214610cdf57600091505b836001600160a01b031663e3db8a49335a610cfa9087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d889190612b30565b5050505b50505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0c9190612936565b6001600160a01b0316336001600160a01b031614610e5257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b60008181526008602052604090205460ff16610e835760405162f20c5d60e01b8152600481018290526024016105b9565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b8260005a9050333214610f2e576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16610f5e57604051632dd9fc9760e01b815260040160405180910390fd5b600080610f6c8a8a8a611d5d565b90925090508a81838b8b8a8a6000808080610f8a89888a8989611fa5565b93509350935093508a8414158015610fa457506000198b14155b15610fcc5760405163ac7411c960e01b815260048101859052602481018c90526044016105b9565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548f60006040516110079493929190612953565b60405180910390a4505050506001600160a01b038b1615985061113b97505050505050505057366000602061103d83601f6129de565b61104791906129f1565b9050610200611057600283612af7565b61106191906129f1565b61106c826006612b06565b61107691906129de565b61108090846129de565b925033321461108e57600091505b836001600160a01b031663e3db8a49335a6110a99087612b1d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111379190612b30565b5050505b505050505050505050565b467f00000000000000000000000000000000000000000000000000000000000000000361119f576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252600180825260208201819052918101829052606001819052600481905560058190556006819055600755565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190612936565b6001600160a01b0316336001600160a01b03161461129257600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b805160045560208101516005556040808201516006556060820151600755516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612936565b6001600160a01b0316336001600160a01b03161461139957600254604051631194af8760e11b81523360048201526001600160a01b0390911660248201526044016105b9565b600082826040516113ab929190612b4d565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f19818403018152919052805160209091012090507f800000000000000000000000000000000000000000000000000000000000000081186201000083106114715760405162461bcd60e51b815260206004820152601360248201527f6b657973657420697320746f6f206c617267650000000000000000000000000060448201526064016105b9565b60008181526008602052604090205460ff16156114bd576040517ffa2fddda000000000000000000000000000000000000000000000000000000008152600481018290526024016105b9565b437f00000000000000000000000000000000000000000000000000000000000000001561154a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611547919061291d565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906116059088908890612b5d565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c7919061291d565b92915050565b8260005a3360009081526003602052604090205490915060ff161580156116ff57506002546001600160a01b03163314155b1561171d57604051632dd9fc9760e01b815260040160405180910390fd5b60008061172b8a8a8a611d5d565b909250905060008b82848b8a8a8680806117488787838888611fa5565b929c5090945092509050888a1480159061176457506000198914155b1561178c5760405163ac7411c960e01b8152600481018b9052602481018a90526044016105b9565b80838b7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d60016040516117c79493929190612953565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208c8c60405161180a929190612b5d565b60405180910390a25050506001600160a01b0382161561113b57366000602061103d83601f6129de565b600054861161186f576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061195486846118836020890189612ba2565b61189360408a0160208b01612ba2565b61189e60018d612b1d565b6040805160f89690961b7fff000000000000000000000000000000000000000000000000000000000000001660208088019190915260609590951b6bffffffffffffffffffffffff1916602187015260c093841b7fffffffffffffffff00000000000000000000000000000000000000000000000090811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b60045490915043906119696020880188612ba2565b67ffffffffffffffff1661197d91906129de565b106119b4576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065442906119c96040880160208901612ba2565b67ffffffffffffffff166119dd91906129de565b10611a14576040517fc76d17e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001881115611a9d576001546001600160a01b031663d5719dc2611a3b60028b612b1d565b6040518263ffffffff1660e01b8152600401611a5991815260200190565b602060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9a919061291d565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290611ae3908c612b1d565b6040518263ffffffff1660e01b8152600401611b0191815260200190565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061291d565b14611b79576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b858a6123fc565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061291d565b9050600080548d83611c1991906129de565b611c239190612b1d565b9050600080600080611c39898860008989611fa5565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051611c7c9493929190612953565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611d039190612bf0565b600060405180830381855afa9150503d8060008114611d3e576040519150601f19603f3d011682016040523d82523d6000602084013e611d43565b606091505b5091509150818015611d56575080516020145b9250505090565b604080516080810182526000808252602082018190529181018290526060810182905284846000611d8f8260286129de565b90507f0000000000000000000000000000000000000000000000000000000000000000811115611e14576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201526044016105b9565b8115801590611e8057507f4000000000000000000000000000000000000000000000000000000000000000808484600081611e5157611e51612b8c565b9050013560f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611eb7576040517f1f97007f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60218210801590611f01575082826000818110611ed657611ed6612b8c565b909101357f800000000000000000000000000000000000000000000000000000000000000016151590505b15611f55576000611f16602160018587612c0c565b611f1f91612c36565b60008181526008602052604090205490915060ff16611f535760405162f20c5d60e01b8152600481018290526024016105b9565b505b600080611f6188612441565b915091506000828b8b604051602001611f7c93929190612c54565b60408051808303601f1901815291905280516020909101209b919a509098505050505050505050565b600080600080600054881015611fe7576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061291d565b881115612097576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612c7c565b60008c90559296509094509250905086156123f0573360607f0000000000000000000000000000000000000000000000000000000000000000156122bc576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d7919061291d565b905060006121e548836129f1565b905067ffffffffffffffff81111561223f5760405162461bcd60e51b815260206004820152601160248201527f4c315f4741535f4e4f545f55494e54363400000000000000000000000000000060448201526064016105b9565b60408051426020820152606086901b6bffffffffffffffffffffffff191681830152605481018f9052607481018a905248609482015260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660b48301528051609c81840301815260bc9092019052915061230a9050565b604080514260208201526bffffffffffffffffffffffff19606085901b1691810191909152605481018c90526074810187905248609482015260b40160405160208183030381529060405290505b600154815160208301206040517f7a88b1070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691637a88b1079161236f9187916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b2919061291d565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516123e49190612cb2565b60405180910390a25050505b95509550955095915050565b604080516080810182526000808252602082018190529181018290526060810182905260008061242b85612441565b8151602090920191909120969095509350505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161246e612519565b905060008160000151826020015183604001518460600151886040516020016124ee95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b6040516020818303038152906040529050602881511461251057612510612ce5565b94909350915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600654421115612585576006546125789042612b1d565b67ffffffffffffffff1681525b60075461259290426129de565b67ffffffffffffffff1660208201526004544311156125c8576004546125b89043612b1d565b67ffffffffffffffff1660408201525b6005546125d590436129de565b67ffffffffffffffff166060820152919050565b6000602082840312156125fb57600080fd5b5035919050565b6001600160a01b038116811461261757600080fd5b50565b60008082840360a081121561262e57600080fd5b833561263981612602565b92506080601f198201121561264d57600080fd5b506020830190509250929050565b801515811461261757600080fd5b6000806040838503121561267c57600080fd5b823561268781612602565b915060208301356126978161265b565b809150509250929050565b6000602082840312156126b457600080fd5b81356126bf81612602565b9392505050565b60008083601f8401126126d857600080fd5b50813567ffffffffffffffff8111156126f057600080fd5b60208301915083602082850101111561270857600080fd5b9250929050565b60008060008060006080868803121561272757600080fd5b85359450602086013567ffffffffffffffff81111561274557600080fd5b612751888289016126c6565b90955093505060408601359150606086013561276c81612602565b809150509295509295909350565b600080600080600080600060c0888a03121561279557600080fd5b87359650602088013567ffffffffffffffff8111156127b357600080fd5b6127bf8a828b016126c6565b9097509550506040880135935060608801356127da81612602565b969995985093969295946080840135945060a09093013592915050565b60006080828403121561280957600080fd5b6040516080810181811067ffffffffffffffff8211171561283a57634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b6000806020838503121561287e57600080fd5b823567ffffffffffffffff81111561289557600080fd5b6128a1858286016126c6565b90969095509350505050565b60008060008060008060e087890312156128c657600080fd5b86359550602087013560ff811681146128de57600080fd5b945060808701888111156128f157600080fd5b60408801945035925060a087013561290881612602565b8092505060c087013590509295509295509295565b60006020828403121561292f57600080fd5b5051919050565b60006020828403121561294857600080fd5b81516126bf81612602565b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a084015250600383106129b957634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156116c7576116c76129c8565b600082612a0e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a4e578160001904821115612a3457612a346129c8565b80851615612a4157918102915b93841c9390800290612a18565b509250929050565b600082612a65575060016116c7565b81612a72575060006116c7565b8160018114612a885760028114612a9257612aae565b60019150506116c7565b60ff841115612aa357612aa36129c8565b50506001821b6116c7565b5060208310610133831016604e8410600b8410161715612ad1575081810a6116c7565b612adb8383612a13565b8060001904821115612aef57612aef6129c8565b029392505050565b60006126bf60ff841683612a56565b80820281158282048414176116c7576116c76129c8565b818103818111156116c7576116c76129c8565b600060208284031215612b4257600080fd5b81516126bf8161265b565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612bb457600080fd5b813567ffffffffffffffff811681146126bf57600080fd5b60005b83811015612be7578181015183820152602001612bcf565b50506000910152565b60008251612c02818460208701612bcc565b9190910192915050565b60008085851115612c1c57600080fd5b83861115612c2957600080fd5b5050820193919092039150565b803560208310156116c757600019602084900360031b1b1692915050565b60008451612c66818460208901612bcc565b8201838582376000930192835250909392505050565b60008060008060808587031215612c9257600080fd5b505082516020840151604085015160609095015191969095509092509050565b6020815260008251806020840152612cd1816040850160208701612bcc565b601f01601f19169190910160400192915050565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220bc6cfa10c826ec43c05cc4f39c761f8cf3fc72be0d153f7ef9800f49a398406764736f6c6343000811003360e0604052306080524660c05234801561001857600080fd5b5060405162002a9938038062002a9983398101604081905261003991610041565b60a05261005a565b60006020828403121561005357600080fd5b5051919050565b60805160a05160c0516129d0620000c96000396000818161053c01528181610753015281816111f50152818161158f0152611a1601526000818161047f015281816107cb0152818161082001528181611d380152611d91015260008181610b83015261163101526129d06000f3fe6080604052600436106101ab5760003560e01c80636e6e8a6a116100ec578063c474d2c51161008a578063e78cea9211610064578063e78cea9214610435578063e8eb1dc31461046d578063ee35f327146104a1578063efeadb6d146104c157600080fd5b8063c474d2c5146103e2578063e3de72a514610402578063e6bd12cf1461042257600080fd5b80638a631aa6116100c65780638a631aa614610352578063a66b327d14610372578063b75436bb14610392578063babcc539146103b257600080fd5b80636e6e8a6a1461030a57806370665f141461031d5780638456cb591461033d57600080fd5b8063439370b1116101595780635c975abb116101335780635c975abb146102b95780635e916758146102d1578063679b6ded146102e457806367ef3ab8146102f757600080fd5b8063439370b114610271578063485cc955146102795780635075788b1461029957600080fd5b80631fe927cf1161018a5780631fe927cf1461020957806322bd5c1c146102295780633f4ba83a1461025a57600080fd5b8062f72382146101b05780630f4d14e9146101e35780631b871c8d146101f6575b600080fd5b3480156101bc57600080fd5b506101d06101cb366004612126565b6104e1565b6040519081526020015b60405180910390f35b6101d06101f13660046121a3565b610628565b6101d06102043660046121bc565b61068b565b34801561021557600080fd5b506101d0610224366004612261565b6106fd565b34801561023557600080fd5b5060665461024a90600160a01b900460ff1681565b60405190151581526020016101da565b34801561026657600080fd5b5061026f6108a8565b005b6101d06109dd565b34801561028557600080fd5b5061026f6102943660046122a3565b610aaa565b3480156102a557600080fd5b506101d06102b4366004612126565b610cd3565b3480156102c557600080fd5b5060335460ff1661024a565b6101d06102df3660046122dc565b610d7e565b6101d06102f23660046121bc565b610e31565b6101d0610305366004612346565b610f67565b6101d06103183660046121bc565b61101d565b34801561032957600080fd5b506101d06103383660046123b9565b61119f565b34801561034957600080fd5b5061026f611326565b34801561035e57600080fd5b506101d061036d366004612406565b611458565b34801561037e57600080fd5b506101d061038d36600461245b565b611501565b34801561039e57600080fd5b506101d06103ad366004612261565b611539565b3480156103be57600080fd5b5061024a6103cd36600461247d565b60676020526000908152604090205460ff1681565b3480156103ee57600080fd5b5061026f6103fd36600461247d565b611627565b34801561040e57600080fd5b5061026f61041d366004612587565b61173b565b6101d0610430366004612346565b6119c0565b34801561044157600080fd5b50606554610455906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b34801561047957600080fd5b506101d07f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ad57600080fd5b50606654610455906001600160a01b031681565b3480156104cd57600080fd5b5061026f6104dc366004612649565b611ae2565b60006104eb611cdf565b606654600160a01b900460ff16801561051457503260009081526067602052604090205460ff16155b1561053957604051630f51ed7160e41b81523260048201526024015b60405180910390fd5b467f00000000000000000000000000000000000000000000000000000000000000000361057957604051635180dd8360e11b815260040160405180910390fd5b3332146105995760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff8811156105c25760405163107c527b60e01b815260040160405180910390fd5b61061c600373111100000000000000000000000000000000111019330160008b8b8b8b6001600160a01b03168b8b8b604051602001610608989796959493929190612664565b604051602081830303815290604052611d34565b98975050505050505050565b6000610632611cdf565b606654600160a01b900460ff16801561065b57503260009081526067602052604090205460ff16155b1561067b57604051630f51ed7160e41b8152326004820152602401610530565b6106836109dd565b90505b919050565b6000610695611cdf565b606654600160a01b900460ff1680156106be57503260009081526067602052604090205460ff16155b156106de57604051630f51ed7160e41b8152326004820152602401610530565b6106ef8a8a8a8a8a8a8a8a8a61101d565b9a9950505050505050505050565b6000610707611cdf565b606654600160a01b900460ff16801561073057503260009081526067602052604090205460ff16155b1561075057604051630f51ed7160e41b8152326004820152602401610530565b467f0000000000000000000000000000000000000000000000000000000000000000146107a9576040517fc6ea680300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3332146107c95760405163feb3d07160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000082111561084c576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610530565b600061087160033386866040516108649291906126c6565b6040518091039020611e13565b60405190915081907fab532385be8f1005a4b6ba8fa20a2245facb346134ac739fe9a5198dc1580b9c90600090a290505b92915050565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa1580156108f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091691906126d6565b9050336001600160a01b038216146109d2576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098c91906126d6565b9050336001600160a01b038216146109d057604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b6109da611ed9565b50565b60006109e7611cdf565b606654600160a01b900460ff168015610a1057503260009081526067602052604090205460ff16155b15610a3057604051630f51ed7160e41b8152326004820152602401610530565b33803b151580610a405750323314155b15610a5e575033731111000000000000000000000000000000001111015b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152346034820152610aa490600c903390605401610608565b91505090565b600054610100900460ff1615808015610aca5750600054600160ff909116105b80610ae45750303b158015610ae4575060005460ff166001145b610b565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610530565b6000805460ff191660011790558015610b79576000805461ff0019166101001790555b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610530565b606580546001600160a01b038086167fffffffffffffffffffffffff000000000000000000000000000000000000000090921691909117909155606680547fffffffffffffffffffffff00000000000000000000000000000000000000000016918416919091179055610c88611f2b565b8015610cce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610cdd611cdf565b606654600160a01b900460ff168015610d0657503260009081526067602052604090205460ff16155b15610d2657604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff881115610d4f5760405163107c527b60e01b815260040160405180910390fd5b61061c60033360008b8b8b8b6001600160a01b03168b8b8b604051602001610608989796959493929190612664565b6000610d88611cdf565b606654600160a01b900460ff168015610db157503260009081526067602052604090205460ff16155b15610dd157604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff861115610dfa5760405163107c527b60e01b815260040160405180910390fd5b610e2760073360018989896001600160a01b0316348a8a60405160200161060897969594939291906126f3565b9695505050505050565b6000610e3b611cdf565b606654600160a01b900460ff168015610e6457503260009081526067602052604090205460ff16155b15610e8457604051630f51ed7160e41b8152326004820152602401610530565b610e8e8486612764565b610e988a8a61277b565b610ea2919061277b565b341015610f0357610eb38486612764565b610ebd8a8a61277b565b610ec7919061277b565b6040517f7040b58c0000000000000000000000000000000000000000000000000000000081526004810191909152346024820152604401610530565b6001600160a01b0387163b15610f2d57731111000000000000000000000000000000001111870196505b6001600160a01b0386163b156106de57731111000000000000000000000000000000001111860195506106ef8a8a8a8a8a8a8a8a8a61101d565b6000610f71611cdf565b606654600160a01b900460ff168015610f9a57503260009081526067602052604090205460ff16155b15610fba57604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff871115610fe35760405163107c527b60e01b815260040160405180910390fd5b61101260073360008a8a8a8a6001600160a01b0316348b8b604051602001610608989796959493929190612664565b979650505050505050565b6000611027611cdf565b606654600160a01b900460ff16801561105057503260009081526067602052604090205460ff16155b1561107057604051630f51ed7160e41b8152326004820152602401610530565b846001148061107f5750836001145b156110cc57338a8a348b8b8b8b8b8b8b6040517f07c266e30000000000000000000000000000000000000000000000000000000081526004016105309b9a9998979695949392919061278e565b67ffffffffffffffff8511156110f55760405163107c527b60e01b815260040160405180910390fd5b60006111018348611501565b905080891015611147576040517ffadf238a00000000000000000000000000000000000000000000000000000000815260048101829052602481018a9052604401610530565b6111906009338d6001600160a01b03168d348e8e6001600160a01b03168e6001600160a01b03168e8e8e8e90508f8f6040516020016106089b9a99989796959493929190612814565b9b9a5050505050505050505050565b60006111a9611cdf565b606654600160a01b900460ff1680156111d257503260009081526067602052604090205460ff16155b156111f257604051630f51ed7160e41b8152326004820152602401610530565b467f00000000000000000000000000000000000000000000000000000000000000000361123257604051635180dd8360e11b815260040160405180910390fd5b3332146112525760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff86111561127b5760405163107c527b60e01b815260040160405180910390fd5b604080516001600160a01b0384166024808301919091528251808303909101815260449091018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f25e16063000000000000000000000000000000000000000000000000000000001790529151610e279260039233731111000000000000000000000000000000001110190192610608926000928d928d928d926064928e9201612892565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139491906126d6565b9050336001600160a01b03821614611450576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140a91906126d6565b9050336001600160a01b0382161461144e57604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b6109da611fb0565b6000611462611cdf565b606654600160a01b900460ff16801561148b57503260009081526067602052604090205460ff16155b156114ab57604051630f51ed7160e41b8152326004820152602401610530565b67ffffffffffffffff8711156114d45760405163107c527b60e01b815260040160405180910390fd5b61101260033360018a8a8a6001600160a01b03168a8a8a60405160200161060897969594939291906126f3565b6000811561150f5781611511565b485b61151c846006612764565b6115289061057861277b565b6115329190612764565b9392505050565b6000611543611cdf565b606654600160a01b900460ff16801561156c57503260009081526067602052604090205460ff16155b1561158c57604051630f51ed7160e41b8152326004820152602401610530565b467f0000000000000000000000000000000000000000000000000000000000000000146115e5576040517fc6ea680300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153260033385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3492505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116c55760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610530565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610cce576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610530565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a991906126d6565b9050336001600160a01b03821614611865576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f91906126d6565b9050336001600160a01b0382161461186357604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b81518351146118b65760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e505554000000000000000000000000000000000000006044820152606401610530565b60005b83518110156119ba578281815181106118d4576118d4612900565b6020026020010151606760008684815181106118f2576118f2612900565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555083818151811061194357611943612900565b60200260200101516001600160a01b03167fd9739f45a01ce092c5cdb3d68f63d63d21676b1c6c0b4f9cbc6be4cf5449595a84838151811061198757611987612900565b60200260200101516040516119a0911515815260200190565b60405180910390a2806119b281612916565b9150506118b9565b50505050565b60006119ca611cdf565b606654600160a01b900460ff1680156119f357503260009081526067602052604090205460ff16155b15611a1357604051630f51ed7160e41b8152326004820152602401610530565b467f000000000000000000000000000000000000000000000000000000000000000003611a5357604051635180dd8360e11b815260040160405180910390fd5b333214611a735760405163feb3d07160e01b815260040160405180910390fd5b67ffffffffffffffff871115611a9c5760405163107c527b60e01b815260040160405180910390fd5b611012600773111100000000000000000000000000000000111019330160008a8a8a8a6001600160a01b0316348b8b604051602001610608989796959493929190612664565b6065546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906126d6565b9050336001600160a01b03821614611c0c576000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906126d6565b9050336001600160a01b03821614611c0a57604051630739600760e01b81523360048201526001600160a01b03808416602483015282166044820152606401610530565b505b606654600160a01b900460ff16151582151503611c6b5760405162461bcd60e51b815260206004820152600b60248201527f414c52454144595f5345540000000000000000000000000000000000000000006044820152606401610530565b60668054831515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb390611cd390841515815260200190565b60405180910390a15050565b60335460ff1615611d325760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610530565b565b60007f000000000000000000000000000000000000000000000000000000000000000082511115611dbd5781516040517f4634691b00000000000000000000000000000000000000000000000000000000815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610530565b6000611dd185858580519060200120611e13565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b84604051611e03919061294e565b60405180910390a2949350505050565b6065546000906001600160a01b0316638db5993b348673111100000000000000000000000000000000111187016040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260ff90921660048301526001600160a01b031660248201526044810186905260640160206040518083038185885af1158015611eac573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ed19190612981565b949350505050565b611ee1611fed565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16611fa85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610530565b611d3261203f565b611fb8611cdf565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f0e3390565b60335460ff16611d325760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610530565b600054610100900460ff166120bc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610530565b6033805460ff19169055565b6001600160a01b03811681146109da57600080fd5b60008083601f8401126120ef57600080fd5b50813567ffffffffffffffff81111561210757600080fd5b60208301915083602082850101111561211f57600080fd5b9250929050565b600080600080600080600060c0888a03121561214157600080fd5b8735965060208801359550604088013594506060880135612161816120c8565b93506080880135925060a088013567ffffffffffffffff81111561218457600080fd5b6121908a828b016120dd565b989b979a50959850939692959293505050565b6000602082840312156121b557600080fd5b5035919050565b60008060008060008060008060006101008a8c0312156121db57600080fd5b89356121e6816120c8565b985060208a0135975060408a0135965060608a0135612204816120c8565b955060808a0135612214816120c8565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561223e57600080fd5b61224a8c828d016120dd565b915080935050809150509295985092959850929598565b6000806020838503121561227457600080fd5b823567ffffffffffffffff81111561228b57600080fd5b612297858286016120dd565b90969095509350505050565b600080604083850312156122b657600080fd5b82356122c1816120c8565b915060208301356122d1816120c8565b809150509250929050565b6000806000806000608086880312156122f457600080fd5b8535945060208601359350604086013561230d816120c8565b9250606086013567ffffffffffffffff81111561232957600080fd5b612335888289016120dd565b969995985093965092949392505050565b60008060008060008060a0878903121561235f57600080fd5b863595506020870135945060408701359350606087013561237f816120c8565b9250608087013567ffffffffffffffff81111561239b57600080fd5b6123a789828a016120dd565b979a9699509497509295939492505050565b600080600080600060a086880312156123d157600080fd5b8535945060208601359350604086013592506060860135915060808601356123f8816120c8565b809150509295509295909350565b60008060008060008060a0878903121561241f57600080fd5b86359550602087013594506040870135612438816120c8565b935060608701359250608087013567ffffffffffffffff81111561239b57600080fd5b6000806040838503121561246e57600080fd5b50508035926020909101359150565b60006020828403121561248f57600080fd5b8135611532816120c8565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124d9576124d961249a565b604052919050565b600067ffffffffffffffff8211156124fb576124fb61249a565b5060051b60200190565b8035801515811461068657600080fd5b600082601f83011261252657600080fd5b8135602061253b612536836124e1565b6124b0565b82815260059290921b8401810191818101908684111561255a57600080fd5b8286015b8481101561257c5761256f81612505565b835291830191830161255e565b509695505050505050565b6000806040838503121561259a57600080fd5b823567ffffffffffffffff808211156125b257600080fd5b818501915085601f8301126125c657600080fd5b813560206125d6612536836124e1565b82815260059290921b840181019181810190898411156125f557600080fd5b948201945b8386101561261c57853561260d816120c8565b825294820194908201906125fa565b9650508601359250508082111561263257600080fd5b5061263f85828601612515565b9150509250929050565b60006020828403121561265b57600080fd5b61153282612505565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b168152876001820152866021820152856041820152846061820152836081820152818360a18301376000910160a101908152979650505050505050565b8183823760009101908152919050565b6000602082840312156126e857600080fd5b8151611532816120c8565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815286600182015285602182015284604182015283606182015281836081830137600091016081019081529695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108a2576108a261274e565b808201808211156108a2576108a261274e565b60006101406001600160a01b03808f168452808e1660208501528c60408501528b60608501528a6080850152808a1660a085015280891660c0850152508660e084015285610100840152806101208401528381840152506101608385828501376000838501820152601f909301601f19169091019091019b9a5050505050505050505050565b8b81528a60208201528960408201528860608201528760808201528660a08201528560c08201528460e08201528361010082015260006101208385828501376000929093019092019081529b9a5050505050505050505050565b60005b83811015612889578181015183820152602001612871565b50506000910152565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b168152866001820152856021820152846041820152836061820152826081820152600082516128ed8160a185016020870161286e565b9190910160a10198975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129475761294761274e565b5060010190565b602081526000825180602084015261296d81604085016020870161286e565b601f01601f19169190910160400192915050565b60006020828403121561299357600080fd5b505191905056fea26469706673582212203fb619d192ddab43b02aa2709fd9cdd03156c9d91b417c53e00eb2ad7f1eb9a264736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516109ae6100366000396000818160e801526102a701526109ae6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063cb23bcb511610050578063cb23bcb514610089578063cf8d56d6146100b8578063e78cea92146100cb57600080fd5b80636ae71f121461006c578063c4d66de814610076575b600080fd5b6100746100de565b005b6100746100843660046107a2565b61029d565b60015461009c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100746100c63660046107c6565b610491565b60005461009c906001600160a01b031681565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101815760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b038216146101f7576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604401610178565b60008054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026c9190610842565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361033b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610178565b6000546001600160a01b03161561037e576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166103be576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa15801561043d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104619190610842565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6001546001600160a01b031633146104eb5760405162461bcd60e51b815260206004820152600b60248201527f4f4e4c595f524f4c4c55500000000000000000000000000000000000000000006044820152606401610178565b806105385760405162461bcd60e51b815260206004820152601260248201527f454d5054595f434841494e5f434f4e46494700000000000000000000000000006044820152606401610178565b6001486105436106c4565b156105b857606c6001600160a01b031663f5d6ded76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab919061085f565b6105b59082610878565b90505b600085838387876040516020016105d39594939291906108b8565b60408051808303601f190181529082905260008054825160208401207f8db5993b000000000000000000000000000000000000000000000000000000008552600b6004860152602485018390526044850152919350916001600160a01b0390911690638db5993b906064016020604051808303816000875af115801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061085f565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b836040516106b39190610929565b60405180910390a250505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491610730919061095c565b600060405180830381855afa9150503d806000811461076b576040519150601f19603f3d011682016040523d82523d6000602084013e610770565b606091505b5091509150818015610783575080516020145b9250505090565b6001600160a01b038116811461079f57600080fd5b50565b6000602082840312156107b457600080fd5b81356107bf8161078a565b9392505050565b6000806000604084860312156107db57600080fd5b83359250602084013567ffffffffffffffff808211156107fa57600080fd5b818601915086601f83011261080e57600080fd5b81358181111561081d57600080fd5b87602082850101111561082f57600080fd5b6020830194508093505050509250925092565b60006020828403121561085457600080fd5b81516107bf8161078a565b60006020828403121561087157600080fd5b5051919050565b808201808211156108b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8581527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660208201528360218201528183604183013760009101604101908152949350505050565b60005b83811015610920578181015183820152602001610908565b50506000910152565b6020815260008251806020840152610948816040850160208701610905565b601f01601f19169190910160400192915050565b6000825161096e818460208701610905565b919091019291505056fea26469706673582212206dac08f48f4d7695476a9905fc98e80e1d29104caa21b58fff1336d7b803524c64736f6c6343000811003360a06040523060805234801561001457600080fd5b506080516117cd6100376000396000818161043c01526107bf01526117cd6000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c80638515bc6a116100cd578063c4d66de811610081578063cb23bcb511610066578063cb23bcb51461028e578063d5b5cc23146102a1578063e78cea92146102c157600080fd5b8063c4d66de81461025b578063c75184df1461026e57600080fd5b8063a04cee60116100b2578063a04cee6014610220578063ae6dead714610233578063b0f305371461025357600080fd5b80638515bc6a146102055780639f0c04bf1461020d57600080fd5b806346547790116101245780636ae71f12116101095780636ae71f12146101d557806372f2a8c7146101dd57806380648b02146101e557600080fd5b806346547790146101aa5780635a129efe146101b257600080fd5b80627436d31461015557806308635a951461017b5780631198527114610190578063288e5b1014610197575b600080fd5b6101686101633660046110f6565b6102d4565b6040519081526020015b60405180910390f35b61018e610189366004611218565b610311565b005b6000610168565b61018e6101a536600461130d565b610384565b6101686103d8565b6101c56101c03660046113a9565b610415565b6040519015158152602001610172565b61018e610432565b61016861060d565b6101ed610628565b6040516001600160a01b039091168152602001610172565b610168610666565b61016861021b3660046113c2565b6106a9565b61018e61022e366004611451565b6106ee565b6101686102413660046113a9565b60036020526000908152604090205481565b610168610786565b61018e610269366004611473565b6107b5565b610276600281565b6040516001600160801b039091168152602001610172565b6000546101ed906001600160a01b031681565b6101686102af3660046113a9565b60026020526000908152604090205481565b6001546101ed906001600160a01b031681565b60006103098484846040516020016102ee91815260200190565b60405160208183030381529060405280519060200120610a34565b949350505050565b600061032389898989898989896106a9565b90506103658c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e9250859150610aef9050565b6103768a8a8a8a8a8a8a8a8a610c5c565b505050505050505050505050565b33156103bc576040517f0e13b69d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103cd898989898989898989610c5c565b505050505050505050565b6004546000906001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b6001600160801b0316919050565b600080600061042384610f78565b92509250506103098282610fb5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614610565576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03821660248201526044016104e6565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190611497565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b6006546000906001810161062357506000919050565b919050565b6007546000906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000001810161062357600091505090565b60045460009070010000000000000000000000000000000090046001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b600088888888888888886040516020016106ca9897969594939291906114b4565b60405160208183030381529060405280519060200120905098975050505050505050565b6000546001600160a01b03163314610747576000546040517f3933c6fc0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911660248201526044016104e6565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6005546000906001600160801b03166ffffffffffffffffffffffffffffffffe19810161040757600091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016104e6565b6001600160a01b0381166108ad576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546001600160a01b0316156108f0576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182526001600160801b038082526020808301829052828401829052600019606084018190526001600160a01b0360809094018490526004818155600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169094179093556006556007805473ffffffffffffffffffffffffffffffffffffffff19908116851790915560018054948716949091168417905583517fcb23bcb50000000000000000000000000000000000000000000000000000000081529351929363cb23bcb5938184019390918290030181865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190611497565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b8251600090610100811115610a80576040517ffdac331e0000000000000000000000000000000000000000000000000000000081526004810182905261010060248201526044016104e6565b8260005b82811015610ae5576000878281518110610aa057610aa0611520565b60200260200101519050816001901b8716600003610acc57826000528060205260406000209250610adc565b8060005282602052604060002092505b50600101610a84565b5095945050505050565b610100835110610b305782516040517fab6a06830000000000000000000000000000000000000000000000000000000081526004016104e691815260200190565b8251610b3d906002611630565b8210610b8d578183516002610b529190611630565b6040517f0b8a724b000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016104e6565b6000610b9a8484846102d4565b600081815260036020526040902054909150610be5576040517f8730d7c8000000000000000000000000000000000000000000000000000000008152600481018290526024016104e6565b6000806000610bf386610f78565b925092509250610c038282610fb5565b15610c3d576040517f9715b8d3000000000000000000000000000000000000000000000000000000008152600481018790526024016104e6565b600092835260026020526040909220600190911b909117905550505050565b6000886001600160a01b0316886001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648c604051610ca391815260200190565b60405180910390a4600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280886001600160801b03168152602001876001600160801b03168152602001866001600160801b031681526020018b60001b81526020018a6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050610ed4888585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fc492505050565b805160208201516001600160801b0391821670010000000000000000000000000000000091831691909102176004556040820151600580547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016919092161790556060810151600655608001516007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055505050505050505050565b6000808080610f8860ff86611652565b90506000610f9760ff87611666565b60008381526002602052604090205492979096509194509092505050565b80821c60011615155b92915050565b6001546040517f9e5d4c4900000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690639e5d4c49906110169088908890889060040161169e565b6000604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261105d91908101906116e8565b91509150816110a8578051156110765780518082602001fd5b6040517f376fb55a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156110ee576110ee6110af565b604052919050565b60008060006060848603121561110b57600080fd5b833567ffffffffffffffff8082111561112357600080fd5b818601915086601f83011261113757600080fd5b813560208282111561114b5761114b6110af565b8160051b925061115c8184016110c5565b828152928401810192818101908a85111561117657600080fd5b948201945b848610156111945785358252948201949082019061117b565b9a918901359950506040909701359695505050505050565b6001600160a01b03811681146111c157600080fd5b50565b8035610623816111ac565b60008083601f8401126111e157600080fd5b50813567ffffffffffffffff8111156111f957600080fd5b60208301915083602082850101111561121157600080fd5b9250929050565b60008060008060008060008060008060006101208c8e03121561123a57600080fd5b8b3567ffffffffffffffff8082111561125257600080fd5b818e0191508e601f83011261126657600080fd5b81358181111561127557600080fd5b8f60208260051b850101111561128a57600080fd5b60208381019e50909c508e01359a506112a560408f016111c4565b99506112b360608f016111c4565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e01359150808211156112e657600080fd5b506112f38e828f016111cf565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c03121561132c57600080fd5b8935985060208a013561133e816111ac565b975060408a013561134e816111ac565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561138657600080fd5b6113928c828d016111cf565b915080935050809150509295985092959850929598565b6000602082840312156113bb57600080fd5b5035919050565b60008060008060008060008060e0898b0312156113de57600080fd5b88356113e9816111ac565b975060208901356113f9816111ac565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff81111561143157600080fd5b61143d8b828c016111cf565b999c989b5096995094979396929594505050565b6000806040838503121561146457600080fd5b50508035926020909101359150565b60006020828403121561148557600080fd5b8135611490816111ac565b9392505050565b6000602082840312156114a957600080fd5b8151611490816111ac565b60007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561158757816000190482111561156d5761156d611536565b8085161561157a57918102915b93841c9390800290611551565b509250929050565b60008261159e57506001610fbe565b816115ab57506000610fbe565b81600181146115c157600281146115cb576115e7565b6001915050610fbe565b60ff8411156115dc576115dc611536565b50506001821b610fbe565b5060208310610133831016604e8410600b841016171561160a575081810a610fbe565b611614838361154c565b806000190482111561162857611628611536565b029392505050565b6000611490838361158f565b634e487b7160e01b600052601260045260246000fd5b6000826116615761166161163c565b500490565b6000826116755761167561163c565b500690565b60005b8381101561169557818101518382015260200161167d565b50506000910152565b6001600160a01b038416815282602082015260606040820152600082518060608401526116d281608085016020870161167a565b601f01601f191691909101608001949350505050565b600080604083850312156116fb57600080fd5b8251801515811461170b57600080fd5b602084015190925067ffffffffffffffff8082111561172957600080fd5b818501915085601f83011261173d57600080fd5b81518181111561174f5761174f6110af565b6117626020601f19601f840116016110c5565b915080825286602082850101111561177957600080fd5b61178a81602084016020860161167a565b508092505050925092905056fea2646970667358221220f97735c6ce65cfe41023d1626f05c807e67ba1b01a8fd4a0ace2ebdb6cc1e2fd64736f6c63430008110033", } // BridgeCreatorABI is the input ABI used to generate the binding from. @@ -8373,7 +8373,7 @@ func (_IRollupUser *IRollupUserFilterer) ParseUserWithdrawableFundsUpdated(log t // RollupAdminLogicMetaData contains all meta data concerning the RollupAdminLogic contract. var RollupAdminLogicMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sendRoot\",\"type\":\"bytes32\"}],\"name\":\"AssertionConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"}],\"name\":\"AssertionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"OwnerFunctionCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"challengeIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"challengedAssertion\",\"type\":\"uint64\"}],\"name\":\"RollupChallengeStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"machineHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"RollupInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserWithdrawableFundsUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_stakerMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"amountStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anyTrustFastConfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManager\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"forceConfirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"forceCreateAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"staker\",\"type\":\"address[]\"}],\"name\":\"forceRefundStaker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertion\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"secondChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isFirstChild\",\"type\":\"bool\"},{\"internalType\":\"enumAssertionStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configHash\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertionCreationBlockForLogLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getFirstChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getSecondChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"internalType\":\"structIRollupCore.Staker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contractIInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"miniStakeValue\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"genesisExecutionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevel\",\"type\":\"uint256\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInbox\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validatorWalletCreator\",\"type\":\"address\"}],\"internalType\":\"structContractDependencies\",\"name\":\"connectedContracts\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isFirstChild\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"latestStakedAssertion\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loserStakeEscrow\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAssertionPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outbox\",\"outputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_outbox\",\"type\":\"address\"}],\"name\":\"removeOldOutbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resume\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupDeploymentBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEventInbox\",\"outputs\":[{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerInbox\",\"outputs\":[{\"internalType\":\"contractISequencerInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_anyTrustFastConfirmer\",\"type\":\"address\"}],\"name\":\"setAnyTrustFastConfirmer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBaseStake\",\"type\":\"uint256\"}],\"name\":\"setBaseStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_challengeManager\",\"type\":\"address\"}],\"name\":\"setChallengeManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newConfirmPeriod\",\"type\":\"uint64\"}],\"name\":\"setConfirmPeriodBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inbox\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"}],\"name\":\"setDelayedInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIInbox\",\"name\":\"newInbox\",\"type\":\"address\"}],\"name\":\"setInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newLoserStakerEscrow\",\"type\":\"address\"}],\"name\":\"setLoserStakeEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"setMinimumAssertionPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"_outbox\",\"type\":\"address\"}],\"name\":\"setOutbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sequencerInbox\",\"type\":\"address\"}],\"name\":\"setSequencerInbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validator\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_val\",\"type\":\"bool[]\"}],\"name\":\"setValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_validatorWhitelistDisabled\",\"type\":\"bool\"}],\"name\":\"setValidatorWhitelistDisabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newWasmModuleRoot\",\"type\":\"bytes32\"}],\"name\":\"setWasmModuleRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeSecondaryTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeSecondaryToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"validateAssertionHash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"name\":\"validateConfig\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWhitelistDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"withdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c0604052620000196200003660201b62002d1d1760201c565b15156080523060a0523480156200002f57600080fd5b5062000104565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b506000920191825250919050565b60805160a05161590c6200017e60003960008181610d9201528181610e1c01528181611147015281816111cc0152818161128d01528181611312015281816120a80152818161212d015281816122760152818161272b01526127b0015260008181610f7001528181611ed70152613d39015261590c6000f3fe6080604052600436106103c35760003560e01c80636db04dc1116101f2578063b7626e731161010d578063ee35f327116100a0578063facd743b1161006f578063facd743b14610c98578063fb0e722b14610cc8578063fc8ffa0314610ce8578063ff204f3b14610d0857600080fd5b8063ee35f32714610c0d578063ef40a67014610c22578063f065de3f14610c58578063f9cee9df14610c7857600080fd5b8063dff69787116100dc578063dff6978714610b2f578063e531d8c714610b44578063e78cea9214610b64578063e8bd492214610b8457600080fd5b8063b7626e7314610aaf578063bc45e0ae14610acf578063ce11e6ab14610aef578063ce66d05c14610b0f57600080fd5b80638ee1a12611610185578063a23c44b111610154578063a23c44b11461096d578063a2b4f1d814610a4f578063a3ffb77214610a6f578063aa38a6e714610a8f57600080fd5b80638ee1a1261461090e578063948d6588146109245780639846129a146109445780639a8a05921461095757600080fd5b80637c75c298116101c15780637c75c2981461088c5780638456cb59146108ac57806388302884146108c157806389384960146108ee57600080fd5b80636db04dc1146108205780636ddd37441461084057806371ef232c1461086057806376e7e23b1461087657600080fd5b8063353325e0116102e257806352d1902d1161027557806356bbc9e61161024457806356bbc9e61461078b5780635c975abb146107ab5780636177fd18146107c357806365f7f80d1461080b57600080fd5b806352d1902d1461071157806353b60c4a1461072657806355840a5814610746578063567ca41b1461076b57600080fd5b806347fb24c5116102b157806347fb24c51461069e5780634f1ef286146106be5780634f61f850146106d157806351ed6a30146106f157600080fd5b8063353325e0146106335780633659cfe6146106485780633c41ebcd1461066857806345e38b641461068857600080fd5b806313af40351161035a5780632abdd230116103295780632abdd2301461056a5780632e7acfa6146105a35780632f30cabd146105dd578063308362281461061357600080fd5b806313af4035146104f457806313c56ca7146105145780631b1689e91461053457806320fa7e221461054a57600080fd5b80630d40a0fd116103965780630d40a0fd1461045c5780630d561b371461047c578063117155851461049c57806312ab3d3b146104ca57600080fd5b8063023a96fe146103c8578063046f7da21461040557806304972af91461041c57806306ae58511461043c575b600080fd5b3480156103d457600080fd5b506069546103e8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041157600080fd5b5061041a610d28565b005b34801561042857600080fd5b5061041a610437366004614de5565b610d4c565b34801561044857600080fd5b5061041a610457366004614e12565b610d66565b34801561046857600080fd5b5061041a610477366004614e40565b610d88565b34801561048857600080fd5b5061041a610497366004614e40565b610ed6565b3480156104a857600080fd5b506104bc6104b7366004614e12565b610f2a565b6040519081526020016103fc565b3480156104d657600080fd5b50607a546104e49060ff1681565b60405190151581526020016103fc565b34801561050057600080fd5b5061041a61050f366004614e40565b610f46565b34801561052057600080fd5b506104bc61052f366004614e12565b610f6c565b34801561054057600080fd5b506104bc60795481565b34801561055657600080fd5b5061041a610565366004614e5d565b6110b9565b34801561057657600080fd5b506104bc610585366004614e40565b6001600160a01b031660009081526076602052604090206001015490565b3480156105af57600080fd5b506066546105c49067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103fc565b3480156105e957600080fd5b506104bc6105f8366004614e40565b6001600160a01b031660009081526077602052604090205490565b34801561061f57600080fd5b506104e461062e366004614e12565b6110ec565b34801561063f57600080fd5b506104bc611108565b34801561065457600080fd5b5061041a610663366004614e40565b61113d565b34801561067457600080fd5b5061041a610683366004614ea1565b611283565b34801561069457600080fd5b506104bc60715481565b3480156106aa57600080fd5b5061041a6106b9366004614f11565b612000565b61041a6106cc366004614fba565b61209e565b3480156106dd57600080fd5b5061041a6106ec366004614e40565b6121d4565b3480156106fd57600080fd5b506070546103e8906001600160a01b031681565b34801561071d57600080fd5b506104bc612269565b34801561073257600080fd5b5061041a610741366004614e40565b61232e565b34801561075257600080fd5b50607a546103e89061010090046001600160a01b031681565b34801561077757600080fd5b5061041a610786366004614e40565b612366565b34801561079757600080fd5b506104bc6107a6366004614e12565b612460565b3480156107b757600080fd5b5060335460ff166104e4565b3480156107cf57600080fd5b506104e46107de366004614e40565b6001600160a01b031660009081526076602052604090206002015468010000000000000000900460ff1690565b34801561081757600080fd5b506073546104bc565b34801561082c57600080fd5b5061041a61083b366004615062565b612488565b34801561084c57600080fd5b506103e861085b3660046150b9565b6124bc565b34801561086c57600080fd5b506104bc60785481565b34801561088257600080fd5b506104bc60675481565b34801561089857600080fd5b5061041a6108a7366004615120565b6124f6565b3480156108b857600080fd5b5061041a6125e8565b3480156108cd57600080fd5b506108e16108dc366004614e12565b61260c565b6040516103fc9190615196565b3480156108fa57600080fd5b5061041a610909366004614e12565b6126dd565b34801561091a57600080fd5b506104bc60685481565b34801561093057600080fd5b5061041a61093f366004614e12565b6126ff565b61041a610952366004614fba565b612721565b34801561096357600080fd5b506104bc60655481565b34801561097957600080fd5b50610a10610988366004614e40565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152607660209081526040918290208251608081018452815481526001820154928101929092526002015467ffffffffffffffff8116928201929092526801000000000000000090910460ff161515606082015290565b6040516103fc9190815181526020808301519082015260408083015167ffffffffffffffff169082015260609182015115159181019190915260800190565b348015610a5b57600080fd5b5061041a610a6a3660046151f7565b612857565b348015610a7b57600080fd5b5061041a610a8a366004615214565b612882565b348015610a9b57600080fd5b50606d546103e8906001600160a01b031681565b348015610abb57600080fd5b5061041a610aca366004614e40565b6129d6565b348015610adb57600080fd5b50606e546103e8906001600160a01b031681565b348015610afb57600080fd5b50606c546103e8906001600160a01b031681565b348015610b1b57600080fd5b5061041a610b2a3660046150b9565b612a0e565b348015610b3b57600080fd5b506075546105c4565b348015610b5057600080fd5b506104e4610b5f366004614e12565b612aa2565b348015610b7057600080fd5b50606b546103e8906001600160a01b031681565b348015610b9057600080fd5b50610bdb610b9f366004614e40565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff81169068010000000000000000900460ff1684565b6040516103fc9493929190938452602084019290925267ffffffffffffffff1660408301521515606082015260800190565b348015610c1957600080fd5b506103e8612ad2565b348015610c2e57600080fd5b506104bc610c3d366004614e40565b6001600160a01b031660009081526076602052604090205490565b348015610c6457600080fd5b50606f546103e8906001600160a01b031681565b348015610c8457600080fd5b5061041a610c93366004615280565b612b5e565b348015610ca457600080fd5b506104e4610cb3366004614e40565b60726020526000908152604090205460ff1681565b348015610cd457600080fd5b50606a546103e8906001600160a01b031681565b348015610cf457600080fd5b5061041a610d03366004614e40565b612bcb565b348015610d1457600080fd5b5061041a610d23366004614e40565b612c6b565b610d30612de3565b60405160049060008051602061589083398151915290600090a2565b610d6281610d5984612e35565b60010154612e96565b5050565b6067819055604051600c9060008051602061589083398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e1a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e4c612f9b565b6001600160a01b031614610eb75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b60408051600080825260208201909252610ed391839190612fce565b50565b607a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03841602179055604051601f9060008051602061589083398151915290600090a250565b6000610f3582612e35565b5467ffffffffffffffff1692915050565b610f4f8161316e565b60405160079060008051602061589083398151915290600090a250565b60007f000000000000000000000000000000000000000000000000000000000000000015610ff6576000828152607b602052604090205480610ff05760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610e11565b92915050565b600061100183612e35565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061109c92909184916080840191600160c81b900416600281111561107857611078615162565b600281111561108957611089615162565b81526020016001820154815250506131c2565b54600160801b900467ffffffffffffffff1692915050565b919050565b6110c1613227565b6110cc82848361327b565b5060405160179060008051602061589083398151915290600090a2505050565b60006110f782612e35565b54600160c01b900460ff1692915050565b6000611112614d01565b6040805180820190915281815260016020820152600080611134818481613dde565b94505050505090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111ca5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111fc612f9b565b6001600160a01b0316146112675760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b60408051600080825260208201909252610ed391839190613e2a565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113105760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611342612f9b565b6001600160a01b0316146113ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b600054610100900460ff16158080156113cd5750600054600160ff909116105b806113e75750303b1580156113e7575060005460ff166001145b6114595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610e11565b6000805460ff19166001179055801561147c576000805461ff0019166101001790555b4360795561148d6020830183614e40565b606b80546001600160a01b0319166001600160a01b03929092169190911790556114ba6020830183614e40565b6001600160a01b03166347fb24c56114d86060850160408601614e40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561153857600080fd5b505af115801561154c573d6000803e3d6000fd5b5061155e925050506020830183614e40565b6001600160a01b0316634f61f85061157c6040850160208601614e40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b506115fe925050506060830160408401614e40565b606a80546001600160a01b0319166001600160a01b039290921691909117905561162e6080830160608401614e40565b606c80546001600160a01b0319166001600160a01b039290921691909117905561165b6020830183614e40565b6001600160a01b031663cee3d7286116796080850160608601614e40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b1580156116d957600080fd5b505af11580156116ed573d6000803e3d6000fd5b506117029250505060a0830160808401614e40565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361173760a0850160808601614e40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b791906152bd565b6118e0576117c86020830183614e40565b6001600160a01b03166347fb24c56117e660a0850160808601614e40565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561184657600080fd5b505af115801561185a573d6000803e3d6000fd5b5061186f9250505060a0830160808401614e40565b6001600160a01b031663cf8d56d660c085013561188f60e08701876152da565b6040518463ffffffff1660e01b81526004016118ad9392919061533f565b600060405180830381600087803b1580156118c757600080fd5b505af11580156118db573d6000803e3d6000fd5b505050505b6118f06040830160208401614e40565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119519190615375565b600003611a0b576119686040830160208401614e40565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b611a1d61012083016101008401614e40565b606e80546001600160a01b0319166001600160a01b0392909216919091179055611a4d60c0830160a08401614e40565b606980546001600160a01b0319166001600160a01b0392909216919091179055611a7a60208401846150b9565b6066805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560c083013560655560408301356067556060830135606855604b607155611ac1613fca565b6001600160a01b0316611ada60c0850160a08601614e40565b6001600160a01b031603611b305760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f455343524f575f41444d494e0000000000000000000000006044820152606401610e11565b611b4060a0840160808501614e40565b6001600160a01b0316611b5960c0850160a08601614e40565b6001600160a01b031603611baf5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f455343524f575f4f574e45520000000000000000000000006044820152606401610e11565b611bbf60c0840160a08501614e40565b606f80546001600160a01b0319166001600160a01b0392909216919091179055611bef6040840160208501614e40565b607080546001600160a01b0319166001600160a01b0392909216919091179055611c216102e084016102c08501614e40565b607a80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9092169190911790556000611c7c611c77368690038601610200870161545f565b613ff2565b604080516000602080830182905282840185905260608084018390528451808503909101815260808401808652815191830191909120606b547e84120c000000000000000000000000000000000000000000000000000000009092529451959650919485949385936001600160a01b0316926284120c926084808401938290030181865afa158015611d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d369190615375565b9050876102a001358103611d5257611d4f6001826154b3565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015286831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e486018290526101048601829052610124909501819052815192830182528083529482018590524367ffffffffffffffff1690820152600191810182905260a081019290925260808201529050611e4d8184614034565b611e55614d26565b611e68368b90038b016102008c0161545f565b60408083019190915260685460675460695460665493518a9489947fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb369794611ecd9489948e948d9493926001600160a01b03169167ffffffffffffffff90911690615546565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015611f6e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5e9190615375565b6000858152607b60205260409020555b6040805160608c0135815260c08c013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a1505050505050508015611ffb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b5050604051600292506000805160206158908339815191529150600090a25050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361212b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661215d612f9b565b6001600160a01b0316146121c85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b610d6282826001613e2a565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b5050604051601b92506000805160206158908339815191529150600090a250565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146123095760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610e11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b038316179055604051601c9060008051602061589083398151915290600090a250565b606c546001600160a01b03908116908216036123c45760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610e11565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b15801561242b57600080fd5b505af115801561243f573d6000803e3d6000fd5b5050604051600192506000805160206158908339815191529150600090a250565b600061246b82612e35565b5468010000000000000000900467ffffffffffffffff1692915050565b612490613227565b61249c8484848461416b565b60405160189060008051602061589083398151915290600090a250505050565b600060758267ffffffffffffffff16815481106124db576124db615625565b6000918252602090912001546001600160a01b031692915050565b6124fe613227565b8061254b5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610e11565b60005b818110156125c95761258583838381811061256b5761256b615625565b90506020020160208101906125809190614e40565b614382565b6125b683838381811061259a5761259a615625565b90506020020160208101906125af9190614e40565b600061448b565b50806125c18161563b565b91505061254e565b5060405160169060008051602061589083398151915290600090a25050565b6125f061455d565b60405160039060008051602061589083398151915290600090a2565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261264782612e35565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156126b7576126b7615162565b60028111156126c8576126c8615162565b81526020016001820154815250509050919050565b6068819055604051601a9060008051602061589083398151915290600090a250565b607181905560405160089060008051602061589083398151915290600090a250565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036127ae5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166127e0612f9b565b6001600160a01b03161461284b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b610d6282826001612fce565b607a805460ff1916821515179055604051601e9060008051602061589083398151915290600090a250565b826128cf5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610e11565b82811461291e5760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610e11565b60005b838110156129b55782828281811061293b5761293b615625565b905060200201602081019061295091906151f7565b6072600087878581811061296657612966615625565b905060200201602081019061297b9190614e40565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806129ad8161563b565b915050612921565b5060405160069060008051602061589083398151915290600090a250505050565b606980546001600160a01b0319166001600160a01b03831617905560405160209060008051602061589083398151915290600090a250565b60008167ffffffffffffffff1611612a685760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610e11565b6066805467ffffffffffffffff191667ffffffffffffffff831617905560405160099060008051602061589083398151915290600090a250565b60006001612aaf83612e35565b54600160c81b900460ff166002811115612acb57612acb615162565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b599190615673565b905090565b612b7782612b713686900386018661545f565b83613dde565b8414612bc55760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610e11565b50505050565b612bd3613fca565b6001600160a01b0316816001600160a01b031603612c335760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f455343524f570000000000000000000000000000000000006044820152606401610e11565b606f80546001600160a01b0319166001600160a01b03831617905560405160199060008051602061589083398151915290600090a250565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b158015612ce957600080fd5b505af1158015612cfd573d6000803e3d6000fd5b50506040516000925060008051602061589083398151915291508290a250565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612d8991906156b4565b600060405180830381855afa9150503d8060008114612dc4576040519150601f19603f3d011682016040523d82523d6000602084013e612dc9565b606091505b5091509150818015612ddc575080516020145b9250505090565b612deb613227565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600081612e845760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610e11565b50600090815260746020526040902090565b612f4d82356020840135612eb06060860160408701614e40565b612ec060808701606088016150b9565b612ed060a08801608089016150b9565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610d625760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610e11565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff161561300157611ffb8361459a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561305b575060408051601f3d908101601f1916820190925261305891810190615375565b60015b6130cd5760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610e11565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146131625760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610e11565b50611ffb83838361465b565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f613197613fca565b604080516001600160a01b03928316815291841660208301520160405180910390a1610ed381614680565b6000816080015160028111156131da576131da615162565b03610ed35760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610e11565b60335460ff166132795760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610e11565b565b600061328d60408501610d5985612e35565b60016132a1610220860161020087016156d0565b60028111156132b2576132b2615162565b14806132e0575060026132cd610220860161020087016156d0565b60028111156132de576132de615162565b145b61332c5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610e11565b8261334e853561334436889003880160e0890161545f565b6020880135613dde565b1461339b5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610e11565b60016133af610180860161016087016156d0565b60028111156133c0576133c0615162565b1461340d5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610e11565b600061341884612e35565b905060008080613439613434368a90038a016101808b016156eb565b614723565b90506000613452613434368b90038b0160e08c016156eb565b90508067ffffffffffffffff168267ffffffffffffffff1610156134b85760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610e11565b6134c860e08a0160c08b016150b9565b67ffffffffffffffff168267ffffffffffffffff16111561352b5760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610e11565b600261353f6102208b016102008c016156d0565b600281111561355057613550615162565b036135f957600061357261356d368c90038c016101808d016156eb565b614738565b67ffffffffffffffff1611156135f45761359260e08a0160c08b016150b9565b67ffffffffffffffff168267ffffffffffffffff16036135f45760405162461bcd60e51b815260206004820152601060248201527f504f534954494f4e5f544f4f5f464152000000000000000000000000000000006044820152606401610e11565b61374a565b600161360d6102208b016102008c016156d0565b600281111561361e5761361e615162565b036137025761363360e08a0160c08b016150b9565b67ffffffffffffffff168267ffffffffffffffff16146136955760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f46494e49534845445f494e424f58000000000000000000006044820152606401610e11565b6136ab61356d368b90038b016101808c016156eb565b67ffffffffffffffff16156135f45760405162461bcd60e51b815260206004820152601c60248201527f4e4f4e5f5a45524f5f46494e49534845445f504f535f494e5f4d5347000000006044820152606401610e11565b60405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5354415455530000000000000000000000000000000000006044820152606401610e11565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa1580156137ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cf9190615375565b9050808367ffffffffffffffff16111561382b5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610e11565b8061383c60e08c0160c08d016150b9565b67ffffffffffffffff1611156138945760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610e11565b808367ffffffffffffffff16036138b7576138b08160016154b3565b94506138bb565b8094505b8267ffffffffffffffff166000036139155760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610e11565b606b546001600160a01b03166316bf5579613931600186615707565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa15801561398e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b29190615375565b935050505060006139d88789610180018036038101906139d2919061545f565b84613dde565b9050858114806139e6575085155b613a325760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610e11565b6000613a3d82612e35565b54600160c81b900460ff166002811115613a5957613a59615162565b14613aa65760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610e11565b835460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015289831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a08301526001608083015250613ba485614747565b60008281526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115613cb157613cb1615162565b021790555060a0820151816001015590505087827fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb36978b8688606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051613d2f9796959493929190615793565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015613dd05760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc09190615375565b6000838152607b60205260409020555b5093505050505b9392505050565b6000613e2284613ded85613ff2565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b949350505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613e5d57611ffb836147d5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613eb7575060408051601f3d908101601f19168201909252613eb491810190615375565b60015b613f295760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610e11565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114613fbe5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610e11565b50611ffb838383614879565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612fbf565b600081602001516140068360000151614882565b60405160200161401792919061582d565b604051602081830303815290604052805190602001209050919050565b61403c614912565b6002608083018190525060008181526074602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b83600281111561415357614153615162565b021790555060a0919091015160019091015560735550565b600061417685612e35565b905060018154600160c81b900460ff16600281111561419757614197615162565b146141e45760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610e11565b6141f7846139d23686900386018661545f565b85146142455760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610e11565b600061425e614259368690038601866156eb565b614997565b90506000614279614274368790038701876156eb565b6149a2565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156142e057600080fd5b505af11580156142f4573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b03811660009081526076602052604090206002015468010000000000000000900460ff166143f95760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610e11565b6001600160a01b0381166000908152607660205260408120600101546073549091908214908061442884612e35565b5467ffffffffffffffff16119050818061443f5750805b612bc55760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610e11565b6001600160a01b03821660009081526076602052604081208054808411156144f55760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610e11565b60006145018583615849565b858455905061451086826149ae565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b614565614a53565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e183390565b6001600160a01b0381163b6146175760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610e11565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b61466483614aa6565b6000825111806146715750805b15611ffb57612bc58383614ae6565b6001600160a01b0381166146fc5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e11565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361463a565b6020810151600090815b602002015192915050565b6020810151600090600161472d565b805467ffffffffffffffff1660000361477757805467ffffffffffffffff19164367ffffffffffffffff16179055565b805468010000000000000000900467ffffffffffffffff16600003610ed35780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004367ffffffffffffffff1602179055565b6001600160a01b0381163b6148525760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610e11565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61463a565b61466483614b0b565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d01614017565b600054610100900460ff1661498f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e11565b613279614b4b565b80516000908161472d565b8051600090600161472d565b6001600160a01b038216600090815260776020526040812054906149d283836154b3565b6001600160a01b0385166000908152607760205260408120829055607880549293508592909190614a049084906154b3565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff16156132795760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610e11565b614aaf8161459a565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6060613dd783836040518060600160405280602781526020016158b060279139614bd4565b614b14816147d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff16614bc85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e11565b6033805460ff19169055565b60606001600160a01b0384163b614c535760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610e11565b600080856001600160a01b031685604051614c6e91906156b4565b600060405180830381855af49150503d8060008114614ca9576040519150601f19603f3d011682016040523d82523d6000602084013e614cae565b606091505b5091509150614cbe828286614cc8565b9695505050505050565b60608315614cd7575081613dd7565b825115614ce75782518084602001fd5b8160405162461bcd60e51b8152600401610e11919061585c565b6040518060400160405280614d14614d90565b8152602001614d21614d90565b905290565b6040518060600160405280614d76604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b8152602001614d83614dae565b8152602001614d21614dae565b60405180604001604052806002906020820280368337509192915050565b6040518060400160405280614dc1614d01565b81526020016000905290565b600060a08284031215614ddf57600080fd5b50919050565b60008060c08385031215614df857600080fd5b82359150614e098460208501614dcd565b90509250929050565b600060208284031215614e2457600080fd5b5035919050565b6001600160a01b0381168114610ed357600080fd5b600060208284031215614e5257600080fd5b8135613dd781614e2b565b6000806000838503610260811215614e7457600080fd5b84359350610220601f1982011215614e8b57600080fd5b5060208401915061024084013590509250925092565b600080828403610140811215614eb657600080fd5b833567ffffffffffffffff811115614ecd57600080fd5b84016103008187031215614ee057600080fd5b9250610120601f1982011215614ef557600080fd5b506020830190509250929050565b8015158114610ed357600080fd5b60008060408385031215614f2457600080fd5b8235614f2f81614e2b565b91506020830135614f3f81614f03565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614f8357614f83614f4a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614fb257614fb2614f4a565b604052919050565b60008060408385031215614fcd57600080fd5b8235614fd881614e2b565b915060208381013567ffffffffffffffff80821115614ff657600080fd5b818601915086601f83011261500a57600080fd5b81358181111561501c5761501c614f4a565b61502e84601f19601f84011601614f89565b9150808252878482850101111561504457600080fd5b80848401858401376000848284010152508093505050509250929050565b600080600080610100858703121561507957600080fd5b84359350602085013592506150918660408701614dcd565b9396929550929360e00135925050565b803567ffffffffffffffff811681146110b457600080fd5b6000602082840312156150cb57600080fd5b613dd7826150a1565b60008083601f8401126150e657600080fd5b50813567ffffffffffffffff8111156150fe57600080fd5b6020830191508360208260051b850101111561511957600080fd5b9250929050565b6000806020838503121561513357600080fd5b823567ffffffffffffffff81111561514a57600080fd5b615156858286016150d4565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610ed357634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff8084511683528060208501511660208401528060408501511660408401525060608301511515606083015260808301516151e081615178565b8060808401525060a083015160a083015292915050565b60006020828403121561520957600080fd5b8135613dd781614f03565b6000806000806040858703121561522a57600080fd5b843567ffffffffffffffff8082111561524257600080fd5b61524e888389016150d4565b9096509450602087013591508082111561526757600080fd5b50615274878288016150d4565b95989497509550505050565b600080600080610100858703121561529757600080fd5b843593506152a88660208701614dcd565b939693955050505060c08201359160e0013590565b6000602082840312156152cf57600080fd5b8151613dd781614f03565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261530f57600080fd5b83018035915067ffffffffffffffff82111561532a57600080fd5b60200191503681900382131561511957600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561538757600080fd5b5051919050565b6000608082840312156153a057600080fd5b6153a8614f60565b905082601f8301126153b957600080fd5b6153c1614f60565b8060408401858111156153d357600080fd5b845b818110156153ed5780358452602093840193016153d5565b5081845285605f86011261540057600080fd5b615408614f60565b9250829150608085018681111561541e57600080fd5b808210156154425761542f826150a1565b845260208401935060208201915061541e565b505060208301525092915050565b8035600381106110b457600080fd5b600060a0828403121561547157600080fd5b615479614f60565b615483848461538e565b815261549160808401615450565b60208201529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ff057610ff061549d565b6154cf81615178565b9052565b805180518360005b60028110156154fa5782518252602092830192909101906001016154db565b505050602090810151906040840160005b600281101561553257835167ffffffffffffffff168252928201929082019060010161550b565b50508201519050611ffb60808401826154c6565b60006102e082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c086015250505060208901516155c160e08401826154d3565b5060408901516155d56101808401826154d3565b50876102208301528661024083015285610260830152846102808301526156086102a08301856001600160a01b03169052565b67ffffffffffffffff83166102c083015298975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361566c5761566c61549d565b5060010190565b60006020828403121561568557600080fd5b8151613dd781614e2b565b60005b838110156156ab578181015183820152602001615693565b50506000910152565b600082516156c6818460208701615690565b9190910192915050565b6000602082840312156156e257600080fd5b613dd782615450565b6000608082840312156156fd57600080fd5b613dd7838361538e565b67ffffffffffffffff8281168282160390808211156157285761572861549d565b5092915050565b6040818337604082016040820160005b60028110156157705767ffffffffffffffff61575a836150a1565b168352602092830192919091019060010161573f565b50505061577f60808201615450565b61578881615178565b806080840152505050565b60006102e0820190508835825260208901356020830152604089013560408301526060890135606083015260808901356157cc81614e2b565b6001600160a01b031660808301526157e660a08a016150a1565b67ffffffffffffffff80821660a08501528061580460c08d016150a1565b1660c0850152505061581c60e0830160e08b0161572f565b6101806155d5818401828c0161572f565b61583683615178565b60f89290921b8252600182015260210190565b81810381811115610ff057610ff061549d565b602081526000825180602084015261587b816040850160208701615690565b601f01601f1916919091016040019291505056feea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a09815e16006900f23a083ea4f4b2d992caf017dcec80fde8a7e8ceb1c95c61f64736f6c63430008110033", + Bin: "0x60c0604052620000196200003660201b62002d1d1760201c565b15156080523060a0523480156200002f57600080fd5b5062000104565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b506000920191825250919050565b60805160a05161597e6200017e60003960008181610d9201528181610e1c01528181611147015281816111cc0152818161128d01528181611312015281816120a80152818161212d015281816122760152818161272b01526127b0015260008181610f7001528181611ed70152613dab015261597e6000f3fe6080604052600436106103c35760003560e01c80636db04dc1116101f2578063b7626e731161010d578063ee35f327116100a0578063facd743b1161006f578063facd743b14610c98578063fb0e722b14610cc8578063fc8ffa0314610ce8578063ff204f3b14610d0857600080fd5b8063ee35f32714610c0d578063ef40a67014610c22578063f065de3f14610c58578063f9cee9df14610c7857600080fd5b8063dff69787116100dc578063dff6978714610b2f578063e531d8c714610b44578063e78cea9214610b64578063e8bd492214610b8457600080fd5b8063b7626e7314610aaf578063bc45e0ae14610acf578063ce11e6ab14610aef578063ce66d05c14610b0f57600080fd5b80638ee1a12611610185578063a23c44b111610154578063a23c44b11461096d578063a2b4f1d814610a4f578063a3ffb77214610a6f578063aa38a6e714610a8f57600080fd5b80638ee1a1261461090e578063948d6588146109245780639846129a146109445780639a8a05921461095757600080fd5b80637c75c298116101c15780637c75c2981461088c5780638456cb59146108ac57806388302884146108c157806389384960146108ee57600080fd5b80636db04dc1146108205780636ddd37441461084057806371ef232c1461086057806376e7e23b1461087657600080fd5b8063353325e0116102e257806352d1902d1161027557806356bbc9e61161024457806356bbc9e61461078b5780635c975abb146107ab5780636177fd18146107c357806365f7f80d1461080b57600080fd5b806352d1902d1461071157806353b60c4a1461072657806355840a5814610746578063567ca41b1461076b57600080fd5b806347fb24c5116102b157806347fb24c51461069e5780634f1ef286146106be5780634f61f850146106d157806351ed6a30146106f157600080fd5b8063353325e0146106335780633659cfe6146106485780633c41ebcd1461066857806345e38b641461068857600080fd5b806313af40351161035a5780632abdd230116103295780632abdd2301461056a5780632e7acfa6146105a35780632f30cabd146105dd578063308362281461061357600080fd5b806313af4035146104f457806313c56ca7146105145780631b1689e91461053457806320fa7e221461054a57600080fd5b80630d40a0fd116103965780630d40a0fd1461045c5780630d561b371461047c578063117155851461049c57806312ab3d3b146104ca57600080fd5b8063023a96fe146103c8578063046f7da21461040557806304972af91461041c57806306ae58511461043c575b600080fd5b3480156103d457600080fd5b506069546103e8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041157600080fd5b5061041a610d28565b005b34801561042857600080fd5b5061041a610437366004614e57565b610d4c565b34801561044857600080fd5b5061041a610457366004614e84565b610d66565b34801561046857600080fd5b5061041a610477366004614eb2565b610d88565b34801561048857600080fd5b5061041a610497366004614eb2565b610ed6565b3480156104a857600080fd5b506104bc6104b7366004614e84565b610f2a565b6040519081526020016103fc565b3480156104d657600080fd5b50607a546104e49060ff1681565b60405190151581526020016103fc565b34801561050057600080fd5b5061041a61050f366004614eb2565b610f46565b34801561052057600080fd5b506104bc61052f366004614e84565b610f6c565b34801561054057600080fd5b506104bc60795481565b34801561055657600080fd5b5061041a610565366004614ecf565b6110b9565b34801561057657600080fd5b506104bc610585366004614eb2565b6001600160a01b031660009081526076602052604090206001015490565b3480156105af57600080fd5b506066546105c49067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103fc565b3480156105e957600080fd5b506104bc6105f8366004614eb2565b6001600160a01b031660009081526077602052604090205490565b34801561061f57600080fd5b506104e461062e366004614e84565b6110ec565b34801561063f57600080fd5b506104bc611108565b34801561065457600080fd5b5061041a610663366004614eb2565b61113d565b34801561067457600080fd5b5061041a610683366004614f13565b611283565b34801561069457600080fd5b506104bc60715481565b3480156106aa57600080fd5b5061041a6106b9366004614f83565b612000565b61041a6106cc36600461502c565b61209e565b3480156106dd57600080fd5b5061041a6106ec366004614eb2565b6121d4565b3480156106fd57600080fd5b506070546103e8906001600160a01b031681565b34801561071d57600080fd5b506104bc612269565b34801561073257600080fd5b5061041a610741366004614eb2565b61232e565b34801561075257600080fd5b50607a546103e89061010090046001600160a01b031681565b34801561077757600080fd5b5061041a610786366004614eb2565b612366565b34801561079757600080fd5b506104bc6107a6366004614e84565b612460565b3480156107b757600080fd5b5060335460ff166104e4565b3480156107cf57600080fd5b506104e46107de366004614eb2565b6001600160a01b031660009081526076602052604090206002015468010000000000000000900460ff1690565b34801561081757600080fd5b506073546104bc565b34801561082c57600080fd5b5061041a61083b3660046150d4565b612488565b34801561084c57600080fd5b506103e861085b36600461512b565b6124bc565b34801561086c57600080fd5b506104bc60785481565b34801561088257600080fd5b506104bc60675481565b34801561089857600080fd5b5061041a6108a7366004615192565b6124f6565b3480156108b857600080fd5b5061041a6125e8565b3480156108cd57600080fd5b506108e16108dc366004614e84565b61260c565b6040516103fc9190615208565b3480156108fa57600080fd5b5061041a610909366004614e84565b6126dd565b34801561091a57600080fd5b506104bc60685481565b34801561093057600080fd5b5061041a61093f366004614e84565b6126ff565b61041a61095236600461502c565b612721565b34801561096357600080fd5b506104bc60655481565b34801561097957600080fd5b50610a10610988366004614eb2565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152607660209081526040918290208251608081018452815481526001820154928101929092526002015467ffffffffffffffff8116928201929092526801000000000000000090910460ff161515606082015290565b6040516103fc9190815181526020808301519082015260408083015167ffffffffffffffff169082015260609182015115159181019190915260800190565b348015610a5b57600080fd5b5061041a610a6a366004615269565b612857565b348015610a7b57600080fd5b5061041a610a8a366004615286565b612882565b348015610a9b57600080fd5b50606d546103e8906001600160a01b031681565b348015610abb57600080fd5b5061041a610aca366004614eb2565b6129d6565b348015610adb57600080fd5b50606e546103e8906001600160a01b031681565b348015610afb57600080fd5b50606c546103e8906001600160a01b031681565b348015610b1b57600080fd5b5061041a610b2a36600461512b565b612a0e565b348015610b3b57600080fd5b506075546105c4565b348015610b5057600080fd5b506104e4610b5f366004614e84565b612aa2565b348015610b7057600080fd5b50606b546103e8906001600160a01b031681565b348015610b9057600080fd5b50610bdb610b9f366004614eb2565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff81169068010000000000000000900460ff1684565b6040516103fc9493929190938452602084019290925267ffffffffffffffff1660408301521515606082015260800190565b348015610c1957600080fd5b506103e8612ad2565b348015610c2e57600080fd5b506104bc610c3d366004614eb2565b6001600160a01b031660009081526076602052604090205490565b348015610c6457600080fd5b50606f546103e8906001600160a01b031681565b348015610c8457600080fd5b5061041a610c933660046152f2565b612b5e565b348015610ca457600080fd5b506104e4610cb3366004614eb2565b60726020526000908152604090205460ff1681565b348015610cd457600080fd5b50606a546103e8906001600160a01b031681565b348015610cf457600080fd5b5061041a610d03366004614eb2565b612bcb565b348015610d1457600080fd5b5061041a610d23366004614eb2565b612c6b565b610d30612de3565b60405160049060008051602061590283398151915290600090a2565b610d6281610d5984612e35565b60010154612e96565b5050565b6067819055604051600c9060008051602061590283398151915290600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e1a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e4c612f9b565b6001600160a01b031614610eb75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b60408051600080825260208201909252610ed391839190612fce565b50565b607a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03841602179055604051601f9060008051602061590283398151915290600090a250565b6000610f3582612e35565b5467ffffffffffffffff1692915050565b610f4f8161316e565b60405160079060008051602061590283398151915290600090a250565b60007f000000000000000000000000000000000000000000000000000000000000000015610ff6576000828152607b602052604090205480610ff05760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610e11565b92915050565b600061100183612e35565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061109c92909184916080840191600160c81b9004166002811115611078576110786151d4565b6002811115611089576110896151d4565b81526020016001820154815250506131c2565b54600160801b900467ffffffffffffffff1692915050565b919050565b6110c1613227565b6110cc82848361327b565b5060405160179060008051602061590283398151915290600090a2505050565b60006110f782612e35565b54600160c01b900460ff1692915050565b6000611112614d73565b6040805180820190915281815260016020820152600080611134818481613e50565b94505050505090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111ca5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111fc612f9b565b6001600160a01b0316146112675760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b60408051600080825260208201909252610ed391839190613e9c565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113105760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611342612f9b565b6001600160a01b0316146113ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b600054610100900460ff16158080156113cd5750600054600160ff909116105b806113e75750303b1580156113e7575060005460ff166001145b6114595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610e11565b6000805460ff19166001179055801561147c576000805461ff0019166101001790555b4360795561148d6020830183614eb2565b606b80546001600160a01b0319166001600160a01b03929092169190911790556114ba6020830183614eb2565b6001600160a01b03166347fb24c56114d86060850160408601614eb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561153857600080fd5b505af115801561154c573d6000803e3d6000fd5b5061155e925050506020830183614eb2565b6001600160a01b0316634f61f85061157c6040850160208601614eb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b506115fe925050506060830160408401614eb2565b606a80546001600160a01b0319166001600160a01b039290921691909117905561162e6080830160608401614eb2565b606c80546001600160a01b0319166001600160a01b039290921691909117905561165b6020830183614eb2565b6001600160a01b031663cee3d7286116796080850160608601614eb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b1580156116d957600080fd5b505af11580156116ed573d6000803e3d6000fd5b506117029250505060a0830160808401614eb2565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361173760a0850160808601614eb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b7919061532f565b6118e0576117c86020830183614eb2565b6001600160a01b03166347fb24c56117e660a0850160808601614eb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561184657600080fd5b505af115801561185a573d6000803e3d6000fd5b5061186f9250505060a0830160808401614eb2565b6001600160a01b031663cf8d56d660c085013561188f60e087018761534c565b6040518463ffffffff1660e01b81526004016118ad939291906153b1565b600060405180830381600087803b1580156118c757600080fd5b505af11580156118db573d6000803e3d6000fd5b505050505b6118f06040830160208401614eb2565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195191906153e7565b600003611a0b576119686040830160208401614eb2565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b611a1d61012083016101008401614eb2565b606e80546001600160a01b0319166001600160a01b0392909216919091179055611a4d60c0830160a08401614eb2565b606980546001600160a01b0319166001600160a01b0392909216919091179055611a7a602084018461512b565b6066805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560c083013560655560408301356067556060830135606855604b607155611ac161403c565b6001600160a01b0316611ada60c0850160a08601614eb2565b6001600160a01b031603611b305760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f455343524f575f41444d494e0000000000000000000000006044820152606401610e11565b611b4060a0840160808501614eb2565b6001600160a01b0316611b5960c0850160a08601614eb2565b6001600160a01b031603611baf5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f455343524f575f4f574e45520000000000000000000000006044820152606401610e11565b611bbf60c0840160a08501614eb2565b606f80546001600160a01b0319166001600160a01b0392909216919091179055611bef6040840160208501614eb2565b607080546001600160a01b0319166001600160a01b0392909216919091179055611c216102e084016102c08501614eb2565b607a80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9092169190911790556000611c7c611c7736869003860161020087016154d1565b614064565b604080516000602080830182905282840185905260608084018390528451808503909101815260808401808652815191830191909120606b547e84120c000000000000000000000000000000000000000000000000000000009092529451959650919485949385936001600160a01b0316926284120c926084808401938290030181865afa158015611d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3691906153e7565b9050876102a001358103611d5257611d4f600182615525565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015286831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e486018290526101048601829052610124909501819052815192830182528083529482018590524367ffffffffffffffff1690820152600191810182905260a081019290925260808201529050611e4d81846140a6565b611e55614d98565b611e68368b90038b016102008c016154d1565b60408083019190915260685460675460695460665493518a9489947fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb369794611ecd9489948e948d9493926001600160a01b03169167ffffffffffffffff909116906155b8565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015611f6e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5e91906153e7565b6000858152607b60205260409020555b6040805160608c0135815260c08c013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a1505050505050508015611ffb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b5050604051600292506000805160206159028339815191529150600090a25050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361212b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661215d612f9b565b6001600160a01b0316146121c85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b610d6282826001613e9c565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b5050604051601b92506000805160206159028339815191529150600090a250565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146123095760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610e11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b038316179055604051601c9060008051602061590283398151915290600090a250565b606c546001600160a01b03908116908216036123c45760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610e11565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b15801561242b57600080fd5b505af115801561243f573d6000803e3d6000fd5b5050604051600192506000805160206159028339815191529150600090a250565b600061246b82612e35565b5468010000000000000000900467ffffffffffffffff1692915050565b612490613227565b61249c848484846141dd565b60405160189060008051602061590283398151915290600090a250505050565b600060758267ffffffffffffffff16815481106124db576124db615697565b6000918252602090912001546001600160a01b031692915050565b6124fe613227565b8061254b5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610e11565b60005b818110156125c95761258583838381811061256b5761256b615697565b90506020020160208101906125809190614eb2565b6143f4565b6125b683838381811061259a5761259a615697565b90506020020160208101906125af9190614eb2565b60006144fd565b50806125c1816156ad565b91505061254e565b5060405160169060008051602061590283398151915290600090a25050565b6125f06145cf565b60405160039060008051602061590283398151915290600090a2565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261264782612e35565b6040805160c081018252825467ffffffffffffffff808216835268010000000000000000820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156126b7576126b76151d4565b60028111156126c8576126c86151d4565b81526020016001820154815250509050919050565b6068819055604051601a9060008051602061590283398151915290600090a250565b607181905560405160089060008051602061590283398151915290600090a250565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036127ae5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610e11565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166127e0612f9b565b6001600160a01b03161461284b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610e11565b610d6282826001612fce565b607a805460ff1916821515179055604051601e9060008051602061590283398151915290600090a250565b826128cf5760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610e11565b82811461291e5760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610e11565b60005b838110156129b55782828281811061293b5761293b615697565b90506020020160208101906129509190615269565b6072600087878581811061296657612966615697565b905060200201602081019061297b9190614eb2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806129ad816156ad565b915050612921565b5060405160069060008051602061590283398151915290600090a250505050565b606980546001600160a01b0319166001600160a01b03831617905560405160209060008051602061590283398151915290600090a250565b60008167ffffffffffffffff1611612a685760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610e11565b6066805467ffffffffffffffff191667ffffffffffffffff831617905560405160099060008051602061590283398151915290600090a250565b60006001612aaf83612e35565b54600160c81b900460ff166002811115612acb57612acb6151d4565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5991906156e5565b905090565b612b7782612b71368690038601866154d1565b83613e50565b8414612bc55760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610e11565b50505050565b612bd361403c565b6001600160a01b0316816001600160a01b031603612c335760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f455343524f570000000000000000000000000000000000006044820152606401610e11565b606f80546001600160a01b0319166001600160a01b03831617905560405160199060008051602061590283398151915290600090a250565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b158015612ce957600080fd5b505af1158015612cfd573d6000803e3d6000fd5b50506040516000925060008051602061590283398151915291508290a250565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612d899190615726565b600060405180830381855afa9150503d8060008114612dc4576040519150601f19603f3d011682016040523d82523d6000602084013e612dc9565b606091505b5091509150818015612ddc575080516020145b9250505090565b612deb613227565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600081612e845760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610e11565b50600090815260746020526040902090565b612f4d82356020840135612eb06060860160408701614eb2565b612ec0608087016060880161512b565b612ed060a088016080890161512b565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610d625760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610e11565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff161561300157611ffb8361460c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561305b575060408051601f3d908101601f19168201909252613058918101906153e7565b60015b6130cd5760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610e11565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146131625760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610e11565b50611ffb8383836146cd565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61319761403c565b604080516001600160a01b03928316815291841660208301520160405180910390a1610ed3816146f2565b6000816080015160028111156131da576131da6151d4565b03610ed35760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610e11565b60335460ff166132795760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610e11565b565b600061328d60408501610d5985612e35565b60016132a161022086016102008701615742565b60028111156132b2576132b26151d4565b14806132e0575060026132cd61022086016102008701615742565b60028111156132de576132de6151d4565b145b61332c5760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610e11565b8261334e853561334436889003880160e089016154d1565b6020880135613e50565b1461339b5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610e11565b60016133af61018086016101608701615742565b60028111156133c0576133c06151d4565b1461340d5760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610e11565b600061341884612e35565b905060008080613439613434368a90038a016101808b0161575d565b614795565b90506000613452613434368b90038b0160e08c0161575d565b90508067ffffffffffffffff168267ffffffffffffffff1610156134b85760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610e11565b6134c860e08a0160c08b0161512b565b67ffffffffffffffff168267ffffffffffffffff16111561352b5760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610e11565b67ffffffffffffffff811661354660e08b0160c08c0161512b565b67ffffffffffffffff161161359d5760405162461bcd60e51b815260206004820152601460248201527f4e4558545f494e424f585f4241434b57415244530000000000000000000000006044820152606401610e11565b60026135b16102208b016102008c01615742565b60028111156135c2576135c26151d4565b0361366b5760006135e46135df368c90038c016101808d0161575d565b6147aa565b67ffffffffffffffff1611156136665761360460e08a0160c08b0161512b565b67ffffffffffffffff168267ffffffffffffffff16036136665760405162461bcd60e51b815260206004820152601060248201527f504f534954494f4e5f544f4f5f464152000000000000000000000000000000006044820152606401610e11565b6137bc565b600161367f6102208b016102008c01615742565b6002811115613690576136906151d4565b03613774576136a560e08a0160c08b0161512b565b67ffffffffffffffff168267ffffffffffffffff16146137075760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f46494e49534845445f494e424f58000000000000000000006044820152606401610e11565b61371d6135df368b90038b016101808c0161575d565b67ffffffffffffffff16156136665760405162461bcd60e51b815260206004820152601c60248201527f4e4f4e5f5a45524f5f46494e49534845445f504f535f494e5f4d5347000000006044820152606401610e11565b60405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5354415455530000000000000000000000000000000000006044820152606401610e11565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561381d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384191906153e7565b9050808367ffffffffffffffff16111561389d5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610e11565b806138ae60e08c0160c08d0161512b565b67ffffffffffffffff1611156139065760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610e11565b808367ffffffffffffffff160361392957613922816001615525565b945061392d565b8094505b8267ffffffffffffffff166000036139875760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610e11565b606b546001600160a01b03166316bf55796139a3600186615779565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015613a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2491906153e7565b93505050506000613a4a878961018001803603810190613a4491906154d1565b84613e50565b905085811480613a58575085155b613aa45760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610e11565b6000613aaf82612e35565b54600160c81b900460ff166002811115613acb57613acb6151d4565b14613b185760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610e11565b835460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015289831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a08301526001608083015250613c16856147b9565b60008281526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115613d2357613d236151d4565b021790555060a0820151816001015590505087827fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb36978b8688606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051613da19796959493929190615805565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015613e425760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3291906153e7565b6000838152607b60205260409020555b5093505050505b9392505050565b6000613e9484613e5f85614064565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b949350505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613ecf57611ffb83614847565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613f29575060408051601f3d908101601f19168201909252613f26918101906153e7565b60015b613f9b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610e11565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146140305760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610e11565b50611ffb8383836148eb565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612fbf565b6000816020015161407883600001516148f4565b60405160200161408992919061589f565b604051602081830303815290604052805190602001209050919050565b6140ae614984565b6002608083018190525060008181526074602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff96831668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b8360028111156141c5576141c56151d4565b021790555060a0919091015160019091015560735550565b60006141e885612e35565b905060018154600160c81b900460ff166002811115614209576142096151d4565b146142565760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610e11565b61426984613a44368690038601866154d1565b85146142b75760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610e11565b60006142d06142cb3686900386018661575d565b614a09565b905060006142eb6142e63687900387018761575d565b614a14565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b15801561435257600080fd5b505af1158015614366573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b03811660009081526076602052604090206002015468010000000000000000900460ff1661446b5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610e11565b6001600160a01b0381166000908152607660205260408120600101546073549091908214908061449a84612e35565b5467ffffffffffffffff1611905081806144b15750805b612bc55760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610e11565b6001600160a01b03821660009081526076602052604081208054808411156145675760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610e11565b600061457385836158bb565b85845590506145828682614a20565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b6145d7614ac5565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e183390565b6001600160a01b0381163b6146895760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610e11565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6146d683614b18565b6000825111806146e35750805b15611ffb57612bc58383614b58565b6001600160a01b03811661476e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e11565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036146ac565b6020810151600090815b602002015192915050565b6020810151600090600161479f565b805467ffffffffffffffff166000036147e957805467ffffffffffffffff19164367ffffffffffffffff16179055565b805468010000000000000000900467ffffffffffffffff16600003610ed35780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004367ffffffffffffffff1602179055565b6001600160a01b0381163b6148c45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610e11565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6146ac565b6146d683614b7d565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d01614089565b600054610100900460ff16614a015760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e11565b613279614bbd565b80516000908161479f565b8051600090600161479f565b6001600160a01b03821660009081526077602052604081205490614a448383615525565b6001600160a01b0385166000908152607760205260408120829055607880549293508592909190614a76908490615525565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff16156132795760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610e11565b614b218161460c565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6060613e49838360405180606001604052806027815260200161592260279139614c46565b614b8681614847565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff16614c3a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610e11565b6033805460ff19169055565b60606001600160a01b0384163b614cc55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610e11565b600080856001600160a01b031685604051614ce09190615726565b600060405180830381855af49150503d8060008114614d1b576040519150601f19603f3d011682016040523d82523d6000602084013e614d20565b606091505b5091509150614d30828286614d3a565b9695505050505050565b60608315614d49575081613e49565b825115614d595782518084602001fd5b8160405162461bcd60e51b8152600401610e1191906158ce565b6040518060400160405280614d86614e02565b8152602001614d93614e02565b905290565b6040518060600160405280614de8604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b8152602001614df5614e20565b8152602001614d93614e20565b60405180604001604052806002906020820280368337509192915050565b6040518060400160405280614e33614d73565b81526020016000905290565b600060a08284031215614e5157600080fd5b50919050565b60008060c08385031215614e6a57600080fd5b82359150614e7b8460208501614e3f565b90509250929050565b600060208284031215614e9657600080fd5b5035919050565b6001600160a01b0381168114610ed357600080fd5b600060208284031215614ec457600080fd5b8135613e4981614e9d565b6000806000838503610260811215614ee657600080fd5b84359350610220601f1982011215614efd57600080fd5b5060208401915061024084013590509250925092565b600080828403610140811215614f2857600080fd5b833567ffffffffffffffff811115614f3f57600080fd5b84016103008187031215614f5257600080fd5b9250610120601f1982011215614f6757600080fd5b506020830190509250929050565b8015158114610ed357600080fd5b60008060408385031215614f9657600080fd5b8235614fa181614e9d565b91506020830135614fb181614f75565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614ff557614ff5614fbc565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561502457615024614fbc565b604052919050565b6000806040838503121561503f57600080fd5b823561504a81614e9d565b915060208381013567ffffffffffffffff8082111561506857600080fd5b818601915086601f83011261507c57600080fd5b81358181111561508e5761508e614fbc565b6150a084601f19601f84011601614ffb565b915080825287848285010111156150b657600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008061010085870312156150eb57600080fd5b84359350602085013592506151038660408701614e3f565b9396929550929360e00135925050565b803567ffffffffffffffff811681146110b457600080fd5b60006020828403121561513d57600080fd5b613e4982615113565b60008083601f84011261515857600080fd5b50813567ffffffffffffffff81111561517057600080fd5b6020830191508360208260051b850101111561518b57600080fd5b9250929050565b600080602083850312156151a557600080fd5b823567ffffffffffffffff8111156151bc57600080fd5b6151c885828601615146565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610ed357634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff808451168352806020850151166020840152806040850151166040840152506060830151151560608301526080830151615252816151ea565b8060808401525060a083015160a083015292915050565b60006020828403121561527b57600080fd5b8135613e4981614f75565b6000806000806040858703121561529c57600080fd5b843567ffffffffffffffff808211156152b457600080fd5b6152c088838901615146565b909650945060208701359150808211156152d957600080fd5b506152e687828801615146565b95989497509550505050565b600080600080610100858703121561530957600080fd5b8435935061531a8660208701614e3f565b939693955050505060c08201359160e0013590565b60006020828403121561534157600080fd5b8151613e4981614f75565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261538157600080fd5b83018035915067ffffffffffffffff82111561539c57600080fd5b60200191503681900382131561518b57600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156153f957600080fd5b5051919050565b60006080828403121561541257600080fd5b61541a614fd2565b905082601f83011261542b57600080fd5b615433614fd2565b80604084018581111561544557600080fd5b845b8181101561545f578035845260209384019301615447565b5081845285605f86011261547257600080fd5b61547a614fd2565b9250829150608085018681111561549057600080fd5b808210156154b4576154a182615113565b8452602084019350602082019150615490565b505060208301525092915050565b8035600381106110b457600080fd5b600060a082840312156154e357600080fd5b6154eb614fd2565b6154f58484615400565b8152615503608084016154c2565b60208201529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ff057610ff061550f565b615541816151ea565b9052565b805180518360005b600281101561556c57825182526020928301929091019060010161554d565b505050602090810151906040840160005b60028110156155a457835167ffffffffffffffff168252928201929082019060010161557d565b50508201519050611ffb6080840182615538565b60006102e082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c0860152505050602089015161563360e0840182615545565b506040890151615647610180840182615545565b508761022083015286610240830152856102608301528461028083015261567a6102a08301856001600160a01b03169052565b67ffffffffffffffff83166102c083015298975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036156de576156de61550f565b5060010190565b6000602082840312156156f757600080fd5b8151613e4981614e9d565b60005b8381101561571d578181015183820152602001615705565b50506000910152565b60008251615738818460208701615702565b9190910192915050565b60006020828403121561575457600080fd5b613e49826154c2565b60006080828403121561576f57600080fd5b613e498383615400565b67ffffffffffffffff82811682821603908082111561579a5761579a61550f565b5092915050565b6040818337604082016040820160005b60028110156157e25767ffffffffffffffff6157cc83615113565b16835260209283019291909101906001016157b1565b5050506157f1608082016154c2565b6157fa816151ea565b806080840152505050565b60006102e08201905088358252602089013560208301526040890135604083015260608901356060830152608089013561583e81614e9d565b6001600160a01b0316608083015261585860a08a01615113565b67ffffffffffffffff80821660a08501528061587660c08d01615113565b1660c0850152505061588e60e0830160e08b016157a1565b610180615647818401828c016157a1565b6158a8836151ea565b60f89290921b8252600182015260210190565b81810381811115610ff057610ff061550f565b60208152600082518060208401526158ed816040850160208701615702565b601f01601f1916919091016040019291505056feea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208a547ab9334862a17eb08b02689d4ae35b7b686aa828eeb048d2c3e5ddd9e52d64736f6c63430008110033", } // RollupAdminLogicABI is the input ABI used to generate the binding from. @@ -14924,7 +14924,7 @@ func (_RollupCore *RollupCoreFilterer) ParseUserWithdrawableFundsUpdated(log typ // RollupCreatorMetaData contains all meta data concerning the RollupCreator contract. var RollupCreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rollupAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inboxAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"adminProxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"RollupCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"TemplatesUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeCreator\",\"outputs\":[{\"internalType\":\"contractBridgeCreator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManagerTemplate\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"miniStakeValue\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"genesisExecutionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevel\",\"type\":\"uint256\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_batchPoster\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"disableValidatorWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"maxDataSize\",\"type\":\"uint256\"}],\"name\":\"createRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"osp\",\"outputs\":[{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupAdminLogic\",\"outputs\":[{\"internalType\":\"contractIRollupAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupUserLogic\",\"outputs\":[{\"internalType\":\"contractIRollupUser\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractBridgeCreator\",\"name\":\"_bridgeCreator\",\"type\":\"address\"},{\"internalType\":\"contractIOneStepProofEntry\",\"name\":\"_osp\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"_challengeManagerLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupAdmin\",\"name\":\"_rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"_rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_validatorWalletCreator\",\"type\":\"address\"}],\"name\":\"setTemplates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6142988061007e6000396000f3fe60806040523480156200001157600080fd5b5060043610620000d95760003560e01c80639dba3241116200008b578063f26a62c61162000062578063f26a62c61462000191578063f2fde38b14620001a5578063f860cefa14620001bc57600080fd5b80639dba32411462000152578063bc45e0ae1462000166578063e0aadcd5146200017a57600080fd5b80638da5cb5b11620000c05780638da5cb5b14620001015780639c683d10146200012a5780639d4798e3146200013e57600080fd5b806301183c8914620000de578063715018a614620000f7575b600080fd5b620000f5620000ef36600462000ead565b620001d0565b005b620000f562000285565b6000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6003546200010e906001600160a01b031681565b6005546200010e906001600160a01b031681565b6004546200010e906001600160a01b031681565b6006546200010e906001600160a01b031681565b6200010e6200018b3660046200129d565b6200029d565b6002546200010e906001600160a01b031681565b620000f5620001b63660046200145b565b62000b82565b6001546200010e906001600160a01b031681565b620001da62000c18565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0389811691909117909255600280548216888416179055600380548216878416179055600480548216868416179055600580548216858416179055600680549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a1505050505050565b6200028f62000c18565b6200029b600062000c74565b565b600154604080517fe6027a8700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163e6027a879160048083019260209291908290030181865afa15801562000301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000327919062001482565b6001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b9190620014a2565b8214620003df5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d415443480000000000000060448201526064015b60405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b0316637ba0e8576040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000459919062001482565b6001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620014a2565b82146200050d5760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003d6565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e08201529051620005589062000e5b565b604051809103906000f08015801562000575573d6000803e3d6000fd5b506001600160a01b0390811660a0830181905260808901516040517ff2fde38b000000000000000000000000000000000000000000000000000000008152921660048301529063f2fde38b90602401600060405180830381600087803b158015620005df57600080fd5b505af1158015620005f4573d6000803e3d6000fd5b50505050866040516020016200060b9190620016fb565b604051602081830303815290604052805190602001206040516200062f9062000e69565b8190604051809103906000f590508015801562000650573d6000803e3d6000fd5b506001600160a01b0390811680835260015460a08401516101208b01516040517f6c6e47c00000000000000000000000000000000000000000000000000000000081529290941693636c6e47c093620006af9390919060040162001710565b60a0604051808303816000875af1158015620006cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f591906200175f565b6001600160a01b0390811660e0870152908116608086015290811660208501529081166040840152166060820152805160a08201516200073791908962000cdc565b6001600160a01b0390811660c08084019182526080808b01805130909152855160408051610120810182526060808a015189168252828a015189166020808401919091528a015189168284015260e0808b01518a1691830191909152858a01518916958201959095529551871660a087015260048054881695870195909552600554871693860193909352600654861661010086015291517fda1821180000000000000000000000000000000000000000000000000000000081529094919091169263da182118926200080e928d929101620017df565b600060405180830381600087803b1580156200082957600080fd5b505af11580156200083e573d6000803e3d6000fd5b505050506001600160a01b03871615620008d65760408083015190517f6e7df3e70000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526001602483015290911690636e7df3e790604401600060405180830381600087803b158015620008bc57600080fd5b505af1158015620008d1573d6000803e3d6000fd5b505050505b855115620009f6576000865167ffffffffffffffff811115620008fd57620008fd62000f3c565b60405190808252806020026020018201604052801562000927578160200160208202803683370190505b50905060005b8751811015620009735760018282815181106200094e576200094e620018c7565b91151560209283029190910190910152806200096a81620018dd565b9150506200092d565b5082516040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a3ffb77290620009c0908a90859060040162001924565b600060405180830381600087803b158015620009db57600080fd5b505af1158015620009f0573d6000803e3d6000fd5b50505050505b84151560010362000a7b5781516040517fa2b4f1d800000000000000000000000000000000000000000000000000000000815286151560048201526001600160a01b039091169063a2b4f1d890602401600060405180830381600087803b15801562000a6157600080fd5b505af115801562000a76573d6000803e3d6000fd5b505050505b81516040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906313af403590602401600060405180830381600087803b15801562000adb57600080fd5b505af115801562000af0573d6000803e3d6000fd5b5050505081600001516001600160a01b03167f9376ee483c428b938c96990123ffefe7d47b059702b14e367c4d7a35582d1fc983602001518460a001518560400151866060015160405162000b6e94939291906001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a250519695505050505050565b62000b8c62000c18565b6001600160a01b03811662000c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620003d6565b62000c158162000c74565b50565b6000546001600160a01b031633146200029b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003d6565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60035460405160009182916001600160a01b0390911690859062000d009062000e77565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000d43573d6000803e3d6000fd5b509050806001600160a01b0316632f4a3065868560000151600260009054906101000a90046001600160a01b03168761014001518861016001518961018001518a602001518b61010001518c608001518d61020001516040518b63ffffffff1660e01b815260040162000e1e9a999897969594939291906001600160a01b039a8b16815267ffffffffffffffff9990991660208a015296891660408901526060880195909552608087019390935260a0860191909152851660c085015260e08401529092166101008201526101208101919091526101400190565b600060405180830381600087803b15801562000e3957600080fd5b505af115801562000e4e573d6000803e3d6000fd5b5092979650505050505050565b61080b80620019af83390190565b6111d680620021ba83390190565b610ed3806200339083390190565b6001600160a01b038116811462000c1557600080fd5b803562000ea88162000e85565b919050565b60008060008060008060c0878903121562000ec757600080fd5b863562000ed48162000e85565b9550602087013562000ee68162000e85565b9450604087013562000ef88162000e85565b9350606087013562000f0a8162000e85565b9250608087013562000f1c8162000e85565b915060a087013562000f2e8162000e85565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171562000f785762000f7862000f3c565b60405290565b604051610220810167ffffffffffffffff8111828210171562000f785762000f7862000f3c565b604051601f8201601f1916810167ffffffffffffffff8111828210171562000fd15762000fd162000f3c565b604052919050565b803567ffffffffffffffff8116811462000ea857600080fd5b600082601f8301126200100457600080fd5b813567ffffffffffffffff81111562001021576200102162000f3c565b620010366020601f19601f8401160162000fa5565b8181528460208386010111156200104c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156200107c57600080fd5b6040516080810181811067ffffffffffffffff82111715620010a257620010a262000f3c565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112620010e557600080fd5b620010ef62000f52565b8060408401858111156200110257600080fd5b845b818110156200112757620011188162000fd9565b84526020938401930162001104565b509095945050505050565b80356003811062000ea857600080fd5b600081830360a08112156200115657600080fd5b6200116062000f52565b915060808112156200117157600080fd5b506200117c62000f52565b83601f8401126200118c57600080fd5b6200119662000f52565b806040850186811115620011a957600080fd5b855b81811015620011c5578035845260209384019301620011ab565b50818452620011d58782620010d3565b60208501525050508152620011ed6080830162001132565b602082015292915050565b600082601f8301126200120a57600080fd5b8135602067ffffffffffffffff82111562001229576200122962000f3c565b8160051b6200123a82820162000fa5565b92835284810182019282810190878511156200125557600080fd5b83870192505b8483101562001281578235620012718162000e85565b825291830191908301906200125b565b979650505050505050565b8035801515811462000ea857600080fd5b600080600080600060a08688031215620012b657600080fd5b853567ffffffffffffffff80821115620012cf57600080fd5b90870190610300828a031215620012e557600080fd5b620012ef62000f7e565b620012fa8362000fd9565b81526200130a6020840162000e9b565b60208201526040830135604082015260608301356060820152620013316080840162000e9b565b60808201526200134460a0840162000e9b565b60a082015260c083013560c082015260e0830135828111156200136657600080fd5b620013748b82860162000ff2565b60e0830152506101008381013590820152610120620013968b82860162001069565b908201526101a0838101356101408301526101c0808501356101608401526101e080860135610180850152610200620013d28e82890162001142565b848601526102a087013583860152620013ef6102c0880162000e9b565b828601526102e0870135818601525050505080975050620014136020890162000e9b565b955060408801359150808211156200142a57600080fd5b506200143988828901620011f8565b9350506200144a606087016200128c565b949793965091946080013592915050565b6000602082840312156200146e57600080fd5b81356200147b8162000e85565b9392505050565b6000602082840312156200149557600080fd5b81516200147b8162000e85565b600060208284031215620014b557600080fd5b5051919050565b6000815180845260005b81811015620014e457602081850181015186830182015201620014c6565b506000602082860101526020601f19601f83011685010191505092915050565b600381106200152357634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015620015505782518252602092830192909101906001016200152f565b505050602090810151906040840160005b60028110156200158a57835167ffffffffffffffff168252928201929082019060010162001561565b50508201519050620015a0608084018262001504565b505050565b805167ffffffffffffffff16825260006103006020830151620015d360208601826001600160a01b03169052565b50604083015160408501526060830151606085015260808301516200160360808601826001600160a01b03169052565b5060a08301516200161f60a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e08601526200164382860182620014bc565b610100858101519087015261012080860151805182890152602081015161014089015260408101516101608901526060810151610180890152919350915050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e083818901528287015193506102009250620016ca8389018562001527565b908601516102a08801528501516001600160a01b03166102c0870152909301516102e0909401939093525090919050565b6020815260006200147b6020830184620015a5565b6001600160a01b0384811682528316602082015260c08101620017576040830184805182526020810151602083015260408101516040830152606081015160608301525050565b949350505050565b600080600080600060a086880312156200177857600080fd5b8551620017858162000e85565b6020870151909550620017988162000e85565b6040870151909450620017ab8162000e85565b6060870151909350620017be8162000e85565b6080870151909250620017d18162000e85565b809150509295509295909350565b6000610140808352620017f581840186620015a5565b9150506001600160a01b03835116602083015260208301516200182360408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100620018aa818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050509392505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200191d57634e487b7160e01b600052601160045260246000fd5b5060010190565b604080825283519082018190526000906020906060840190828701845b82811015620019685781516001600160a01b03168452928401929084019060010162001941565b5050508381038285015284518082528583019183019060005b81811015620019a157835115158352928401929184019160010162001981565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61078d8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610579565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d161022e565b005b3480156100df57600080fd5b506100d16100ee36600461059d565b610242565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f366004610605565b6102c3565b34801561013057600080fd5b506100d161013f36600461059d565b61034b565b34801561015057600080fd5b506100d161015f366004610579565b61039a565b34801561017057600080fd5b506100a061017f366004610579565b610449565b6000806000836001600160a01b03166040516101c3907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d80600081146101fe576040519150601f19603f3d011682016040523d82523d6000602084013e610203565b606091505b50915091508161021257600080fd5b8080602001905181019061022691906106db565b949350505050565b610236610488565b61024060006104fc565b565b61024a610488565b6040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102a757600080fd5b505af11580156102bb573d6000803e3d6000fd5b505050505050565b6102cb610488565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef28690349061031490869086906004016106f8565b6000604051808303818588803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b5050505050505050565b610353610488565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690633659cfe69060240161028d565b6103a2610488565b6001600160a01b03811661043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610446816104fc565b50565b6000806000836001600160a01b03166040516101c3907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000546001600160a01b03163314610240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610434565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461044657600080fd5b60006020828403121561058b57600080fd5b813561059681610564565b9392505050565b600080604083850312156105b057600080fd5b82356105bb81610564565b915060208301356105cb81610564565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561061a57600080fd5b833561062581610564565b9250602084013561063581610564565b9150604084013567ffffffffffffffff8082111561065257600080fd5b818601915086601f83011261066657600080fd5b813581811115610678576106786105d6565b604051601f8201601f19908116603f011681019083821181831017156106a0576106a06105d6565b816040528281528960208487010111156106b957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156106ed57600080fd5b815161059681610564565b6001600160a01b038316815260006020604081840152835180604085015260005b8181101561073557858101830151858201606001528201610719565b506000606082860101526060601f19601f83011685010192505050939250505056fea2646970667358221220b5f17b9b80290312697ad0c26141bee28c1a1e448364e9044054c3ec2b5708bd64736f6c63430008110033608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220843c6e515889d3fec9a41f64c5723ea42199269a763404bdbdd7216bfcb9ba0464736f6c63430008110033608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207c7a5f08b6b5546bee369eb72839c3110d9699871671202eaaf29bed85c0cfed64736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6142f18061007e6000396000f3fe60806040523480156200001157600080fd5b5060043610620000d95760003560e01c80639dba3241116200008b578063f26a62c61162000062578063f26a62c61462000191578063f2fde38b14620001a5578063f860cefa14620001bc57600080fd5b80639dba32411462000152578063bc45e0ae1462000166578063e0aadcd5146200017a57600080fd5b80638da5cb5b11620000c05780638da5cb5b14620001015780639c683d10146200012a5780639d4798e3146200013e57600080fd5b806301183c8914620000de578063715018a614620000f7575b600080fd5b620000f5620000ef36600462000eb5565b620001d0565b005b620000f562000285565b6000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6003546200010e906001600160a01b031681565b6005546200010e906001600160a01b031681565b6004546200010e906001600160a01b031681565b6006546200010e906001600160a01b031681565b6200010e6200018b366004620012a5565b6200029d565b6002546200010e906001600160a01b031681565b620000f5620001b636600462001463565b62000b8a565b6001546200010e906001600160a01b031681565b620001da62000c20565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0389811691909117909255600280548216888416179055600380548216878416179055600480548216868416179055600580548216858416179055600680549091169183169190911790556040517fc9d3947d22fa124aaec4c7e8c919f79016e2d7b48eee10568375d98b86460d1b90600090a1505050505050565b6200028f62000c20565b6200029b600062000c7c565b565b600154604080517fe6027a8700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163e6027a879160048083019260209291908290030181865afa15801562000301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032791906200148a565b6001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b9190620014aa565b8214620003df5760405162461bcd60e51b815260206004820152601960248201527f53495f4d41585f444154415f53495a455f4d49534d415443480000000000000060448201526064015b60405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b0316637ba0e8576040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045991906200148a565b6001600160a01b031663e8eb1dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620014aa565b82146200050d5760405162461bcd60e51b815260206004820152601860248201527f495f4d41585f444154415f53495a455f4d49534d4154434800000000000000006044820152606401620003d6565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e08201529051620005589062000e63565b604051809103906000f08015801562000575573d6000803e3d6000fd5b506001600160a01b0390811660a0830181905260808901516040517ff2fde38b000000000000000000000000000000000000000000000000000000008152921660048301529063f2fde38b90602401600060405180830381600087803b158015620005df57600080fd5b505af1158015620005f4573d6000803e3d6000fd5b5050505086868686866040516020016200061395949392919062001749565b60405160208183030381529060405280519060200120604051620006379062000e71565b8190604051809103906000f590508015801562000658573d6000803e3d6000fd5b506001600160a01b0390811680835260015460a08401516101208b01516040517f6c6e47c00000000000000000000000000000000000000000000000000000000081529290941693636c6e47c093620006b79390919060040162001796565b60a0604051808303816000875af1158015620006d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006fd9190620017e5565b6001600160a01b0390811660e0870152908116608086015290811660208501529081166040840152166060820152805160a08201516200073f91908962000ce4565b6001600160a01b0390811660c08084019182526080808b01805130909152855160408051610120810182526060808a015189168252828a015189166020808401919091528a015189168284015260e0808b01518a1691830191909152858a01518916958201959095529551871660a087015260048054881695870195909552600554871693860193909352600654861661010086015291517fda1821180000000000000000000000000000000000000000000000000000000081529094919091169263da1821189262000816928d92910162001865565b600060405180830381600087803b1580156200083157600080fd5b505af115801562000846573d6000803e3d6000fd5b505050506001600160a01b03871615620008de5760408083015190517f6e7df3e70000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526001602483015290911690636e7df3e790604401600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050505b855115620009fe576000865167ffffffffffffffff81111562000905576200090562000f44565b6040519080825280602002602001820160405280156200092f578160200160208202803683370190505b50905060005b87518110156200097b5760018282815181106200095657620009566200194d565b9115156020928302919091019091015280620009728162001963565b91505062000935565b5082516040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a3ffb77290620009c8908a908590600401620019aa565b600060405180830381600087803b158015620009e357600080fd5b505af1158015620009f8573d6000803e3d6000fd5b50505050505b84151560010362000a835781516040517fa2b4f1d800000000000000000000000000000000000000000000000000000000815286151560048201526001600160a01b039091169063a2b4f1d890602401600060405180830381600087803b15801562000a6957600080fd5b505af115801562000a7e573d6000803e3d6000fd5b505050505b81516040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906313af403590602401600060405180830381600087803b15801562000ae357600080fd5b505af115801562000af8573d6000803e3d6000fd5b5050505081600001516001600160a01b03167f9376ee483c428b938c96990123ffefe7d47b059702b14e367c4d7a35582d1fc983602001518460a001518560400151866060015160405162000b7694939291906001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a250519695505050505050565b62000b9462000c20565b6001600160a01b03811662000c125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620003d6565b62000c1d8162000c7c565b50565b6000546001600160a01b031633146200029b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003d6565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60035460405160009182916001600160a01b0390911690859062000d089062000e7f565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000d4b573d6000803e3d6000fd5b509050806001600160a01b0316632f4a3065868560000151600260009054906101000a90046001600160a01b03168761014001518861016001518961018001518a602001518b61010001518c608001518d61020001516040518b63ffffffff1660e01b815260040162000e269a999897969594939291906001600160a01b039a8b16815267ffffffffffffffff9990991660208a015296891660408901526060880195909552608087019390935260a0860191909152851660c085015260e08401529092166101008201526101208101919091526101400190565b600060405180830381600087803b15801562000e4157600080fd5b505af115801562000e56573d6000803e3d6000fd5b5092979650505050505050565b61080b8062001a0883390190565b6111d6806200221383390190565b610ed380620033e983390190565b6001600160a01b038116811462000c1d57600080fd5b803562000eb08162000e8d565b919050565b60008060008060008060c0878903121562000ecf57600080fd5b863562000edc8162000e8d565b9550602087013562000eee8162000e8d565b9450604087013562000f008162000e8d565b9350606087013562000f128162000e8d565b9250608087013562000f248162000e8d565b915060a087013562000f368162000e8d565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171562000f805762000f8062000f44565b60405290565b604051610220810167ffffffffffffffff8111828210171562000f805762000f8062000f44565b604051601f8201601f1916810167ffffffffffffffff8111828210171562000fd95762000fd962000f44565b604052919050565b803567ffffffffffffffff8116811462000eb057600080fd5b600082601f8301126200100c57600080fd5b813567ffffffffffffffff81111562001029576200102962000f44565b6200103e6020601f19601f8401160162000fad565b8181528460208386010111156200105457600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156200108457600080fd5b6040516080810181811067ffffffffffffffff82111715620010aa57620010aa62000f44565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112620010ed57600080fd5b620010f762000f5a565b8060408401858111156200110a57600080fd5b845b818110156200112f57620011208162000fe1565b8452602093840193016200110c565b509095945050505050565b80356003811062000eb057600080fd5b600081830360a08112156200115e57600080fd5b6200116862000f5a565b915060808112156200117957600080fd5b506200118462000f5a565b83601f8401126200119457600080fd5b6200119e62000f5a565b806040850186811115620011b157600080fd5b855b81811015620011cd578035845260209384019301620011b3565b50818452620011dd8782620010db565b60208501525050508152620011f5608083016200113a565b602082015292915050565b600082601f8301126200121257600080fd5b8135602067ffffffffffffffff82111562001231576200123162000f44565b8160051b6200124282820162000fad565b92835284810182019282810190878511156200125d57600080fd5b83870192505b8483101562001289578235620012798162000e8d565b8252918301919083019062001263565b979650505050505050565b8035801515811462000eb057600080fd5b600080600080600060a08688031215620012be57600080fd5b853567ffffffffffffffff80821115620012d757600080fd5b90870190610300828a031215620012ed57600080fd5b620012f762000f86565b620013028362000fe1565b8152620013126020840162000ea3565b60208201526040830135604082015260608301356060820152620013396080840162000ea3565b60808201526200134c60a0840162000ea3565b60a082015260c083013560c082015260e0830135828111156200136e57600080fd5b6200137c8b82860162000ffa565b60e08301525061010083810135908201526101206200139e8b82860162001071565b908201526101a0838101356101408301526101c0808501356101608401526101e080860135610180850152610200620013da8e8289016200114a565b848601526102a087013583860152620013f76102c0880162000ea3565b828601526102e08701358186015250505050809750506200141b6020890162000ea3565b955060408801359150808211156200143257600080fd5b50620014418882890162001200565b935050620014526060870162001294565b949793965091946080013592915050565b6000602082840312156200147657600080fd5b8135620014838162000e8d565b9392505050565b6000602082840312156200149d57600080fd5b8151620014838162000e8d565b600060208284031215620014bd57600080fd5b5051919050565b6000815180845260005b81811015620014ec57602081850181015186830182015201620014ce565b506000602082860101526020601f19601f83011685010191505092915050565b600381106200152b57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b60028110156200155857825182526020928301929091019060010162001537565b505050602090810151906040840160005b60028110156200159257835167ffffffffffffffff168252928201929082019060010162001569565b50508201519050620015a860808401826200150c565b505050565b805167ffffffffffffffff16825260006103006020830151620015db60208601826001600160a01b03169052565b50604083015160408501526060830151606085015260808301516200160b60808601826001600160a01b03169052565b5060a08301516200162760a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e08601526200164b82860182620014c4565b610100858101519087015261012080860151805182890152602081015161014089015260408101516101608901526060810151610180890152919350915050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e083818901528287015193506102009250620016d2838901856200152f565b908601516102a08801528501516001600160a01b03166102c0870152909301516102e0909401939093525090919050565b600081518084526020808501945080840160005b838110156200173e5781516001600160a01b03168752958201959082019060010162001717565b509495945050505050565b60a0815260006200175e60a0830188620015ad565b6001600160a01b0387166020840152828103604084015262001781818762001703565b94151560608401525050608001529392505050565b6001600160a01b0384811682528316602082015260c08101620017dd6040830184805182526020810151602083015260408101516040830152606081015160608301525050565b949350505050565b600080600080600060a08688031215620017fe57600080fd5b85516200180b8162000e8d565b60208701519095506200181e8162000e8d565b6040870151909450620018318162000e8d565b6060870151909350620018448162000e8d565b6080870151909250620018578162000e8d565b809150509295509295909350565b60006101408083526200187b81840186620015ad565b9150506001600160a01b0383511660208301526020830151620018a960408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e083015161010062001930818501836001600160a01b03169052565b8401516001600160a01b0381166101208501529050509392505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620019a357634e487b7160e01b600052601160045260246000fd5b5060010190565b604081526000620019bf604083018562001703565b82810360208481019190915284518083528582019282019060005b81811015620019fa578451151583529383019391830191600101620019da565b509097965050505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61078d8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610579565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d161022e565b005b3480156100df57600080fd5b506100d16100ee36600461059d565b610242565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f366004610605565b6102c3565b34801561013057600080fd5b506100d161013f36600461059d565b61034b565b34801561015057600080fd5b506100d161015f366004610579565b61039a565b34801561017057600080fd5b506100a061017f366004610579565b610449565b6000806000836001600160a01b03166040516101c3907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d80600081146101fe576040519150601f19603f3d011682016040523d82523d6000602084013e610203565b606091505b50915091508161021257600080fd5b8080602001905181019061022691906106db565b949350505050565b610236610488565b61024060006104fc565b565b61024a610488565b6040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102a757600080fd5b505af11580156102bb573d6000803e3d6000fd5b505050505050565b6102cb610488565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef28690349061031490869086906004016106f8565b6000604051808303818588803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b5050505050505050565b610353610488565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152831690633659cfe69060240161028d565b6103a2610488565b6001600160a01b03811661043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610446816104fc565b50565b6000806000836001600160a01b03166040516101c3907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b6000546001600160a01b03163314610240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610434565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461044657600080fd5b60006020828403121561058b57600080fd5b813561059681610564565b9392505050565b600080604083850312156105b057600080fd5b82356105bb81610564565b915060208301356105cb81610564565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561061a57600080fd5b833561062581610564565b9250602084013561063581610564565b9150604084013567ffffffffffffffff8082111561065257600080fd5b818601915086601f83011261066657600080fd5b813581811115610678576106786105d6565b604051601f8201601f19908116603f011681019083821181831017156106a0576106a06105d6565b816040528281528960208487010111156106b957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156106ed57600080fd5b815161059681610564565b6001600160a01b038316815260006020604081840152835180604085015260005b8181101561073557858101830151858201606001528201610719565b506000606082860101526060601f19601f83011685010192505050939250505056fea2646970667358221220b5f17b9b80290312697ad0c26141bee28c1a1e448364e9044054c3ec2b5708bd64736f6c63430008110033608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201515ad57cf082a66aa89d652f160f96241ce5a7f55cc28ad76590a621709786764736f6c63430008110033608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d05d589f4e10636a90d58bfbf44226b8ad532c4ba8801dbb8c1ab51429a12bb364736f6c63430008110033", } // RollupCreatorABI is the input ABI used to generate the binding from. @@ -16419,7 +16419,7 @@ func (_RollupEventInbox *RollupEventInboxFilterer) ParseInboxMessageDeliveredFro // RollupLibMetaData contains all meta data concerning the RollupLib contract. var RollupLibMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dfabf54e1efb78b7c03e342a1bb30c2eb31a1f41a1b9a9dda27ab42703fbdd8e64736f6c63430008110033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f41cdbc024ca68e28af7f37af4453fb4e820ed750e9815188c54717d8c40122864736f6c63430008110033", } // RollupLibABI is the input ABI used to generate the binding from. @@ -16592,7 +16592,7 @@ func (_RollupLib *RollupLibTransactorRaw) Transact(opts *bind.TransactOpts, meth // RollupProxyMetaData contains all meta data concerning the RollupProxy contract. var RollupProxyMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"stakeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseStake\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loserStakeEscrow\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"chainConfig\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"miniStakeValue\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delayBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delaySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"futureSeconds\",\"type\":\"uint256\"}],\"internalType\":\"structISequencerInbox.MaxTimeVariation\",\"name\":\"sequencerInboxMaxTimeVariation\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBlockEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroBigStepEdgeHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"layerZeroSmallStepEdgeHeight\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"genesisExecutionState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"genesisInboxCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"anyTrustFastConfirmer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"numBigStepLevel\",\"type\":\"uint256\"}],\"internalType\":\"structConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIBridge\",\"name\":\"bridge\",\"type\":\"address\"},{\"internalType\":\"contractISequencerInbox\",\"name\":\"sequencerInbox\",\"type\":\"address\"},{\"internalType\":\"contractIInbox\",\"name\":\"inbox\",\"type\":\"address\"},{\"internalType\":\"contractIOutbox\",\"name\":\"outbox\",\"type\":\"address\"},{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"rollupEventInbox\",\"type\":\"address\"},{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rollupAdminLogic\",\"type\":\"address\"},{\"internalType\":\"contractIRollupUser\",\"name\":\"rollupUserLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validatorWalletCreator\",\"type\":\"address\"}],\"internalType\":\"structContractDependencies\",\"name\":\"connectedContracts\",\"type\":\"tuple\"}],\"name\":\"initializeProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220843c6e515889d3fec9a41f64c5723ea42199269a763404bdbdd7216bfcb9ba0464736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b506111b6806100206000396000f3fe6080604052600436106100225760003560e01c8063da1821181461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610c74565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d7929190610f8b565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c41ebcd0000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046110f3565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a6611114565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6110f3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff611114565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e6110f3565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d1461045857610458611114565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161115a60279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf919061112a565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c9190611146565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610220810167ffffffffffffffff8111828210171561094157610941610908565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f8301126109cf57600080fd5b813567ffffffffffffffff808211156109ea576109ea610908565b604051601f8301601f19908116603f01168101908282118183101715610a1257610a12610908565b81604052838152866020858801011115610a2b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610a5d57600080fd5b6040516080810181811067ffffffffffffffff82111715610a8057610a80610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610ac257600080fd5b610aca61091e565b806040840185811115610adc57600080fd5b845b81811015610afd57610aef8161098f565b845260209384019301610ade565b509095945050505050565b80356003811061029c57600080fd5b600081830360a0811215610b2a57600080fd5b610b3261091e565b91506080811215610b4257600080fd5b50610b4b61091e565b83601f840112610b5a57600080fd5b610b6261091e565b806040850186811115610b7457600080fd5b855b81811015610b8e578035845260209384019301610b76565b50818452610b9c8782610ab1565b60208501525050508152610bb260808301610b08565b602082015292915050565b60006101208284031215610bd057600080fd5b610bd8610947565b9050610be3826109a7565b8152610bf1602083016109a7565b6020820152610c02604083016109a7565b6040820152610c13606083016109a7565b6060820152610c24608083016109a7565b6080820152610c3560a083016109a7565b60a0820152610c4660c083016109a7565b60c0820152610c5760e083016109a7565b60e0820152610100610c6a8184016109a7565b9082015292915050565b600080610140808486031215610c8957600080fd5b833567ffffffffffffffff80821115610ca157600080fd5b908501906103008288031215610cb657600080fd5b610cbe61096b565b610cc78361098f565b8152610cd5602084016109a7565b60208201526040830135604082015260608301356060820152610cfa608084016109a7565b6080820152610d0b60a084016109a7565b60a082015260c083013560c082015260e083013582811115610d2c57600080fd5b610d38898286016109be565b60e08301525061010083810135908201526101209150610d5a88838501610a4b565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610d968a828701610b17565b848401526102a085013586840152610db16102c086016109a7565b828401526102e085013581840152505080955050505050610dd58460208501610bbd565b90509250929050565b60005b83811015610df9578181015183820152602001610de1565b50506000910152565b60008151808452610e1a816020860160208601610dde565b601f01601f19169290920160200192915050565b60038110610e4c57634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b6002811015610e77578251825260209283019290910190600101610e58565b505050602090810151906040840160005b6002811015610eaf57835167ffffffffffffffff1682529282019290820190600101610e88565b505082015190506102c56080840182610e2e565b6001600160a01b03808251168352806020830151166020840152806040830151166040840152506060810151610f0460608401826001600160a01b03169052565b506080810151610f1f60808401826001600160a01b03169052565b5060a0810151610f3a60a08401826001600160a01b03169052565b5060c0810151610f5560c08401826001600160a01b03169052565b5060e0810151610f7060e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b6000610140808352610fa9818401865167ffffffffffffffff169052565b6020850151610160610fc5818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c0611001818901866001600160a01b03169052565b60a08a015194506101e061101f818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c01519650610300806102208c015261104d6104408c0189610e02565b6101008e01516102408d01526101208e015180516102608e015260208101516102808e015260408101516102a08e0152606001516102c08d0152988d01516102e08c0152868d0151908b0152848c01516103208b0152838c01519796506110b86103408b0189610e50565b918b01516103e08a01528a01516001600160a01b03166104008901528901516104208801525091935061082492505060208401905084610ec3565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825161113c818460208701610dde565b9190910192915050565b6020815260006106486020830184610e0256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201515ad57cf082a66aa89d652f160f96241ce5a7f55cc28ad76590a621709786764736f6c63430008110033", } // RollupProxyABI is the input ABI used to generate the binding from. @@ -17395,7 +17395,7 @@ func (_RollupProxy *RollupProxyFilterer) ParseUpgradedSecondary(log types.Log) ( // RollupReaderMetaData contains all meta data concerning the RollupReader contract. var RollupReaderMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"_rollup\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nodeNum\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentNodeHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"executionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structIOldRollup.Assertion\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"NodeCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeNum\",\"type\":\"uint64\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"challengeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"confirmData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"prevNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"deadlineBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"noChildConfirmedBeforeBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"stakerCount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"childStakerCount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"latestChildNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"nodeHash\",\"type\":\"bytes32\"}],\"internalType\":\"structNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"latestStakedNode\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"currentChallenge\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"internalType\":\"structOldStaker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollup\",\"outputs\":[{\"internalType\":\"contractIOldRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea26469706673582212200a66ed548b0359418351f421377373236fb891bd07482855213d9c3d78acb8c164736f6c63430008110033", + Bin: "0x60a060405234801561001057600080fd5b50604051610be3380380610be383398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610b206100c3600039600081816101a5015281816101f6015281816102b601528181610333015281816104500152818161051b0152818161058a0152818161060e01526106a50152610b206000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101a0578063dff69787146101c7578063facd743b146101cf57600080fd5b8063a23c44b11461012f578063bc45e0ae1461019857600080fd5b806365f7f80d146100a85780636ddd3744146100ce5780638ee1a126146100f957806392c8134c1461010f575b600080fd5b6100b06101f2565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6100e16100dc36600461072b565b61027b565b6040516001600160a01b0390911681526020016100c5565b61010161032f565b6040519081526020016100c5565b61012261011d36600461072b565b6103b3565b6040516100c5919061074f565b61014261013d366004610868565b6104bc565b6040516100c59190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100e1610586565b6100e17f000000000000000000000000000000000000000000000000000000000000000081565b6100b061060a565b6101e26101dd366004610868565b61066a565b60405190151581526020016100c5565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102769190610895565b905090565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa158015610305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032991906108b2565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108cf565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610939565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610a1b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027691906108b2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610252573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103299190610acf565b67ffffffffffffffff8116811461072857600080fd5b50565b60006020828403121561073d57600080fd5b813561074881610712565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161078b606084018267ffffffffffffffff169052565b5060808301516107a7608084018267ffffffffffffffff169052565b5060a08301516107c360a084018267ffffffffffffffff169052565b5060c08301516107df60c084018267ffffffffffffffff169052565b5060e08301516107fb60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b038116811461072857600080fd5b60006020828403121561087a57600080fd5b813561074881610853565b805161089081610712565b919050565b6000602082840312156108a757600080fd5b815161074881610712565b6000602082840312156108c457600080fd5b815161074881610853565b6000602082840312156108e157600080fd5b5051919050565b604051610180810167ffffffffffffffff81118282101715610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610180828403121561094c57600080fd5b6109546108e8565b82518152602083015160208201526040830151604082015261097860608401610885565b606082015261098960808401610885565b608082015261099a60a08401610885565b60a08201526109ab60c08401610885565b60c08201526109bc60e08401610885565b60e08201526101006109cf818501610885565b908201526101206109e1848201610885565b908201526101406109f3848201610885565b90820152610160928301519281019290925250919050565b8051801515811461089057600080fd5b600060a08284031215610a2d57600080fd5b60405160a0810181811067ffffffffffffffff82111715610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610a8c81610712565b60208201526040830151610a9f81610712565b60408201526060830151610ab281610712565b6060820152610ac360808401610a0b565b60808201529392505050565b600060208284031215610ae157600080fd5b61074882610a0b56fea264697066735822122035e03977b5029ddf76de0c2e7f12a3cb4fb9c84fdcc8078c4aaecfe9a087f19264736f6c63430008110033", } // RollupReaderABI is the input ABI used to generate the binding from. @@ -18014,7 +18014,7 @@ func (_RollupReader *RollupReaderFilterer) ParseNodeCreated(log types.Log) (*Rol // RollupUserLogicMetaData contains all meta data concerning the RollupUserLogic contract. var RollupUserLogicMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sendRoot\",\"type\":\"bytes32\"}],\"name\":\"AssertionConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"afterInboxBatchAcc\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"}],\"name\":\"AssertionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"challengeIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asserter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"challengedAssertion\",\"type\":\"uint64\"}],\"name\":\"RollupChallengeStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"machineHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"RollupInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"UpgradedSecondary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserStakeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalBalance\",\"type\":\"uint256\"}],\"name\":\"UserWithdrawableFundsUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VALIDATOR_AFK_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_stakerMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"addToDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"amountStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anyTrustFastConfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"contractIBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeManager\",\"outputs\":[{\"internalType\":\"contractIEdgeChallengeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"computeAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"winningEdgeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"prevConfig\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"confirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentAssertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"confirmState\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"fastConfirmAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"fastConfirmNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisAssertionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertion\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"firstChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"secondChildBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"createdAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isFirstChild\",\"type\":\"bool\"},{\"internalType\":\"enumAssertionStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configHash\",\"type\":\"bytes32\"}],\"internalType\":\"structAssertionNode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getAssertionCreationBlockForLogLookup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getFirstChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"getSecondChildCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getStaker\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountStaked\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"latestStakedAssertion\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isStaked\",\"type\":\"bool\"}],\"internalType\":\"structIRollupCore.Staker\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"stakerNum\",\"type\":\"uint64\"}],\"name\":\"getStakerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contractIInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakeToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isFirstChild\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"}],\"name\":\"isPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfirmed\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"latestStakedAssertion\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loserStakeEscrow\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAssertionPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"newStakeOnNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outbox\",\"outputs\":[{\"internalType\":\"contractIOutbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"target\",\"type\":\"uint256\"}],\"name\":\"reduceDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelistAfterFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeWhitelistAfterValidatorAfk\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"returnOldDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupDeploymentBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEventInbox\",\"outputs\":[{\"internalType\":\"contractIRollupEventInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerInbox\",\"outputs\":[{\"internalType\":\"contractISequencerInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"prevPrevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerBatchAcc\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"internalType\":\"structBeforeStateData\",\"name\":\"beforeStateData\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"beforeState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"afterState\",\"type\":\"tuple\"}],\"internalType\":\"structAssertionInputs\",\"name\":\"assertion\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"expectedAssertionHash\",\"type\":\"bytes32\"}],\"name\":\"stakeOnNewAssertion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakerCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"prevAssertionHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxAcc\",\"type\":\"bytes32\"}],\"name\":\"validateAssertionHash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"wasmModuleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challengeManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"confirmPeriodBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextInboxPosition\",\"type\":\"uint64\"}],\"internalType\":\"structConfigData\",\"name\":\"configData\",\"type\":\"tuple\"}],\"name\":\"validateConfig\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWalletCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorWhitelistDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wasmModuleRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawStakerFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"withdrawableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60e0604052620000196200003a60201b62001ba81760201c565b15156080523060a0524660c0523480156200003357600080fd5b5062000108565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200007a9190620000d7565b600060405180830381855afa9150503d8060008114620000b7576040519150601f19603f3d011682016040523d82523d6000602084013e620000bc565b606091505b5091509150818015620000d0575080516020145b9250505090565b6000825160005b81811015620000fa5760208186018101518583015201620000de565b506000920191825250919050565b60805160a05160c0516143c76200014d60003960006118020152600081816112c301528181611878015261190e0152600081816108e40152612a8e01526143c76000f3fe608060405234801561001057600080fd5b50600436106103625760003560e01c80636b00cea9116101c8578063c2c2e68e11610104578063ee35f327116100a2578063f3f0a03e1161007c578063f3f0a03e1461084e578063f9cee9df14610861578063facd743b14610874578063fb0e722b1461089757600080fd5b8063ee35f3271461080a578063ef40a67014610812578063f065de3f1461083b57600080fd5b8063dff69787116100de578063dff6978714610765578063e531d8c71461076d578063e78cea9214610780578063e8bd49221461079357600080fd5b8063c2c2e68e14610737578063c4d66de81461073f578063ce11e6ab1461075257600080fd5b806388302884116101715780639a8a05921161014b5780639a8a059214610638578063a23c44b114610641578063aa38a6e714610711578063bc45e0ae1461072457600080fd5b806388302884146106075780638da5cb5b146106275780638ee1a1261461062f57600080fd5b806371ef232c116101a257806371ef232c146105e257806376a61018146105eb57806376e7e23b146105fe57600080fd5b80636b00cea9146105a95780636ddd3744146105bc5780636e981c75146105cf57600080fd5b8063353325e0116102a257806355840a58116102405780635c975abb1161021a5780635c975abb1461055857806361373919146105635780636177fd181461056b57806365f7f80d146105a157600080fd5b806355840a581461052557806356bbc9e61461053d57806357ef4ab91461055057600080fd5b80634ceccfe51161027c5780634ceccfe5146104ed5780634db519d4146104f757806351ed6a301461050a57806352d1902d1461051d57600080fd5b8063353325e0146104c957806342500b85146104d157806345e38b64146104e457600080fd5b80631b1689e91161030f5780632abdd230116102e95780632abdd230146104345780632e7acfa6146104605780632f30cabd1461048d57806330836228146104b657600080fd5b80631b1689e9146104055780631cb645151461040e5780631e83d30f1461042157600080fd5b806312ab3d3b1161034057806312ab3d3b146103cd57806313c56ca7146103ea57806318baaab9146103fd57600080fd5b8063023a96fe1461036757806304972af91461039757806311715585146103ac575b600080fd5b60695461037a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6103aa6103a5366004613b33565b6108aa565b005b6103bf6103ba366004613b60565b6108c4565b60405190815260200161038e565b607a546103da9060ff1681565b604051901515815260200161038e565b6103bf6103f8366004613b60565b6108e0565b6103aa610a2d565b6103bf60795481565b6103aa61041c366004613b8c565b610b01565b6103aa61042f366004613b60565b610e90565b6103bf610442366004613bce565b6001600160a01b031660009081526076602052604090206001015490565b6066546104749067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161038e565b6103bf61049b366004613bce565b6001600160a01b031660009081526077602052604090205490565b6103da6104c4366004613b60565b610f07565b6103bf610f23565b6103aa6104df366004613beb565b610f58565b6103bf60715481565b6103bf6203138081565b6103aa610505366004613c2a565b610fd1565b60705461037a906001600160a01b031681565b6103bf6112b6565b607a5461037a9061010090046001600160a01b031681565b6103bf61054b366004613b60565b61137b565b6103aa61139e565b60335460ff166103da565b6103bf611416565b6103da610579366004613bce565b6001600160a01b0316600090815260766020526040902060020154600160401b900460ff1690565b6073546103bf565b6103bf6105b7366004613c87565b611499565b61037a6105ca366004613cd5565b6114be565b6103aa6105dd366004613b8c565b6114f8565b6103bf60785481565b6103aa6105f9366004613cf0565b6116b5565b6103bf60675481565b61061a610615366004613b60565b6116d6565b60405161038e9190613d5c565b61037a6117a2565b6103bf60685481565b6103bf60655481565b6106d261064f366004613bce565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152607660209081526040918290208251608081018452815481526001820154928101929092526002015467ffffffffffffffff811692820192909252600160401b90910460ff161515606082015290565b60405161038e9190815181526020808301519082015260408083015167ffffffffffffffff169082015260609182015115159181019190915260800190565b606d5461037a906001600160a01b031681565b606e5461037a906001600160a01b031681565b6103aa6117ac565b6103aa61074d366004613bce565b61186e565b606c5461037a906001600160a01b031681565b607554610474565b6103da61077b366004613b60565b611a13565b606b5461037a906001600160a01b031681565b6107d86107a1366004613bce565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b900460ff1684565b60405161038e9493929190938452602084019290925267ffffffffffffffff1660408301521515606082015260800190565b61037a611a43565b6103bf610820366004613bce565b6001600160a01b031660009081526076602052604090205490565b606f5461037a906001600160a01b031681565b6103aa61085c366004613dbd565b611aca565b6103aa61086f366004613de9565b611b41565b6103da610882366004613bce565b60726020526000908152604090205460ff1681565b606a5461037a906001600160a01b031681565b6108c0816108b784611c6e565b60010154611ccf565b5050565b60006108cf82611c6e565b5467ffffffffffffffff1692915050565b60007f00000000000000000000000000000000000000000000000000000000000000001561096f576000828152607b6020526040902054806109695760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b92915050565b600061097a83611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b8304811615156060830152929350610a1092909184916080840191600160c81b90041660028111156109ec576109ec613d28565b60028111156109fd576109fd613d28565b8152602001600182015481525050611dd4565b54600160801b900467ffffffffffffffff1692915050565b919050565b607a5460ff1615610a805760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c454400000000000000000000000000006044820152606401610960565b610a88611e39565b610ad45760405162461bcd60e51b815260206004820152601160248201527f56414c494441544f525f4e4f545f41464b0000000000000000000000000000006044820152606401610960565b607a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526072602052604090205460ff1680610b215750607a5460ff165b610b5d5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b610b65611f49565b801580610b9657506000610b7882611c6e565b54600160c81b900460ff166002811115610b9457610b94613d28565b145b610be25760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f5345454e0000000000000000006044820152606401610960565b33600090815260766020526040902060020154600160401b900460ff16610c385760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b3360009081526076602052604090205460608301351115610c9b5760405162461bcd60e51b815260206004820152601260248201527f494e53554646494349454e545f5354414b4500000000000000000000000000006044820152606401610960565b6000610cbe8335610cb436869003860160e08701613f5a565b6020860135611f9c565b9050610d37610ccc82611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156109ec576109ec613d28565b3360009081526076602052604090206001015481811480610d6b57506000610d5e82611c6e565b5467ffffffffffffffff16115b610db75760405162461bcd60e51b815260206004820152601860248201527f5354414b45445f4f4e5f414e4f544845525f4252414e434800000000000000006044820152606401610960565b6000610dc283611c6e565b54610dde90600160801b900467ffffffffffffffff1643613fae565b9050607154811015610e325760405162461bcd60e51b815260206004820152600a60248201527f54494d455f44454c5441000000000000000000000000000000000000000000006044820152606401610960565b6000610e3f868587611fe0565b3360009081526076602052604090206001018190559050610e5f81611c6e565b54600160c01b900460ff16610e8857606f54610e88906001600160a01b03166060880135612b31565b505050505050565b3360009081526072602052604090205460ff1680610eb05750607a5460ff165b610eec5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b610ef4611f49565b610efd33612bd6565b6108c03382612cc7565b6000610f1282611c6e565b54600160c01b900460ff1692915050565b6000610f2d613ad8565b6040805180820190915281815260016020820152600080610f4f818481611f9c565b94505050505090565b610f60611f49565b607a5461010090046001600160a01b03163314610fbf5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f464153545f434f4e4649524d455200000000000000000000000000006044820152606401610960565b610fcb84848484612d99565b50505050565b3360009081526072602052604090205460ff1680610ff15750607a5460ff165b61102d5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611035611f49565b600061104087611c6e565b9050600061104d87611c6e565b905061105d848260010154611ccf565b61106d6080850160608601613cd5565b825461108a9190600160801b900467ffffffffffffffff16613fc1565b67ffffffffffffffff164310156110e35760405162461bcd60e51b815260206004820152600f60248201527f4245464f52455f444541444c494e4500000000000000000000000000000000006044820152606401610960565b60735487146111345760405162461bcd60e51b815260206004820152601960248201527f505245565f4e4f545f4c41544553545f434f4e4649524d4544000000000000006044820152606401610960565b8054600160401b900467ffffffffffffffff16156112a05761115a848260010154611ccf565b6069546040517ffda2892e000000000000000000000000000000000000000000000000000000008152600481018790526000916001600160a01b03169063fda2892e906024016101a060405180830381865afa1580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e29190614013565b905088816101000151146112385760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f57494e4e4552000000000000000000000000000000000000000000006044820152606401610960565b6001816101400151600181111561125157611251613d28565b1461129e5760405162461bcd60e51b815260206004820152601260248201527f454447455f4e4f545f434f4e4649524d454400000000000000000000000000006044820152606401610960565b505b6112ac88888886612d99565b5050505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113565760405162461bcd60e51b815260206004820152603b60248201527f555550534e6f745570677261646561626c653a206d757374206e6f742062652060448201527f63616c6c6564207468726f7567682064656c656761746563616c6c00000000006064820152608401610960565b507f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d90565b600061138682611c6e565b54600160401b900467ffffffffffffffff1692915050565b3360009081526072602052604090205460ff16806113be5750607a5460ff165b6113fa5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611402611f49565b61140b33612bd6565b61141433612fb0565b565b6000611420611f49565b600061142b33613027565b90506000811161147d5760405162461bcd60e51b815260206004820152601460248201527f4e4f5f46554e44535f544f5f57495448445241570000000000000000000000006044820152606401610960565b607054611494906001600160a01b031633836130a8565b905090565b60006114b4846114ae36869003860186613f5a565b84611f9c565b90505b9392505050565b600060758267ffffffffffffffff16815481106114dd576114dd6140cc565b6000918252602090912001546001600160a01b031692915050565b611500611f49565b8061154d5760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f484153480000000000000000006044820152606401610960565b600061155882611c6e565b54600160c81b900460ff1690506000611588843561157e36879003870160e08801613f5a565b6020870135611f9c565b9050611596610ccc82611c6e565b60008260028111156115aa576115aa613d28565b036115f25760006115bc858386611fe0565b90506115c781611c6e565b54600160c01b900460ff166115f057606f546115f0906001600160a01b03166060870135612b31565b505b606b54610fcb90849083906101808801906001600160a01b03166316bf5579600161162a611625368d90038d01866140e2565b613151565b61163491906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df919061411f565b6116be83613166565b6116c88282610b01565b6116d18361323e565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261171182611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561177c5761177c613d28565b600281111561178d5761178d613d28565b81526020016001820154815250509050919050565b6000611494613256565b607a5460ff16156117ff5760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c454400000000000000000000000000006044820152606401610960565b467f000000000000000000000000000000000000000000000000000000000000000003610ad45760405162461bcd60e51b815260206004820152601460248201527f434841494e5f49445f4e4f545f4348414e4745440000000000000000000000006044820152606401610960565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361190c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610960565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661193e613289565b6001600160a01b0316146119ba5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610960565b6001600160a01b038116611a105760405162461bcd60e51b815260206004820152601060248201527f4e4545445f5354414b455f544f4b454e000000000000000000000000000000006044820152606401610960565b50565b60006001611a2083611c6e565b54600160c81b900460ff166002811115611a3c57611a3c613d28565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114949190614138565b3360009081526072602052604090205460ff1680611aea5750607a5460ff165b611b265760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611b2e611f49565b611b3882826132b1565b6108c08161323e565b611b5a82611b5436869003860186613f5a565b83611f9c565b8414610fcb5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610960565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611c149190614179565b600060405180830381855afa9150503d8060008114611c4f576040519150601f19603f3d011682016040523d82523d6000602084013e611c54565b606091505b5091509150818015611c67575080516020145b9250505090565b600081611cbd5760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610960565b50600090815260746020526040902090565b611d8682356020840135611ce96060860160408701613bce565b611cf96080870160608801613cd5565b611d0960a0880160808901613cd5565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b81146108c05760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610960565b600081608001516002811115611dec57611dec613d28565b03611a105760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610960565b600080611e4d611e4860735490565b611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115611eb857611eb8613d28565b6002811115611ec957611ec9613d28565b81526020016001820154815250509050806040015167ffffffffffffffff16600003611ef757600091505090565b805167ffffffffffffffff1615611f2b5780514390611f2490620313809067ffffffffffffffff16614195565b1091505090565b4362031380826040015167ffffffffffffffff16611f249190614195565b60335460ff16156114145760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610960565b60006114b484611fab8561337e565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b6000611ff2604085016108b785611c6e565b6001612006610220860161020087016141a8565b600281111561201757612017613d28565b148061204557506002612032610220860161020087016141a8565b600281111561204357612043613d28565b145b6120915760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610960565b826120b385356120a936889003880160e08901613f5a565b6020880135611f9c565b146121005760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610960565b6001612114610180860161016087016141a8565b600281111561212557612125613d28565b146121725760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610960565b600061217d84611c6e565b905060008080612199611625368a90038a016101808b016140e2565b905060006121b2611625368b90038b0160e08c016140e2565b90508067ffffffffffffffff168267ffffffffffffffff1610156122185760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610960565b61222860e08a0160c08b01613cd5565b67ffffffffffffffff168267ffffffffffffffff16111561228b5760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610960565b600261229f6102208b016102008c016141a8565b60028111156122b0576122b0613d28565b036123595760006122d26122cd368c90038c016101808d016140e2565b6133c0565b67ffffffffffffffff161115612354576122f260e08a0160c08b01613cd5565b67ffffffffffffffff168267ffffffffffffffff16036123545760405162461bcd60e51b815260206004820152601060248201527f504f534954494f4e5f544f4f5f464152000000000000000000000000000000006044820152606401610960565b6124aa565b600161236d6102208b016102008c016141a8565b600281111561237e5761237e613d28565b036124625761239360e08a0160c08b01613cd5565b67ffffffffffffffff168267ffffffffffffffff16146123f55760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f46494e49534845445f494e424f58000000000000000000006044820152606401610960565b61240b6122cd368b90038b016101808c016140e2565b67ffffffffffffffff16156123545760405162461bcd60e51b815260206004820152601c60248201527f4e4f4e5f5a45524f5f46494e49534845445f504f535f494e5f4d5347000000006044820152606401610960565b60405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5354415455530000000000000000000000000000000000006044820152606401610960565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f919061411f565b9050808367ffffffffffffffff16111561258b5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610960565b8061259c60e08c0160c08d01613cd5565b67ffffffffffffffff1611156125f45760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610960565b808367ffffffffffffffff160361261757612610816001614195565b945061261b565b8094505b8267ffffffffffffffff166000036126755760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610960565b606b546001600160a01b03166316bf55796126916001866140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa1580156126ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612712919061411f565b935050505060006127328789610180018036038101906114ae9190613f5a565b905085811480612740575085155b61278c5760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610960565b600061279782611c6e565b54600160c81b900460ff1660028111156127b3576127b3613d28565b146128005760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610960565b835460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015289831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a083015260016080830152506128fe856133cf565b60008281526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115612a0657612a06613d28565b021790555060a0820151816001015590505087827fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb36978b8688606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051612a849796959493929190614227565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015612b255760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b15919061411f565b6000838152607b60205260409020555b50979650505050505050565b6001600160a01b03821660009081526077602052604081205490612b558383614195565b6001600160a01b0385166000908152607760205260408120829055607880549293508592909190612b87908490614195565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b6001600160a01b038116600090815260766020526040902060020154600160401b900460ff16612c355760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b6001600160a01b03811660009081526076602052604081206001015460735490919082149080612c6484611c6e565b5467ffffffffffffffff161190508180612c7b5750805b610fcb5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610960565b6001600160a01b0382166000908152607660205260408120805480841115612d315760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610960565b6000612d3d8583613fae565b8584559050612d4c8682612b31565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b6000612da485611c6e565b905060018154600160c81b900460ff166002811115612dc557612dc5613d28565b14612e125760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610960565b612e25846114ae36869003860186613f5a565b8514612e735760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610960565b6000612e8c612e87368690038601866140e2565b613453565b90506000612ea7612ea2368790038701876140e2565b61345e565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b158015612f0e57600080fd5b505af1158015612f22573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b03811660009081526076602052604090208054612fd48382612b31565b612fdd8361346a565b60408051828152600060208201526001600160a01b038516917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde691015b60405180910390a2505050565b6001600160a01b0381166000908152607760205260408120805490829055607880548291908490613059908490613fae565b909155505060408051828152600060208201526001600160a01b038516917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a292915050565b6040516001600160a01b0383166024820152604481018290526116d19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613670565b6020810151600090815b602002015192915050565b3360009081526072602052604090205460ff16806131865750607a5460ff165b6131c25760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b6131ca611f49565b33600090815260766020526040902060020154600160401b900460ff16156132345760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f5354414b45440000000000000000000000000000000000006044820152606401610960565b611a103382613755565b607054611a10906001600160a01b031633308461386c565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d61327a565b3360009081526072602052604090205460ff16806132d15750607a5460ff165b61330d5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b613315611f49565b6001600160a01b038216600090815260766020526040902060020154600160401b900460ff166133745760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b6108c082826138bd565b600081602001516133928360000151613934565b6040516020016133a3929190614311565b604051602081830303815290604052805190602001209050919050565b6020810151600090600161315b565b805467ffffffffffffffff166000036133ff57805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff16600003611a105780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b80516000908161315b565b8051600090600161315b565b6001600160a01b03811660009081526076602052604090206002810154600160401b900460ff166134ca5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b60028101546075805467ffffffffffffffff909216916134ec90600190613fae565b815481106134fc576134fc6140cc565b600091825260209091200154607580546001600160a01b039092169167ffffffffffffffff8416908110613532576135326140cc565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806076600060758467ffffffffffffffff1681548110613582576135826140cc565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560758054806135db576135db61432d565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b0394909416815260769093525050604081208181556001810191909155600201805468ffffffffffffffffff19169055565b60006136c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139c49092919063ffffffff16565b8051909150156116d157808060200190518101906136e39190614343565b6116d15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610960565b6075805460018082019092557f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea810180546001600160a01b0386167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051608081018252858152607354602082810191825267ffffffffffffffff80871684860190815260608501898152600088815260769094528684209551865593519885019890985596516002909301805492511515600160401b0268ffffffffffffffffff1990931693909716929092171790945551919290917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde69161301a918690918252602082015260400190565b6040516001600160a01b0380851660248301528316604482015260648101829052610fcb9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016130ed565b6001600160a01b0382166000908152607660205260408120805490916138e38483614195565b80845560408051848152602081018390529192506001600160a01b038716917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a25050505050565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d016133a3565b60606114b48484600085856001600160a01b0385163b613a265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610960565b600080866001600160a01b03168587604051613a429190614179565b60006040518083038185875af1925050503d8060008114613a7f576040519150601f19603f3d011682016040523d82523d6000602084013e613a84565b606091505b5091509150613a94828286613a9f565b979650505050505050565b60608315613aae5750816114b7565b825115613abe5782518084602001fd5b8160405162461bcd60e51b8152600401610960919061435e565b6040518060400160405280613aeb613afd565b8152602001613af8613afd565b905290565b60405180604001604052806002906020820280368337509192915050565b600060a08284031215613b2d57600080fd5b50919050565b60008060c08385031215613b4657600080fd5b82359150613b578460208501613b1b565b90509250929050565b600060208284031215613b7257600080fd5b5035919050565b60006102208284031215613b2d57600080fd5b6000806102408385031215613ba057600080fd5b613baa8484613b79565b94610220939093013593505050565b6001600160a01b0381168114611a1057600080fd5b600060208284031215613be057600080fd5b81356114b781613bb9565b6000806000806101008587031215613c0257600080fd5b8435935060208501359250613c1a8660408701613b1b565b9396929550929360e00135925050565b6000806000806000806101c08789031215613c4457600080fd5b8635955060208701359450613c5c8860408901613b1b565b935060e08701359250613c73886101008901613b1b565b91506101a087013590509295509295509295565b600080600060e08486031215613c9c57600080fd5b83359250613cad8560208601613b1b565b915060c084013590509250925092565b803567ffffffffffffffff81168114610a2857600080fd5b600060208284031215613ce757600080fd5b6114b782613cbd565b60008060006102608486031215613d0657600080fd5b83359250613d178560208601613b79565b915061024084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b60038110611a1057634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff808451168352806020850151166020840152806040850151166040840152506060830151151560608301526080830151613da681613d3e565b8060808401525060a083015160a083015292915050565b60008060408385031215613dd057600080fd5b8235613ddb81613bb9565b946020939093013593505050565b6000806000806101008587031215613e0057600080fd5b84359350613e118660208701613b1b565b939693955050505060c08201359160e0013590565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613e5f57613e5f613e26565b60405290565b6040516101a0810167ffffffffffffffff81118282101715613e5f57613e5f613e26565b600060808284031215613e9b57600080fd5b613ea3613e3c565b905082601f830112613eb457600080fd5b613ebc613e3c565b806040840185811115613ece57600080fd5b845b81811015613ee8578035845260209384019301613ed0565b5081845285605f860112613efb57600080fd5b613f03613e3c565b92508291506080850186811115613f1957600080fd5b80821015613f3d57613f2a82613cbd565b8452602084019350602082019150613f19565b505060208301525092915050565b803560038110610a2857600080fd5b600060a08284031215613f6c57600080fd5b613f74613e3c565b613f7e8484613e89565b8152613f8c60808401613f4b565b60208201529392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561096957610969613f98565b67ffffffffffffffff818116838216019080821115613fe257613fe2613f98565b5092915050565b8051610a2881613bb9565b805160028110610a2857600080fd5b80518015158114610a2857600080fd5b60006101a0828403121561402657600080fd5b61402e613e65565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120614092818501613fe9565b908201526101406140a4848201613ff4565b9082015261016083810151908201526101806140c1818501614003565b908201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000608082840312156140f457600080fd5b6114b78383613e89565b67ffffffffffffffff828116828216039080821115613fe257613fe2613f98565b60006020828403121561413157600080fd5b5051919050565b60006020828403121561414a57600080fd5b81516114b781613bb9565b60005b83811015614170578181015183820152602001614158565b50506000910152565b6000825161418b818460208701614155565b9190910192915050565b8082018082111561096957610969613f98565b6000602082840312156141ba57600080fd5b6114b782613f4b565b6040818337604082016040820160005b60028110156142045767ffffffffffffffff6141ee83613cbd565b16835260209283019291909101906001016141d3565b50505061421360808201613f4b565b61421c81613d3e565b806080840152505050565b60006102e08201905088358252602089013560208301526040890135604083015260608901356060830152608089013561426081613bb9565b6001600160a01b0316608083015261427a60a08a01613cbd565b67ffffffffffffffff80821660a08501528061429860c08d01613cbd565b1660c085015250506142b060e0830160e08b016141c3565b6101806142c1818401828c016141c3565b50876102208301528661024083015285610260830152846102808301526142f46102a08301856001600160a01b03169052565b67ffffffffffffffff83166102c083015298975050505050505050565b61431a83613d3e565b60f89290921b8252600182015260210190565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561435557600080fd5b6114b782614003565b602081526000825180602084015261437d816040850160208701614155565b601f01601f1916919091016040019291505056fea26469706673582212201d0f24fbd8da10ac9d78689cfe22a1488185f98053e851e3850a35225601d19964736f6c63430008110033", + Bin: "0x60e0604052620000196200003a60201b62001ba81760201c565b15156080523060a0524660c0523480156200003357600080fd5b5062000108565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200007a9190620000d7565b600060405180830381855afa9150503d8060008114620000b7576040519150601f19603f3d011682016040523d82523d6000602084013e620000bc565b606091505b5091509150818015620000d0575080516020145b9250505090565b6000825160005b81811015620000fa5760208186018101518583015201620000de565b506000920191825250919050565b60805160a05160c0516144396200014d60003960006118020152600081816112c301528181611878015261190e0152600081816108e40152612b0001526144396000f3fe608060405234801561001057600080fd5b50600436106103625760003560e01c80636b00cea9116101c8578063c2c2e68e11610104578063ee35f327116100a2578063f3f0a03e1161007c578063f3f0a03e1461084e578063f9cee9df14610861578063facd743b14610874578063fb0e722b1461089757600080fd5b8063ee35f3271461080a578063ef40a67014610812578063f065de3f1461083b57600080fd5b8063dff69787116100de578063dff6978714610765578063e531d8c71461076d578063e78cea9214610780578063e8bd49221461079357600080fd5b8063c2c2e68e14610737578063c4d66de81461073f578063ce11e6ab1461075257600080fd5b806388302884116101715780639a8a05921161014b5780639a8a059214610638578063a23c44b114610641578063aa38a6e714610711578063bc45e0ae1461072457600080fd5b806388302884146106075780638da5cb5b146106275780638ee1a1261461062f57600080fd5b806371ef232c116101a257806371ef232c146105e257806376a61018146105eb57806376e7e23b146105fe57600080fd5b80636b00cea9146105a95780636ddd3744146105bc5780636e981c75146105cf57600080fd5b8063353325e0116102a257806355840a58116102405780635c975abb1161021a5780635c975abb1461055857806361373919146105635780636177fd181461056b57806365f7f80d146105a157600080fd5b806355840a581461052557806356bbc9e61461053d57806357ef4ab91461055057600080fd5b80634ceccfe51161027c5780634ceccfe5146104ed5780634db519d4146104f757806351ed6a301461050a57806352d1902d1461051d57600080fd5b8063353325e0146104c957806342500b85146104d157806345e38b64146104e457600080fd5b80631b1689e91161030f5780632abdd230116102e95780632abdd230146104345780632e7acfa6146104605780632f30cabd1461048d57806330836228146104b657600080fd5b80631b1689e9146104055780631cb645151461040e5780631e83d30f1461042157600080fd5b806312ab3d3b1161034057806312ab3d3b146103cd57806313c56ca7146103ea57806318baaab9146103fd57600080fd5b8063023a96fe1461036757806304972af91461039757806311715585146103ac575b600080fd5b60695461037a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6103aa6103a5366004613ba5565b6108aa565b005b6103bf6103ba366004613bd2565b6108c4565b60405190815260200161038e565b607a546103da9060ff1681565b604051901515815260200161038e565b6103bf6103f8366004613bd2565b6108e0565b6103aa610a2d565b6103bf60795481565b6103aa61041c366004613bfe565b610b01565b6103aa61042f366004613bd2565b610e90565b6103bf610442366004613c40565b6001600160a01b031660009081526076602052604090206001015490565b6066546104749067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161038e565b6103bf61049b366004613c40565b6001600160a01b031660009081526077602052604090205490565b6103da6104c4366004613bd2565b610f07565b6103bf610f23565b6103aa6104df366004613c5d565b610f58565b6103bf60715481565b6103bf6203138081565b6103aa610505366004613c9c565b610fd1565b60705461037a906001600160a01b031681565b6103bf6112b6565b607a5461037a9061010090046001600160a01b031681565b6103bf61054b366004613bd2565b61137b565b6103aa61139e565b60335460ff166103da565b6103bf611416565b6103da610579366004613c40565b6001600160a01b0316600090815260766020526040902060020154600160401b900460ff1690565b6073546103bf565b6103bf6105b7366004613cf9565b611499565b61037a6105ca366004613d47565b6114be565b6103aa6105dd366004613bfe565b6114f8565b6103bf60785481565b6103aa6105f9366004613d62565b6116b5565b6103bf60675481565b61061a610615366004613bd2565b6116d6565b60405161038e9190613dce565b61037a6117a2565b6103bf60685481565b6103bf60655481565b6106d261064f366004613c40565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152607660209081526040918290208251608081018452815481526001820154928101929092526002015467ffffffffffffffff811692820192909252600160401b90910460ff161515606082015290565b60405161038e9190815181526020808301519082015260408083015167ffffffffffffffff169082015260609182015115159181019190915260800190565b606d5461037a906001600160a01b031681565b606e5461037a906001600160a01b031681565b6103aa6117ac565b6103aa61074d366004613c40565b61186e565b606c5461037a906001600160a01b031681565b607554610474565b6103da61077b366004613bd2565b611a13565b606b5461037a906001600160a01b031681565b6107d86107a1366004613c40565b60766020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b900460ff1684565b60405161038e9493929190938452602084019290925267ffffffffffffffff1660408301521515606082015260800190565b61037a611a43565b6103bf610820366004613c40565b6001600160a01b031660009081526076602052604090205490565b606f5461037a906001600160a01b031681565b6103aa61085c366004613e2f565b611aca565b6103aa61086f366004613e5b565b611b41565b6103da610882366004613c40565b60726020526000908152604090205460ff1681565b606a5461037a906001600160a01b031681565b6108c0816108b784611c6e565b60010154611ccf565b5050565b60006108cf82611c6e565b5467ffffffffffffffff1692915050565b60007f00000000000000000000000000000000000000000000000000000000000000001561096f576000828152607b6020526040902054806109695760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b92915050565b600061097a83611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b8304811615156060830152929350610a1092909184916080840191600160c81b90041660028111156109ec576109ec613d9a565b60028111156109fd576109fd613d9a565b8152602001600182015481525050611dd4565b54600160801b900467ffffffffffffffff1692915050565b919050565b607a5460ff1615610a805760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c454400000000000000000000000000006044820152606401610960565b610a88611e39565b610ad45760405162461bcd60e51b815260206004820152601160248201527f56414c494441544f525f4e4f545f41464b0000000000000000000000000000006044820152606401610960565b607a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526072602052604090205460ff1680610b215750607a5460ff165b610b5d5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b610b65611f49565b801580610b9657506000610b7882611c6e565b54600160c81b900460ff166002811115610b9457610b94613d9a565b145b610be25760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f5345454e0000000000000000006044820152606401610960565b33600090815260766020526040902060020154600160401b900460ff16610c385760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b3360009081526076602052604090205460608301351115610c9b5760405162461bcd60e51b815260206004820152601260248201527f494e53554646494349454e545f5354414b4500000000000000000000000000006044820152606401610960565b6000610cbe8335610cb436869003860160e08701613fcc565b6020860135611f9c565b9050610d37610ccc82611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b9091041660028111156109ec576109ec613d9a565b3360009081526076602052604090206001015481811480610d6b57506000610d5e82611c6e565b5467ffffffffffffffff16115b610db75760405162461bcd60e51b815260206004820152601860248201527f5354414b45445f4f4e5f414e4f544845525f4252414e434800000000000000006044820152606401610960565b6000610dc283611c6e565b54610dde90600160801b900467ffffffffffffffff1643614020565b9050607154811015610e325760405162461bcd60e51b815260206004820152600a60248201527f54494d455f44454c5441000000000000000000000000000000000000000000006044820152606401610960565b6000610e3f868587611fe0565b3360009081526076602052604090206001018190559050610e5f81611c6e565b54600160c01b900460ff16610e8857606f54610e88906001600160a01b03166060880135612ba3565b505050505050565b3360009081526072602052604090205460ff1680610eb05750607a5460ff165b610eec5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b610ef4611f49565b610efd33612c48565b6108c03382612d39565b6000610f1282611c6e565b54600160c01b900460ff1692915050565b6000610f2d613b4a565b6040805180820190915281815260016020820152600080610f4f818481611f9c565b94505050505090565b610f60611f49565b607a5461010090046001600160a01b03163314610fbf5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f464153545f434f4e4649524d455200000000000000000000000000006044820152606401610960565b610fcb84848484612e0b565b50505050565b3360009081526072602052604090205460ff1680610ff15750607a5460ff165b61102d5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611035611f49565b600061104087611c6e565b9050600061104d87611c6e565b905061105d848260010154611ccf565b61106d6080850160608601613d47565b825461108a9190600160801b900467ffffffffffffffff16614033565b67ffffffffffffffff164310156110e35760405162461bcd60e51b815260206004820152600f60248201527f4245464f52455f444541444c494e4500000000000000000000000000000000006044820152606401610960565b60735487146111345760405162461bcd60e51b815260206004820152601960248201527f505245565f4e4f545f4c41544553545f434f4e4649524d4544000000000000006044820152606401610960565b8054600160401b900467ffffffffffffffff16156112a05761115a848260010154611ccf565b6069546040517ffda2892e000000000000000000000000000000000000000000000000000000008152600481018790526000916001600160a01b03169063fda2892e906024016101a060405180830381865afa1580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e29190614085565b905088816101000151146112385760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f57494e4e4552000000000000000000000000000000000000000000006044820152606401610960565b6001816101400151600181111561125157611251613d9a565b1461129e5760405162461bcd60e51b815260206004820152601260248201527f454447455f4e4f545f434f4e4649524d454400000000000000000000000000006044820152606401610960565b505b6112ac88888886612e0b565b5050505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113565760405162461bcd60e51b815260206004820152603b60248201527f555550534e6f745570677261646561626c653a206d757374206e6f742062652060448201527f63616c6c6564207468726f7567682064656c656761746563616c6c00000000006064820152608401610960565b507f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d90565b600061138682611c6e565b54600160401b900467ffffffffffffffff1692915050565b3360009081526072602052604090205460ff16806113be5750607a5460ff165b6113fa5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611402611f49565b61140b33612c48565b61141433613022565b565b6000611420611f49565b600061142b33613099565b90506000811161147d5760405162461bcd60e51b815260206004820152601460248201527f4e4f5f46554e44535f544f5f57495448445241570000000000000000000000006044820152606401610960565b607054611494906001600160a01b0316338361311a565b905090565b60006114b4846114ae36869003860186613fcc565b84611f9c565b90505b9392505050565b600060758267ffffffffffffffff16815481106114dd576114dd61413e565b6000918252602090912001546001600160a01b031692915050565b611500611f49565b8061154d5760405162461bcd60e51b815260206004820152601760248201527f45585045435445445f415353455254494f4e5f484153480000000000000000006044820152606401610960565b600061155882611c6e565b54600160c81b900460ff1690506000611588843561157e36879003870160e08801613fcc565b6020870135611f9c565b9050611596610ccc82611c6e565b60008260028111156115aa576115aa613d9a565b036115f25760006115bc858386611fe0565b90506115c781611c6e565b54600160c01b900460ff166115f057606f546115f0906001600160a01b03166060870135612ba3565b505b606b54610fcb90849083906101808801906001600160a01b03166316bf5579600161162a611625368d90038d0186614154565b6131c3565b6116349190614170565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190614191565b6116be836131d8565b6116c88282610b01565b6116d1836132b0565b505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261171182611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b90910416600281111561177c5761177c613d9a565b600281111561178d5761178d613d9a565b81526020016001820154815250509050919050565b60006114946132c8565b607a5460ff16156117ff5760405162461bcd60e51b815260206004820152601260248201527f57484954454c4953545f44495341424c454400000000000000000000000000006044820152606401610960565b467f000000000000000000000000000000000000000000000000000000000000000003610ad45760405162461bcd60e51b815260206004820152601460248201527f434841494e5f49445f4e4f545f4348414e4745440000000000000000000000006044820152606401610960565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361190c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610960565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661193e6132fb565b6001600160a01b0316146119ba5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610960565b6001600160a01b038116611a105760405162461bcd60e51b815260206004820152601060248201527f4e4545445f5354414b455f544f4b454e000000000000000000000000000000006044820152606401610960565b50565b60006001611a2083611c6e565b54600160c81b900460ff166002811115611a3c57611a3c613d9a565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015611aa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149491906141aa565b3360009081526072602052604090205460ff1680611aea5750607a5460ff165b611b265760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b611b2e611f49565b611b388282613323565b6108c0816132b0565b611b5a82611b5436869003860186613fcc565b83611f9c565b8414610fcb5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610960565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491611c1491906141eb565b600060405180830381855afa9150503d8060008114611c4f576040519150601f19603f3d011682016040523d82523d6000602084013e611c54565b606091505b5091509150818015611c67575080516020145b9250505090565b600081611cbd5760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610960565b50600090815260746020526040902090565b611d8682356020840135611ce96060860160408701613c40565b611cf96080870160608801613d47565b611d0960a0880160808901613d47565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b81146108c05760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610960565b600081608001516002811115611dec57611dec613d9a565b03611a105760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610960565b600080611e4d611e4860735490565b611c6e565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115611eb857611eb8613d9a565b6002811115611ec957611ec9613d9a565b81526020016001820154815250509050806040015167ffffffffffffffff16600003611ef757600091505090565b805167ffffffffffffffff1615611f2b5780514390611f2490620313809067ffffffffffffffff16614207565b1091505090565b4362031380826040015167ffffffffffffffff16611f249190614207565b60335460ff16156114145760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610960565b60006114b484611fab856133f0565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b6000611ff2604085016108b785611c6e565b60016120066102208601610200870161421a565b600281111561201757612017613d9a565b1480612045575060026120326102208601610200870161421a565b600281111561204357612043613d9a565b145b6120915760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610960565b826120b385356120a936889003880160e08901613fcc565b6020880135611f9c565b146121005760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610960565b60016121146101808601610160870161421a565b600281111561212557612125613d9a565b146121725760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610960565b600061217d84611c6e565b905060008080612199611625368a90038a016101808b01614154565b905060006121b2611625368b90038b0160e08c01614154565b90508067ffffffffffffffff168267ffffffffffffffff1610156122185760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610960565b61222860e08a0160c08b01613d47565b67ffffffffffffffff168267ffffffffffffffff16111561228b5760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610960565b67ffffffffffffffff81166122a660e08b0160c08c01613d47565b67ffffffffffffffff16116122fd5760405162461bcd60e51b815260206004820152601460248201527f4e4558545f494e424f585f4241434b57415244530000000000000000000000006044820152606401610960565b60026123116102208b016102008c0161421a565b600281111561232257612322613d9a565b036123cb57600061234461233f368c90038c016101808d01614154565b613432565b67ffffffffffffffff1611156123c65761236460e08a0160c08b01613d47565b67ffffffffffffffff168267ffffffffffffffff16036123c65760405162461bcd60e51b815260206004820152601060248201527f504f534954494f4e5f544f4f5f464152000000000000000000000000000000006044820152606401610960565b61251c565b60016123df6102208b016102008c0161421a565b60028111156123f0576123f0613d9a565b036124d45761240560e08a0160c08b01613d47565b67ffffffffffffffff168267ffffffffffffffff16146124675760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f46494e49534845445f494e424f58000000000000000000006044820152606401610960565b61247d61233f368b90038b016101808c01614154565b67ffffffffffffffff16156123c65760405162461bcd60e51b815260206004820152601c60248201527f4e4f4e5f5a45524f5f46494e49534845445f504f535f494e5f4d5347000000006044820152606401610960565b60405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5354415455530000000000000000000000000000000000006044820152606401610960565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa15801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190614191565b9050808367ffffffffffffffff1611156125fd5760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610960565b8061260e60e08c0160c08d01613d47565b67ffffffffffffffff1611156126665760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610960565b808367ffffffffffffffff160361268957612682816001614207565b945061268d565b8094505b8267ffffffffffffffff166000036126e75760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610960565b606b546001600160a01b03166316bf5579612703600186614170565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190614191565b935050505060006127a48789610180018036038101906114ae9190613fcc565b9050858114806127b2575085155b6127fe5760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610960565b600061280982611c6e565b54600160c81b900460ff16600281111561282557612825613d9a565b146128725760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610960565b835460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16838501527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116607486015289831b16607c85015280516064818603018152608485018083528151918701919091206101448601835260009182905260a4860182905260c4860182905260e4860182905261010486018290526101249095018190528151928301825280835294820185905267ffffffffffffffff43811691830191909152909416159084015260a0830152600160808301525061297085613441565b60008281526074602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115612a7857612a78613d9a565b021790555060a0820151816001015590505087827fcd735133b6109f5afd9a07ea21b0b073f930113d2218547a799ee2f879fb36978b8688606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff16604051612af69796959493929190614299565b60405180910390a37f000000000000000000000000000000000000000000000000000000000000000015612b975760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b879190614191565b6000838152607b60205260409020555b50979650505050505050565b6001600160a01b03821660009081526077602052604081205490612bc78383614207565b6001600160a01b0385166000908152607760205260408120829055607880549293508592909190612bf9908490614207565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b6001600160a01b038116600090815260766020526040902060020154600160401b900460ff16612ca75760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b6001600160a01b03811660009081526076602052604081206001015460735490919082149080612cd684611c6e565b5467ffffffffffffffff161190508180612ced5750805b610fcb5760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610960565b6001600160a01b0382166000908152607660205260408120805480841115612da35760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610960565b6000612daf8583614020565b8584559050612dbe8682612ba3565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b6000612e1685611c6e565b905060018154600160c81b900460ff166002811115612e3757612e37613d9a565b14612e845760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610960565b612e97846114ae36869003860186613fcc565b8514612ee55760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610960565b6000612efe612ef936869003860186614154565b6134c5565b90506000612f19612f1436879003870187614154565b6134d0565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b158015612f8057600080fd5b505af1158015612f94573d6000803e3d6000fd5b50505060738890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b038116600090815260766020526040902080546130468382612ba3565b61304f836134dc565b60408051828152600060208201526001600160a01b038516917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde691015b60405180910390a2505050565b6001600160a01b03811660009081526077602052604081208054908290556078805482919084906130cb908490614020565b909155505060408051828152600060208201526001600160a01b038516917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a292915050565b6040516001600160a01b0383166024820152604481018290526116d19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526136e2565b6020810151600090815b602002015192915050565b3360009081526072602052604090205460ff16806131f85750607a5460ff165b6132345760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b61323c611f49565b33600090815260766020526040902060020154600160401b900460ff16156132a65760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f5354414b45440000000000000000000000000000000000006044820152606401610960565b611a1033826137c7565b607054611a10906001600160a01b03163330846138de565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6132ec565b3360009081526072602052604090205460ff16806133435750607a5460ff165b61337f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fab20a624a220aa27a960991b6044820152606401610960565b613387611f49565b6001600160a01b038216600090815260766020526040902060020154600160401b900460ff166133e65760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b6108c0828261392f565b6000816020015161340483600001516139a6565b604051602001613415929190614383565b604051602081830303815290604052805190602001209050919050565b602081015160009060016131cd565b805467ffffffffffffffff1660000361347157805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff16600003611a105780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b8051600090816131cd565b805160009060016131cd565b6001600160a01b03811660009081526076602052604090206002810154600160401b900460ff1661353c5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610960565b60028101546075805467ffffffffffffffff9092169161355e90600190614020565b8154811061356e5761356e61413e565b600091825260209091200154607580546001600160a01b039092169167ffffffffffffffff84169081106135a4576135a461413e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806076600060758467ffffffffffffffff16815481106135f4576135f461413e565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600201805467ffffffffffffffff191667ffffffffffffffff92909216919091179055607580548061364d5761364d61439f565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b0394909416815260769093525050604081208181556001810191909155600201805468ffffffffffffffffff19169055565b6000613737826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a369092919063ffffffff16565b8051909150156116d1578080602001905181019061375591906143b5565b6116d15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610960565b6075805460018082019092557f9a8d93986a7b9e6294572ea6736696119c195c1a9f5eae642d3c5fcd44e49dea810180546001600160a01b0386167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051608081018252858152607354602082810191825267ffffffffffffffff80871684860190815260608501898152600088815260769094528684209551865593519885019890985596516002909301805492511515600160401b0268ffffffffffffffffff1990931693909716929092171790945551919290917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde69161308c918690918252602082015260400190565b6040516001600160a01b0380851660248301528316604482015260648101829052610fcb9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161315f565b6001600160a01b0382166000908152607660205260408120805490916139558483614207565b80845560408051848152602081018390529192506001600160a01b038716917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a25050505050565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d01613415565b60606114b48484600085856001600160a01b0385163b613a985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610960565b600080866001600160a01b03168587604051613ab491906141eb565b60006040518083038185875af1925050503d8060008114613af1576040519150601f19603f3d011682016040523d82523d6000602084013e613af6565b606091505b5091509150613b06828286613b11565b979650505050505050565b60608315613b205750816114b7565b825115613b305782518084602001fd5b8160405162461bcd60e51b815260040161096091906143d0565b6040518060400160405280613b5d613b6f565b8152602001613b6a613b6f565b905290565b60405180604001604052806002906020820280368337509192915050565b600060a08284031215613b9f57600080fd5b50919050565b60008060c08385031215613bb857600080fd5b82359150613bc98460208501613b8d565b90509250929050565b600060208284031215613be457600080fd5b5035919050565b60006102208284031215613b9f57600080fd5b6000806102408385031215613c1257600080fd5b613c1c8484613beb565b94610220939093013593505050565b6001600160a01b0381168114611a1057600080fd5b600060208284031215613c5257600080fd5b81356114b781613c2b565b6000806000806101008587031215613c7457600080fd5b8435935060208501359250613c8c8660408701613b8d565b9396929550929360e00135925050565b6000806000806000806101c08789031215613cb657600080fd5b8635955060208701359450613cce8860408901613b8d565b935060e08701359250613ce5886101008901613b8d565b91506101a087013590509295509295509295565b600080600060e08486031215613d0e57600080fd5b83359250613d1f8560208601613b8d565b915060c084013590509250925092565b803567ffffffffffffffff81168114610a2857600080fd5b600060208284031215613d5957600080fd5b6114b782613d2f565b60008060006102608486031215613d7857600080fd5b83359250613d898560208601613beb565b915061024084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b60038110611a1057634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff808451168352806020850151166020840152806040850151166040840152506060830151151560608301526080830151613e1881613db0565b8060808401525060a083015160a083015292915050565b60008060408385031215613e4257600080fd5b8235613e4d81613c2b565b946020939093013593505050565b6000806000806101008587031215613e7257600080fd5b84359350613e838660208701613b8d565b939693955050505060c08201359160e0013590565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613ed157613ed1613e98565b60405290565b6040516101a0810167ffffffffffffffff81118282101715613ed157613ed1613e98565b600060808284031215613f0d57600080fd5b613f15613eae565b905082601f830112613f2657600080fd5b613f2e613eae565b806040840185811115613f4057600080fd5b845b81811015613f5a578035845260209384019301613f42565b5081845285605f860112613f6d57600080fd5b613f75613eae565b92508291506080850186811115613f8b57600080fd5b80821015613faf57613f9c82613d2f565b8452602084019350602082019150613f8b565b505060208301525092915050565b803560038110610a2857600080fd5b600060a08284031215613fde57600080fd5b613fe6613eae565b613ff08484613efb565b8152613ffe60808401613fbd565b60208201529392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109695761096961400a565b67ffffffffffffffff8181168382160190808211156140545761405461400a565b5092915050565b8051610a2881613c2b565b805160028110610a2857600080fd5b80518015158114610a2857600080fd5b60006101a0828403121561409857600080fd5b6140a0613ed7565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012061410481850161405b565b90820152610140614116848201614066565b908201526101608381015190820152610180614133818501614075565b908201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006080828403121561416657600080fd5b6114b78383613efb565b67ffffffffffffffff8281168282160390808211156140545761405461400a565b6000602082840312156141a357600080fd5b5051919050565b6000602082840312156141bc57600080fd5b81516114b781613c2b565b60005b838110156141e25781810151838201526020016141ca565b50506000910152565b600082516141fd8184602087016141c7565b9190910192915050565b808201808211156109695761096961400a565b60006020828403121561422c57600080fd5b6114b782613fbd565b6040818337604082016040820160005b60028110156142765767ffffffffffffffff61426083613d2f565b1683526020928301929190910190600101614245565b50505061428560808201613fbd565b61428e81613db0565b806080840152505050565b60006102e0820190508835825260208901356020830152604089013560408301526060890135606083015260808901356142d281613c2b565b6001600160a01b031660808301526142ec60a08a01613d2f565b67ffffffffffffffff80821660a08501528061430a60c08d01613d2f565b1660c0850152505061432260e0830160e08b01614235565b610180614333818401828c01614235565b50876102208301528661024083015285610260830152846102808301526143666102a08301856001600160a01b03169052565b67ffffffffffffffff83166102c083015298975050505050505050565b61438c83613db0565b60f89290921b8252600182015260210190565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156143c757600080fd5b6114b782614075565b60208152600082518060208401526143ef8160408501602087016141c7565b601f01601f1916919091016040019291505056fea26469706673582212207b5f33ff48c17d080f1004b325aef83a88ffbc862c2f56483d079e402d4699f964736f6c63430008110033", } // RollupUserLogicABI is the input ABI used to generate the binding from. @@ -21618,7 +21618,7 @@ func (_RollupUserLogic *RollupUserLogicFilterer) ParseUserWithdrawableFundsUpdat // StateHashPreImageLookupMetaData contains all meta data concerning the StateHashPreImageLookup contract. var StateHashPreImageLookupMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"HashSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"}],\"name\":\"get\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"h\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32[2]\",\"name\":\"bytes32Vals\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint64[2]\",\"name\":\"u64Vals\",\"type\":\"uint64[2]\"}],\"internalType\":\"structGlobalState\",\"name\":\"globalState\",\"type\":\"tuple\"},{\"internalType\":\"enumMachineStatus\",\"name\":\"machineStatus\",\"type\":\"uint8\"}],\"internalType\":\"structExecutionState\",\"name\":\"execState\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inboxMaxCount\",\"type\":\"uint256\"}],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea2646970667358221220c4a1f6a1655b651fc1761ca06b136240ec95c325b62e530e354cb41cf8058ab664736f6c63430008110033", + Bin: "0x608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea26469706673582212204c1355eb4512417ff2457946a1d8bc79f874768e478c654c7e9fb6bddc99653064736f6c63430008110033", } // StateHashPreImageLookupABI is the input ABI used to generate the binding from. From dac096878ed511704e4223e776666aed88b49b48 Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Thu, 28 Sep 2023 13:28:35 -0400 Subject: [PATCH 7/8] add / edit code comments to createNewAssertion (#457) --- contracts/src/rollup/RollupCore.sol | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/contracts/src/rollup/RollupCore.sol b/contracts/src/rollup/RollupCore.sol index 174f39f1f..f70aa8ce0 100644 --- a/contracts/src/rollup/RollupCore.sol +++ b/contracts/src/rollup/RollupCore.sol @@ -393,9 +393,11 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { require(assertion.beforeState.machineStatus == MachineStatus.FINISHED, "BAD_PREV_STATUS"); AssertionNode storage prevAssertion = getAssertionStorage(prevAssertionHash); + // Required inbox position through which the next assertion (the one after this new assertion) must consume uint256 nextInboxPosition; bytes32 sequencerBatchAcc; { + // This new assertion consumes the messages from prevInboxPosition to afterInboxPosition uint64 afterInboxPosition = assertion.afterState.globalState.getInboxPosition(); uint64 prevInboxPosition = assertion.beforeState.globalState.getInboxPosition(); @@ -411,7 +413,8 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { // SANITY CHECK: the next inbox position did indeed move forward // this is enforced by code in a later section that artificially increases the nextInboxPosition - // if it hadn't changed the next inbox always increasing means that the assertions will continue to advance + // even if there hadn't been any new messages since the last assertion; + // this ensures that assertions will continue to advance. // It also means that below, where we check that afterInboxPosition equals prev.nextInboxPosition // in the FINISHED state, we can be sure that it processed at least one message require(assertion.beforeStateData.configData.nextInboxPosition > prevInboxPosition, "NEXT_INBOX_BACKWARDS"); @@ -425,7 +428,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { ); } } else if (assertion.afterState.machineStatus == MachineStatus.FINISHED) { - // if the machine is FINISHED, then it should consume all messages in the inbox as seen at the time of prev + // if the machine is FINISHED, then it should consume all messages in the inbox as seen at the time of prev (and possibly one additional message; see below) require( afterInboxPosition == assertion.beforeStateData.configData.nextInboxPosition, "INVALID_FINISHED_INBOX" @@ -436,7 +439,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { // we checked this above, but include a safety check here in case of refactoring revert("INVALID_STATUS"); } - + // Inbox position at the time of this assertion being created uint256 currentInboxPosition = bridge.sequencerMessageCount(); // Cannot read more messages than currently exist in the inbox require(afterInboxPosition <= currentInboxPosition, "INBOX_PAST_END"); @@ -455,7 +458,9 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { // No new messages have been added to the inbox since the last assertion // In this case if we set the next inbox position to the current one we would be insisting that // the next assertion process no messages. So instead we increment the next inbox position to current - // plus one, so that the next assertion will process exactly one message + // plus one, so that the next assertion will process exactly one message. + // Thus, no assertion can be empty (except the genesis assertion, which is created + // via a different codepath). nextInboxPosition = currentInboxPosition + 1; } else { nextInboxPosition = currentInboxPosition; From a550444921ed1f01ea87b307b761fce58c31f3b8 Mon Sep 17 00:00:00 2001 From: Chris Buckland Date: Fri, 29 Sep 2023 14:34:50 +0200 Subject: [PATCH 8/8] Clarified comment --- contracts/src/rollup/RollupCore.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/rollup/RollupCore.sol b/contracts/src/rollup/RollupCore.sol index f70aa8ce0..556d80f1e 100644 --- a/contracts/src/rollup/RollupCore.sol +++ b/contracts/src/rollup/RollupCore.sol @@ -428,7 +428,7 @@ abstract contract RollupCore is IRollupCore, PausableUpgradeable { ); } } else if (assertion.afterState.machineStatus == MachineStatus.FINISHED) { - // if the machine is FINISHED, then it should consume all messages in the inbox as seen at the time of prev (and possibly one additional message; see below) + // if the machine is FINISHED, then it should consume all messages in the inbox as seen at the time of prev (minimum 1; see below) require( afterInboxPosition == assertion.beforeStateData.configData.nextInboxPosition, "INVALID_FINISHED_INBOX"