diff --git a/ethexe/common/src/gear.rs b/ethexe/common/src/gear.rs index cdaa36710bc..f19bde0ceb9 100644 --- a/ethexe/common/src/gear.rs +++ b/ethexe/common/src/gear.rs @@ -57,6 +57,37 @@ pub struct ValidatorsCommitment { pub era_index: u64, } +#[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] +pub struct RequestSlashCommitment { + pub era_index: u64, + pub slashes: Vec, +} + +#[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] +pub struct ExecuteSlashCommitment { + pub era_index: u64, + pub slash_identifiers: Vec, +} + +#[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] +pub struct SlashData { + pub operator: ActorId, + pub timestamp: u64, + pub vaults: Vec, +} + +#[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] +pub struct VaultSlashData { + pub vault: ActorId, + pub amount: U256, +} + +#[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] +pub struct SlashIdentifier { + pub vault: ActorId, + pub index: u64, +} + #[derive(Clone, Debug, Default, Encode, Decode, PartialEq, Eq)] pub enum CodeState { #[default] diff --git a/ethexe/contracts/script/Deployment.s.sol b/ethexe/contracts/script/Deployment.s.sol index 9bb6c213a66..4dfbe39f525 100644 --- a/ethexe/contracts/script/Deployment.s.sol +++ b/ethexe/contracts/script/Deployment.s.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.26; +import {Middleware} from "../src/Middleware.sol"; import {Mirror} from "../src/Mirror.sol"; import {MirrorProxy} from "../src/MirrorProxy.sol"; import {Router} from "../src/Router.sol"; @@ -16,6 +17,7 @@ contract DeploymentScript is Script { Router public router; Mirror public mirror; MirrorProxy public mirrorProxy; + Middleware public middleware; function setUp() public {} @@ -34,6 +36,7 @@ contract DeploymentScript is Script { address mirrorAddress = vm.computeCreateAddress(deployerAddress, vm.getNonce(deployerAddress) + 2); address mirrorProxyAddress = vm.computeCreateAddress(deployerAddress, vm.getNonce(deployerAddress) + 3); + address middlewareAddress = vm.computeCreateAddress(deployerAddress, vm.getNonce(deployerAddress) + 4); router = Router( Upgrades.deployTransparentProxy( @@ -46,6 +49,7 @@ contract DeploymentScript is Script { mirrorAddress, mirrorProxyAddress, address(wrappedVara), + middlewareAddress, 1 days, 2 hours, validatorsArray diff --git a/ethexe/contracts/src/IMiddleware.sol b/ethexe/contracts/src/IMiddleware.sol new file mode 100644 index 00000000000..75f6bcba11b --- /dev/null +++ b/ethexe/contracts/src/IMiddleware.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.26; + +interface IMiddleware { + struct VaultSlashData { + address vault; + uint256 amount; + } + + struct SlashData { + address operator; + uint48 ts; + VaultSlashData[] vaults; + } + + struct SlashIdentifier { + address vault; + uint256 index; + } + + struct Config { + uint48 eraDuration; + uint48 minVaultEpochDuration; + uint48 operatorGracePeriod; + uint48 vaultGracePeriod; + uint48 minVetoDuration; + uint48 minSlashExecutionDelay; + uint256 maxResolverSetEpochsDelay; + address vaultRegistry; + uint64 allowedVaultImplVersion; + uint64 vetoSlasherImplType; + address operatorRegistry; + address networkRegistry; + address networkOptIn; + address middlewareService; + address collateral; + address roleSlashRequester; + address roleSlashExecutor; + address vetoResolver; + } + + function changeSlashRequester(address newRole) external; + + function changeSlashExecutor(address newRole) external; + + function registerOperator() external; + + function disableOperator() external; + + function enableOperator() external; + + function unregisterOperator(address operator) external; + + function registerVault(address vault) external; + + function disableVault(address vault) external; + + function enableVault(address vault) external; + + function unregisterVault(address vault) external; + + function makeElectionAt(uint48 ts, uint256 maxValidators) external view returns (address[] memory); + + function getOperatorStakeAt(address operator, uint48 ts) external view returns (uint256); + + function getActiveOperatorsStakeAt(uint48 ts) + external + view + returns (address[] memory activeOperators, uint256[] memory stakes); + + function requestSlash(SlashData[] calldata data) external; + + function executeSlash(SlashIdentifier[] calldata slashes) external; +} diff --git a/ethexe/contracts/src/IRouter.sol b/ethexe/contracts/src/IRouter.sol index dfab107f2a5..5a098735e2a 100644 --- a/ethexe/contracts/src/IRouter.sol +++ b/ethexe/contracts/src/IRouter.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.26; +import {IMiddleware} from "./Middleware.sol"; import {Gear} from "./libraries/Gear.sol"; /// @title Gear.exe Router Interface @@ -65,6 +66,18 @@ interface IRouter { /// @param codeId The code ID of the WASM implementation of the created program. event ProgramCreated(address actorId, bytes32 indexed codeId); + /** + * @dev Emitted when a slash request is processed by the middleware. + * @param slashData An array of SlashData structures containing details of the slash request. + */ + event RequestSlashCommitmentProcessed(bytes32 indexed commitmentHash, IMiddleware.SlashData[] slashData); + + /** + * @dev Emitted when a slash request is executed by the middleware. + * @param slashId An array of SlashIdentifier structures containing details of the slash execution. + */ + event ExecuteSlashCommitmentProcessed(bytes32 indexed commitmentHash, IMiddleware.SlashIdentifier[] slashId); + /// @notice Emitted when the router's storage slot has been changed. /// @dev This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately. event StorageSlotChanged(); @@ -77,6 +90,7 @@ interface IRouter { function mirrorImpl() external view returns (address); function mirrorProxyImpl() external view returns (address); function wrappedVara() external view returns (address); + function middleware() external view returns (address); function areValidators(address[] calldata validators) external view returns (bool); function isValidator(address validator) external view returns (bool); @@ -115,4 +129,12 @@ interface IRouter { /// @dev NextEraValidatorsCommitted Emitted on success. function commitValidators(Gear.ValidatorsCommitment calldata validatorsCommitment, bytes[] calldata signatures) external; + function commitRequestSlash( + Gear.RequestSlashCommitment calldata requestSlashCommitment, + bytes[] calldata signatures + ) external; + function commitExecuteSlash( + Gear.ExecuteSlashCommitment calldata executeSlashCommitment, + bytes[] calldata signatures + ) external; } diff --git a/ethexe/contracts/src/Middleware.sol b/ethexe/contracts/src/Middleware.sol index 196eeac13a0..afed3b8ff47 100644 --- a/ethexe/contracts/src/Middleware.sol +++ b/ethexe/contracts/src/Middleware.sol @@ -16,6 +16,7 @@ import {INetworkMiddlewareService} from "symbiotic-core/src/interfaces/service/I import {IVetoSlasher} from "symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol"; import {IMigratableEntity} from "symbiotic-core/src/interfaces/common/IMigratableEntity.sol"; +import {IMiddleware} from "./IMiddleware.sol"; import {MapWithTimeData} from "./libraries/MapWithTimeData.sol"; // TODO (asap): document all functions and variables @@ -25,7 +26,7 @@ import {MapWithTimeData} from "./libraries/MapWithTimeData.sol"; // TODO: implement forced operators removal // TODO: implement forced vaults removal // TODO: use hints for symbiotic calls -contract Middleware { +contract Middleware is IMiddleware { using EnumerableMap for EnumerableMap.AddressToUintMap; using MapWithTimeData for EnumerableMap.AddressToUintMap; using Subnetwork for address; @@ -54,43 +55,6 @@ contract Middleware { error ResolverMismatch(); error ResolverSetDelayTooLong(); - struct VaultSlashData { - address vault; - uint256 amount; - } - - struct SlashData { - address operator; - uint48 ts; - VaultSlashData[] vaults; - } - - struct SlashIdentifier { - address vault; - uint256 index; - } - - struct Config { - uint48 eraDuration; - uint48 minVaultEpochDuration; - uint48 operatorGracePeriod; - uint48 vaultGracePeriod; - uint48 minVetoDuration; - uint48 minSlashExecutionDelay; - uint256 maxResolverSetEpochsDelay; - address vaultRegistry; - uint64 allowedVaultImplVersion; - uint64 vetoSlasherImplType; - address operatorRegistry; - address networkRegistry; - address networkOptIn; - address middlewareService; - address collateral; - address roleSlashRequester; - address roleSlashExecutor; - address vetoResolver; - } - uint96 public constant NETWORK_IDENTIFIER = 0; uint48 public immutable eraDuration; diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 41a05e5f152..bc98791a061 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.26; import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol"; import {Gear} from "./libraries/Gear.sol"; +import {IMiddleware} from "./IMiddleware.sol"; import {IMirror} from "./IMirror.sol"; import {IMirrorDecoder} from "./IMirrorDecoder.sol"; import {IRouter} from "./IRouter.sol"; @@ -26,6 +27,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { address _mirror, address _mirrorProxy, address _wrappedVara, + address _middleware, uint256 _eraDuration, uint256 _electionDuration, address[] calldata _validators @@ -41,7 +43,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { Storage storage router = _router(); router.genesisBlock = Gear.newGenesis(); - router.implAddresses = Gear.AddressBook(_mirror, _mirrorProxy, _wrappedVara); + router.implAddresses = Gear.AddressBook(_mirror, _mirrorProxy, _wrappedVara, _middleware); router.validationSettings.signingThresholdPercentage = Gear.SIGNING_THRESHOLD_PERCENTAGE; router.computeSettings = Gear.defaultComputationSettings(); router.timelines = Gear.Timelines(_eraDuration, _electionDuration); @@ -110,6 +112,10 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { return _router().implAddresses.wrappedVara; } + function middleware() public view returns (address) { + return _router().implAddresses.middleware; + } + function areValidators(address[] calldata _validators) public view returns (bool) { Gear.Validators storage _currentValidators = Gear.currentEraValidators(_router()); @@ -323,6 +329,72 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { ); } + function commitRequestSlash(Gear.RequestSlashCommitment calldata commitment, bytes[] calldata signatures) + external + { + Storage storage router = _router(); + + uint256 currentEraIndex = (block.timestamp - router.genesisBlock.timestamp) / router.timelines.era; + + // Validate the era index + require(commitment.eraIndex == currentEraIndex, "commitment era index is invalid"); + + // Ensure the commitment window is valid + uint256 eraStart = router.genesisBlock.timestamp + router.timelines.era * currentEraIndex; + require(block.timestamp >= eraStart, "current era has not started yet"); + + // Validate signatures + bytes32 commitmentHash = Gear.requestSlashCommitmentHash(commitment); + require( + Gear.validateSignatures(router, keccak256(abi.encodePacked(commitmentHash)), signatures), + "request slash commitment signatures verification failed" + ); + + // Ensure middleware is set + address middlewareAddress = router.implAddresses.middleware; + require(middlewareAddress != address(0), "Middleware address not set"); + + IMiddleware middlewareInstance = IMiddleware(middlewareAddress); + + // Call the middleware's `requestSlash` function + middlewareInstance.requestSlash(commitment.slashes); + + emit RequestSlashCommitmentProcessed(commitmentHash, commitment.slashes); + } + + function commitExecuteSlash(Gear.ExecuteSlashCommitment calldata commitment, bytes[] calldata signatures) + external + { + Storage storage router = _router(); + + uint256 currentEraIndex = (block.timestamp - router.genesisBlock.timestamp) / router.timelines.era; + + // Validate the era index + require(commitment.eraIndex == currentEraIndex, "commitment era index is invalid"); + + // Ensure the commitment window is valid + uint256 eraStart = router.genesisBlock.timestamp + router.timelines.era * currentEraIndex; + require(block.timestamp >= eraStart, "current era has not started yet"); + + // Validate signatures + bytes32 commitmentHash = Gear.executeSlashCommitmentHash(commitment); + require( + Gear.validateSignatures(router, keccak256(abi.encodePacked(commitmentHash)), signatures), + "execute slash commitment signatures verification failed" + ); + + // Ensure middleware is set + address middlewareAddress = router.implAddresses.middleware; + require(middlewareAddress != address(0), "Middleware address not set"); + + IMiddleware middlewareInstance = IMiddleware(middlewareAddress); + + // Call the middleware's `executeSlash` function + middlewareInstance.executeSlash(commitment.slashIdentifiers); + + emit ExecuteSlashCommitmentProcessed(commitmentHash, commitment.slashIdentifiers); + } + /* Helper private functions */ function _createProgram(bytes32 _codeId, bytes32 _salt) private returns (address) { diff --git a/ethexe/contracts/src/libraries/Gear.sol b/ethexe/contracts/src/libraries/Gear.sol index 7e663d96f9a..11ae6e38e32 100644 --- a/ethexe/contracts/src/libraries/Gear.sol +++ b/ethexe/contracts/src/libraries/Gear.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.26; import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {IMiddleware} from "../IMiddleware.sol"; import {IRouter} from "../IRouter.sol"; import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; @@ -30,6 +31,7 @@ library Gear { address mirror; address mirrorProxy; address wrappedVara; + address middleware; } struct ValidatorsCommitment { @@ -101,6 +103,16 @@ library Gear { Message[] messages; } + struct RequestSlashCommitment { + uint256 eraIndex; + IMiddleware.SlashData[] slashes; + } + + struct ExecuteSlashCommitment { + uint256 eraIndex; + IMiddleware.SlashIdentifier[] slashIdentifiers; + } + struct Timelines { uint256 era; uint256 election; @@ -118,6 +130,73 @@ library Gear { uint128 value; } + /** + * @dev Computes the commitment hash for a request to slash operators. + * @param commitment The RequestSlashCommitment struct containing eraIndex and slashes. + * @return bytes32 The keccak256 hash of the request slash commitment. + */ + function requestSlashCommitmentHash(RequestSlashCommitment memory commitment) internal pure returns (bytes32) { + bytes32 slashesHash = _hashSlashData(commitment.slashes); + return keccak256(abi.encodePacked(commitment.eraIndex, slashesHash)); + } + + /** + * @dev Computes the commitment hash for executing slashes. + * @param commitment The ExecuteSlashCommitment struct containing eraIndex and slashIdentifiers. + * @return bytes32 The keccak256 hash of the execute slash commitment. + */ + function executeSlashCommitmentHash(ExecuteSlashCommitment memory commitment) internal pure returns (bytes32) { + bytes32 slashIdentifiersHash = _hashSlashIdentifiers(commitment.slashIdentifiers); + return keccak256(abi.encodePacked(commitment.eraIndex, slashIdentifiersHash)); + } + + /** + * @dev Internal helper to hash an array of SlashData structs. + * @param slashes The array of SlashData structs. + * @return bytes32 The keccak256 hash of the slash data. + */ + function _hashSlashData(IMiddleware.SlashData[] memory slashes) private pure returns (bytes32) { + bytes memory encodedSlashes; + for (uint256 i = 0; i < slashes.length; i++) { + IMiddleware.SlashData memory slash = slashes[i]; + encodedSlashes = + abi.encodePacked(encodedSlashes, slash.operator, slash.ts, _hashVaultSlashData(slash.vaults)); + } + return keccak256(encodedSlashes); + } + + /** + * @dev Internal helper to hash an array of VaultSlashData structs. + * @param vaults The array of VaultSlashData structs. + * @return bytes32 The keccak256 hash of the vault slash data. + */ + function _hashVaultSlashData(IMiddleware.VaultSlashData[] memory vaults) private pure returns (bytes32) { + bytes memory encodedVaults; + for (uint256 i = 0; i < vaults.length; i++) { + IMiddleware.VaultSlashData memory vault = vaults[i]; + encodedVaults = abi.encodePacked(encodedVaults, vault.vault, vault.amount); + } + return keccak256(encodedVaults); + } + + /** + * @dev Internal helper to hash an array of SlashIdentifier structs. + * @param slashIdentifiers The array of SlashIdentifier structs. + * @return bytes32 The keccak256 hash of the slash identifiers. + */ + function _hashSlashIdentifiers(IMiddleware.SlashIdentifier[] memory slashIdentifiers) + private + pure + returns (bytes32) + { + bytes memory encodedIdentifiers; + for (uint256 i = 0; i < slashIdentifiers.length; i++) { + IMiddleware.SlashIdentifier memory identifier = slashIdentifiers[i]; + encodedIdentifiers = abi.encodePacked(encodedIdentifiers, identifier.vault, identifier.index); + } + return keccak256(encodedIdentifiers); + } + function validatorsCommitmentHash(Gear.ValidatorsCommitment memory commitment) internal pure returns (bytes32) { return keccak256(abi.encodePacked(commitment.validators, commitment.eraIndex)); } diff --git a/ethexe/contracts/test/Base.t.sol b/ethexe/contracts/test/Base.t.sol index 9b6de315b4a..8ce465aa1d4 100644 --- a/ethexe/contracts/test/Base.t.sol +++ b/ethexe/contracts/test/Base.t.sol @@ -19,6 +19,7 @@ import {WrappedVara} from "../src/WrappedVara.sol"; import {IMirror, Mirror} from "../src/Mirror.sol"; import {MirrorProxy} from "../src/MirrorProxy.sol"; import {IRouter, Router} from "../src/Router.sol"; +import {IMiddleware} from "../src/IMiddleware.sol"; import {Middleware} from "../src/Middleware.sol"; import {Gear} from "../src/libraries/Gear.sol"; @@ -68,7 +69,7 @@ contract Base is POCBaseTest { SYMBIOTIC_CORE_PROJECT_ROOT = "lib/symbiotic-core/"; super.setUp(); - Middleware.Config memory cfg = Middleware.Config({ + Middleware.Config memory cfg = IMiddleware.Config({ eraDuration: eraDuration, minVaultEpochDuration: eraDuration * 2, operatorGracePeriod: eraDuration * 2, @@ -95,11 +96,13 @@ contract Base is POCBaseTest { function setUpRouter(address[] memory _validators) internal { require(admin != address(0), "Base: admin must be initialized"); require(address(wrappedVara) != address(0), "Base: wrappedVara should be initialized"); + require(address(middleware) != address(0), "Base: middleware should be initialized"); require(eraDuration > 0, "Base: eraDuration should be greater than 0"); require(electionDuration > 0, "Base: electionDuration should be greater than 0"); require(blockDuration > 0, "Base: blockDuration should be greater than 0"); address wrappedVaraAddress = address(wrappedVara); + address middlewareAddress = address(middleware); address mirrorAddress = vm.computeCreateAddress(admin, vm.getNonce(admin) + 2); address mirrorProxyAddress = vm.computeCreateAddress(admin, vm.getNonce(admin) + 3); @@ -117,6 +120,7 @@ contract Base is POCBaseTest { mirrorAddress, mirrorProxyAddress, wrappedVaraAddress, + middlewareAddress, uint256(eraDuration), uint256(electionDuration), _validators @@ -184,6 +188,20 @@ contract Base is POCBaseTest { router.commitValidators(commitment, signBytes(_privateKeys, message)); } + function commitRequestSlash(uint256[] memory _privateKeys, Gear.RequestSlashCommitment memory commitment) + internal + { + bytes memory message = bytes.concat(Gear.requestSlashCommitmentHash(commitment)); + router.commitRequestSlash(commitment, signBytes(_privateKeys, message)); + } + + function commitExecuteSlash(uint256[] memory _privateKeys, Gear.ExecuteSlashCommitment memory commitment) + internal + { + bytes memory message = bytes.concat(Gear.executeSlashCommitmentHash(commitment)); + router.commitExecuteSlash(commitment, signBytes(_privateKeys, message)); + } + function commitCode(uint256[] memory _privateKeys, Gear.CodeCommitment memory _commitment) internal { Gear.CodeCommitment[] memory _commitments = new Gear.CodeCommitment[](1); _commitments[0] = _commitment; diff --git a/ethexe/contracts/test/Middleware.t.sol b/ethexe/contracts/test/Middleware.t.sol index 5756e512156..70e965fc79f 100644 --- a/ethexe/contracts/test/Middleware.t.sol +++ b/ethexe/contracts/test/Middleware.t.sol @@ -17,6 +17,7 @@ import {IOperatorSpecificDelegator} from "symbiotic-core/src/interfaces/delegato import {IVetoSlasher} from "symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol"; import {IBaseSlasher} from "symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol"; +import {IMiddleware} from "../src/IMiddleware.sol"; import {Middleware} from "../src/Middleware.sol"; import {WrappedVara} from "../src/WrappedVara.sol"; import {MapWithTimeData} from "../src/libraries/MapWithTimeData.sol"; @@ -423,12 +424,13 @@ contract MiddlewareTest is Base { (address operator1,, address vault1, address vault2,,) = prepareTwoOperators(); // Try request slashes for one operator, but 2 vaults - Middleware.VaultSlashData[] memory vaults = new Middleware.VaultSlashData[](2); - vaults[0] = Middleware.VaultSlashData({vault: vault1, amount: 10}); - vaults[1] = Middleware.VaultSlashData({vault: vault2, amount: 20}); + Middleware.VaultSlashData[] memory vaults = new IMiddleware.VaultSlashData[](2); + vaults[0] = IMiddleware.VaultSlashData({vault: vault1, amount: 10}); + vaults[1] = IMiddleware.VaultSlashData({vault: vault2, amount: 20}); Middleware.SlashData[] memory slashes = new Middleware.SlashData[](1); - slashes[0] = Middleware.SlashData({operator: operator1, ts: uint48(vm.getBlockTimestamp() - 1), vaults: vaults}); + slashes[0] = + IMiddleware.SlashData({operator: operator1, ts: uint48(vm.getBlockTimestamp() - 1), vaults: vaults}); requestSlash(slashes, IVetoSlasher.InsufficientSlash.selector); @@ -439,8 +441,9 @@ contract MiddlewareTest is Base { vm.warp(vm.getBlockTimestamp() + 1); // Request slashes with correct vaults - vaults[1] = Middleware.VaultSlashData({vault: vault3, amount: 30}); - slashes[0] = Middleware.SlashData({operator: operator1, ts: uint48(vm.getBlockTimestamp() - 1), vaults: vaults}); + vaults[1] = IMiddleware.VaultSlashData({vault: vault3, amount: 30}); + slashes[0] = + IMiddleware.SlashData({operator: operator1, ts: uint48(vm.getBlockTimestamp() - 1), vaults: vaults}); requestSlash(slashes, 0); } @@ -448,19 +451,19 @@ contract MiddlewareTest is Base { (address operator1, address operator2, address vault1, address vault2,,) = prepareTwoOperators(); // Request slashes for 2 operators with corresponding vaults - Middleware.VaultSlashData[] memory operator1_vaults = new Middleware.VaultSlashData[](1); - operator1_vaults[0] = Middleware.VaultSlashData({vault: vault1, amount: 10}); + Middleware.VaultSlashData[] memory operator1_vaults = new IMiddleware.VaultSlashData[](1); + operator1_vaults[0] = IMiddleware.VaultSlashData({vault: vault1, amount: 10}); - Middleware.VaultSlashData[] memory operator2_vaults = new Middleware.VaultSlashData[](1); - operator2_vaults[0] = Middleware.VaultSlashData({vault: vault2, amount: 20}); + Middleware.VaultSlashData[] memory operator2_vaults = new IMiddleware.VaultSlashData[](1); + operator2_vaults[0] = IMiddleware.VaultSlashData({vault: vault2, amount: 20}); - Middleware.SlashData[] memory slashes = new Middleware.SlashData[](2); - slashes[0] = Middleware.SlashData({ + Middleware.SlashData[] memory slashes = new IMiddleware.SlashData[](2); + slashes[0] = IMiddleware.SlashData({ operator: operator1, ts: uint48(vm.getBlockTimestamp() - 1), vaults: operator1_vaults }); - slashes[1] = Middleware.SlashData({ + slashes[1] = IMiddleware.SlashData({ operator: operator2, ts: uint48(vm.getBlockTimestamp() - 1), vaults: operator2_vaults @@ -530,8 +533,8 @@ contract MiddlewareTest is Base { } function executeSlash(address vault, uint256 index) private { - Middleware.SlashIdentifier[] memory slashes = new Middleware.SlashIdentifier[](1); - slashes[0] = Middleware.SlashIdentifier({vault: vault, index: index}); + Middleware.SlashIdentifier[] memory slashes = new IMiddleware.SlashIdentifier[](1); + slashes[0] = IMiddleware.SlashIdentifier({vault: vault, index: index}); vm.startPrank(admin); { @@ -544,11 +547,11 @@ contract MiddlewareTest is Base { private returns (uint256 slashIndex) { - Middleware.VaultSlashData[] memory vaults = new Middleware.VaultSlashData[](1); - vaults[0] = Middleware.VaultSlashData({vault: vault, amount: amount}); + IMiddleware.VaultSlashData[] memory vaults = new IMiddleware.VaultSlashData[](1); + vaults[0] = IMiddleware.VaultSlashData({vault: vault, amount: amount}); - Middleware.SlashData[] memory slashes = new Middleware.SlashData[](1); - slashes[0] = Middleware.SlashData({operator: operator, ts: ts, vaults: vaults}); + IMiddleware.SlashData[] memory slashes = new IMiddleware.SlashData[](1); + slashes[0] = IMiddleware.SlashData({operator: operator, ts: ts, vaults: vaults}); slashIndex = requestSlash(slashes, err)[0]; assertNotEq(slashIndex, type(uint256).max); diff --git a/ethexe/contracts/test/POC.t.sol b/ethexe/contracts/test/POC.t.sol index 7e7d791e543..b291ad40b4b 100644 --- a/ethexe/contracts/test/POC.t.sol +++ b/ethexe/contracts/test/POC.t.sol @@ -1,11 +1,14 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.26; +import {console} from "forge-std/Test.sol"; import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; import "forge-std/Test.sol"; +import {POCBaseTest} from "symbiotic-core/test/POCBase.t.sol"; + import {IVaultConfigurator} from "symbiotic-core/src/interfaces/IVaultConfigurator.sol"; import {IVault} from "symbiotic-core/src/interfaces/vault/IVault.sol"; import {IBaseDelegator} from "symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol"; @@ -15,8 +18,10 @@ import {IBaseSlasher} from "symbiotic-core/src/interfaces/slasher/IBaseSlasher.s import {Gear} from "../src/libraries/Gear.sol"; import {Base} from "./Base.t.sol"; +import {MapWithTimeData} from "../src/libraries/MapWithTimeData.sol"; import {IMirror} from "../src/Mirror.sol"; import {IRouter} from "../src/IRouter.sol"; +import {IMiddleware} from "./../src/IMiddleware.sol"; contract POCTest is Base { using MessageHashUtils for address; @@ -24,6 +29,7 @@ contract POCTest is Base { EnumerableMap.AddressToUintMap private operators; address[] private vaults; + POCBaseTest private sym; function setUp() public override { admin = 0x116B4369a90d2E9DA6BD7a924A23B164E10f6FE9; @@ -49,13 +55,15 @@ contract POCTest is Base { setUpRouter(_validators); // Change slash requester and executor to router - // Note: just to check that it is possible to change them for now and do not affect the poc test vm.startPrank(admin); { middleware.changeSlashRequester(address(router)); middleware.changeSlashExecutor(address(router)); } vm.stopPrank(); + + // For understanding where symbiotic ecosystem is using + sym = POCBaseTest(address(this)); } function test_POC() public { @@ -222,4 +230,57 @@ contract POCTest is Base { ) ); } + + function vetoDeadline(address slasher, uint256 slash_index) private view returns (uint48) { + (, address operator,,, uint48 _vetoDeadline,) = IVetoSlasher(slasher).slashRequests(slash_index); + console.log("operator:", operator, _vetoDeadline); + return _vetoDeadline; + } + + function test_requestAndExecuteSlashCommitment() public { + address operator1 = address(0x1); + uint256 stake1 = 1_000; + address vault1 = createOperatorWithStake(operator1, stake1); + + // Calculate the current era and increment for next era + uint256 currentEraIndex = (block.timestamp - router.genesisTimestamp()) / eraDuration; + uint256 nextEraIndex = currentEraIndex + 1; + + // Move to the election period for the next era + uint256 nextEraStart = router.genesisTimestamp() + eraDuration * nextEraIndex; + vm.warp(nextEraStart); + + address[] memory _validators = router.validators(); + uint256[] memory _privateKeys = new uint256[](_validators.length); + for (uint256 i = 0; i < _validators.length; i++) { + address _operator = _validators[i]; + _privateKeys[i] = operators.get(_operator); + } + + // Set up slash request commitment + IMiddleware.VaultSlashData[] memory vaultData = new IMiddleware.VaultSlashData[](1); + vaultData[0] = IMiddleware.VaultSlashData({vault: vault1, amount: 500}); + + IMiddleware.SlashData[] memory slashDataArray = new IMiddleware.SlashData[](1); + slashDataArray[0] = + IMiddleware.SlashData({operator: operator1, ts: uint48(block.timestamp - 1), vaults: vaultData}); + + Gear.RequestSlashCommitment memory requestCommitment = + Gear.RequestSlashCommitment({eraIndex: nextEraIndex, slashes: slashDataArray}); + + commitRequestSlash(_privateKeys, requestCommitment); + + uint48 _vetoDeadline = vetoDeadline(IVault(vault1).slasher(), 0); + + vm.warp(_vetoDeadline); + + // Execute Slash Commitment + IMiddleware.SlashIdentifier[] memory slashIdArray = new IMiddleware.SlashIdentifier[](1); + slashIdArray[0] = IMiddleware.SlashIdentifier({vault: vault1, index: 0}); + + Gear.ExecuteSlashCommitment memory executeCommitment = + Gear.ExecuteSlashCommitment({eraIndex: nextEraIndex, slashIdentifiers: slashIdArray}); + + commitExecuteSlash(_privateKeys, executeCommitment); + } } diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index 504837d7094..3ece596e69f 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.26; import {console} from "forge-std/Test.sol"; import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import {Gear} from "../src/libraries/Gear.sol"; +import {IMiddleware} from "./../src/IMiddleware.sol"; import {Base} from "./Base.t.sol"; contract RouterTest is Base { @@ -31,6 +32,7 @@ contract RouterTest is Base { maxValidators = 3; setUpWrappedVara(); + setUpMiddleware(); validators.push(alicePublic); validators.push(bobPublic); diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index c9896ce70d6..f0ef88b09b6 100644 --- a/ethexe/ethereum/Mirror.json +++ b/ethexe/ethereum/Mirror.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_decoder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576116bb908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea2646970667358221220bce46f8db7a45a91e6f4aaf7f3264e88d392541dfb781568d6e0b81aab4b4c1364736f6c634300081c0033","sourceMap":"403:9266:118:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea2646970667358221220bce46f8db7a45a91e6f4aaf7f3264e88d392541dfb781568d6e0b81aab4b4c1364736f6c634300081c0033","sourceMap":"403:9266:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;1633:23;;403:9266;;3811:41;;403:9266;-1:-1:-1;;;;;3811:16:118;3818:8;;:::i;:::-;3811:16;:::i;:::-;403:9266;;;;;;;;;;3811:41;;3846:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;403:9266;;-1:-1:-1;;;;;3888:16:118;403:9266;;3888:16;;:::i;:::-;403:9266;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;;-1:-1:-1;;;;;3811:41:118;;;;;-1:-1:-1;3811:41:118;;;403:9266;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:118;2500:23;2492:57;:::i;:::-;403:9266;;2204:9;;;:37;;;403:9266;;;;1103:259;;403:9266;;;-1:-1:-1;;403:9266:118;;;;;;;2500:9;3049:57;403:9266;;;;;;2992:40;;;3017:4;;403:9266;;;;;;;;;2992:40;;;;;;:::i;:::-;403:9266;2982:51;;;3049:57;-1:-1:-1;;;;;3078:9:118;;:::i;:::-;403:9266;;;;3049:57;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;1103:259;1191:61;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:118;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;1266:85;1191:61;403:9266;1191:61;;;1103:259;1266:85;;:::i;:::-;1103:259;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:9266;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;2204:37;2217:9;;;:::i;:::-;2230:11;403:9266;-1:-1:-1;;;;;403:9266:118;;;;;2217:24;2204:37;;403:9266;;;;;;-1:-1:-1;;403:9266:118;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;860:59;-1:-1:-1;;;;;882:8:118;;:::i;:::-;403:9266;868:10;:22;860:59;:::i;:::-;4564:19;;;:::i;:::-;4595:4;-1:-1:-1;;;;;403:9266:118;;;4564:36;403:9266;;4733:20;;;403:9266;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;5828:27;;-1:-1:-1;;403:9266:118;;;;;;5828:27;403:9266;5908:3;5886:20;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:20;403:9266;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;4733:20;403:9266;;;;;;;;;;;-1:-1:-1;;;;;;403:9266:118;;;;;;;;4318:243:122;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;;4417:15:122;;403:9266:118;;;;;;;;;;;;;;;4318:243:122;;;;;;403:9266:118;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;4318:243:122;;;;;;;;;;:::i;:::-;403:9266:118;4295:276:122;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6144:28;;;6214:7;;;:::i;:::-;403:9266;5871:13;;;6140:162;6279:7;;;:::i;:::-;6140:162;;403:9266;;;;;;;;;;;;5886:20;403:9266;;;;;6329:25;4848:23;;;;403:9266;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;8077:13;403:9266;8112:3;8092:18;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8303:65:122;403:9266:118;8303:65:122;;403:9266:118;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;8303:65:122;;;;;;:::i;:::-;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8297:17;;;;:::i;:::-;8316:11;;;:::i;:::-;;;;:::i;:::-;8378;;;:::i;:::-;403:9266;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;8348:42;;;403:9266;;8077:13;;8092:18;-1:-1:-1;403:9266:118;;;;;8418:27;403:9266;4932:21;;;;-1:-1:-1;;;;;4932:21:118;;;:::i;:::-;403:9266;4928:102;;8072:329;403:9266;;5422:26;8303:65:122;5387:21:118;5316:19;5095:9;403:9266;5108:24;;;;403:9266;5095:37;;;5091:110;;5316:19;:::i;:::-;5387:21;;:::i;:::-;5422:26;;;:::i;:::-;403:9266;;;5047:101:122;;;;403:9266:118;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;;5047:101:122;;;;;;:::i;:::-;403:9266:118;5024:134:122;;403:9266:118;;;;;;5091:110;403:9266;5095:9;403:9266;8978:23;403:9266;;;;;;8978:23;5316:19;:::i;4928:102::-;4997:21;;;:::i;:::-;403:9266;;;;2492:57;-1:-1:-1;;;;;403:9266:118;;2500:23;2492:57;:::i;:::-;-1:-1:-1;;;;;403:9266:118;-1:-1:-1;;;;;;403:9266:118;;;;;;;;1633:23;;403:9266;;3811:41;403:9266;-1:-1:-1;;;;;3811:16:118;3818:8;;:::i;3811:16::-;403:9266;;;;;;;;;;3811:41;;4595:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;4928:102;403:9266;;;-1:-1:-1;;;;;3888:16:118;403:9266;;3888:16;;:::i;:::-;4928:102;;;;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;3811:41;;;;;-1:-1:-1;3811:41:118;;403:9266;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;664:26;403:9266;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;-1:-1:-1;;;;;3536:9:118;;:::i;:::-;403:9266;3501:45;403:9266;;;;;;;3501:45;403:9266;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:118;2500:23;2492:57;:::i;:::-;1107:10;1103:259;;403:9266;3667:39;403:9266;;;;;;;3667:39;403:9266;1103:259;1154:8;403:9266;1191:61;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:118;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;1266:85;403:9266;1191:61;3667:39;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;;;;;;;;;;;:::i;403:9266::-;;;;;;-1:-1:-1;;403:9266:118;;;;;696:24;403:9266;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:118;;:::i;860:59::-;4066:11;403:9266;;4058:72;-1:-1:-1;;;;;403:9266:118;;4066:25;4058:72;:::i;:::-;403:9266;;;4140:68;-1:-1:-1;;;;;403:9266:118;;4148:21;4140:68;:::i;:::-;-1:-1:-1;;;;;;403:9266:118;;;;;;;4066:11;403:9266;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;-1:-1:-1;;403:9266:118;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:118;2500:23;2492:57;:::i;:::-;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;1103:259;;403:9266;3338:63;;;-1:-1:-1;;;;;3373:9:118;;:::i;:::-;403:9266;;;;;;;;;3338:63;;:::i;:::-;;;;403:9266;1103:259;1191:61;1154:8;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:118;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:118;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;3338:63;1191:61;1266:85;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:118;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:118;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:9266:118;;;;;;;;-1:-1:-1;;403:9266:118;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:118;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:118;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:9266:118;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;:::o;2606:108::-;403:9266;;-1:-1:-1;;;2671:36:118;;;403:9266;2671:36;403:9266;2692:4;2671:36;;;;;;;-1:-1:-1;2671:36:118;;;2664:43;2606:108;:::o;2671:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2606:108;:::o;2671:36::-;;;;;9048:182;403:9266;;-1:-1:-1;;;9150:33:118;;403:9266;9150:33;;403:9266;;9150:33;;403:9266;;-1:-1:-1;;;;;403:9266:118;9150:33;;;;;;;-1:-1:-1;9150:33:118;;;9048:182;-1:-1:-1;;;;;;403:9266:118;;9048:182::o;9150:33::-;;;;;;;;;;;;;;:::i;:::-;;;;9236:182;403:9266;;9300:10;-1:-1:-1;;;;;403:9266:118;;;9300:21;403:9266;;9344:9;9337:16;:::o;9296:116::-;9300:10;9384:17;:::o;403:9266::-;-1:-1:-1;;;;;403:9266:118;;;;;;-1:-1:-1;;403:9266:118;;;;:::o;9424:243::-;;-1:-1:-1;;;;;403:9266:118;9506:10;9502:159;;9424:243;;:::o;9502:159::-;403:9266;;9547:45;-1:-1:-1;;;;;9547:16:118;9554:8;;:::i;9547:16::-;403:9266;;-1:-1:-1;;;9547:45:118;;-1:-1:-1;;;;;403:9266:118;;;9547:45;;;403:9266;;;;;;;;;;;;9515:1;;403:9266;9547:45;;;;;;;9515:1;9547:45;;;9502:159;403:9266;;;;9424:243::o;403:9266::-;;;-1:-1:-1;;;403:9266:118;;;9547:45;403:9266;;;;;;;;;9547:45;403:9266;;;;;;9547:45;;;;403:9266;9547:45;403:9266;9547:45;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;403:9266:118;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;403:9266:118;;;;:::o;:::-;;;:::o;7148:784::-;7240:20;;;;;;:::i;:::-;7262:14;;;;;;;;;:::i;:::-;;;:::i;:::-;7292:7;403:9266;-1:-1:-1;;;;;403:9266:118;;;7288:529;;7148:784;7838:16;;7832:93;7838:16;7856:14;7838:16;;;;;;:::i;:::-;7856:14;;;;:::i;:::-;7872:21;-1:-1:-1;;;;;;7898:26:118;;;;;:::i;:::-;403:9266;;-1:-1:-1;;;;;403:9266:118;7838:16;403:9266;;;;7262:14;403:9266;;7262:14;403:9266;;;;:::i;:::-;;;7240:20;403:9266;;;7872:21;403:9266;7838:16;403:9266;;;7832:93;;;7148:784::o;7288:529::-;7292:7;7446:20;;;;;:::i;:::-;7484:16;7353:279;7484:16;;;;;;:::i;:::-;7518:14;;;;;;:::i;:::-;7592:26;;;;;:::i;:::-;7484:16;403:9266;-1:-1:-1;;;7240:20:118;7353:279;;;;;-1:-1:-1;;;;;403:9266:118;;;7353:279;;;403:9266;;;;;;;;;-1:-1:-1;;;;;403:9266:118;;;;;;;;:::i;:::-;;;;;;;7550:21;;;403:9266;;;;;-1:-1:-1;;;;;;403:9266:118;;;;;7353:279;-1:-1:-1;;7353:279:118;;;;;;:::i;:::-;7704:36;;7722:7;7704:36;;;:::i;:::-;;7755:52;;7288:529;;;;7755:52;7786:7;;:::o;6420:653::-;6505:7;403:9266;-1:-1:-1;;;;;403:9266:118;;6501:474;;6420:653;7011:20;6990:76;;7011:20;;;;;:::i;:::-;7033:16;;;;;;:::i;:::-;7051:14;;;;;;;;:::i;:::-;403:9266;7033:16;403:9266;;;;;;;;;;;;6990:76;;:::i;:::-;;;;6420:653::o;6501:474::-;6505:7;6690:20;;;;;;;;;:::i;:::-;6566:224;6728:16;;;;;;:::i;:::-;6762:14;;-1:-1:-1;;;;;403:9266:118;6762:14;;;;;:::i;:::-;6728:16;403:9266;-1:-1:-1;;;6690:20:118;6566:224;;;;;403:9266;;6566:224;;;403:9266;-1:-1:-1;;;;;403:9266:118;;;;;;;;;;;;;;;;;;;;;6566:224;403:9266;:::i;:::-;;;;;;;6566:224;403:9266;;6566:224;;;;;;:::i;:::-;6862:36;;6880:7;6862:36;;;:::i;:::-;;6913:52;;6501:474;;;6913:52;6944:7;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initialize(address,address)":"485cc955","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[]))":"9ed32350","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_decoder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"initializer\":{\"details\":\"This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d\",\"dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b\",\"dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f\",\"dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831\",\"dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_decoder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}],"stateMutability":"nonpayable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac","urls":["bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d","dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf","urls":["bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b","dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9","urls":["bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f","dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de","urls":["bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831","dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":67047,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67049,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67052,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67054,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67056,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":67774,"exportedSymbols":{"Clones":[42512],"Gear":[70080],"IMirror":[65178],"IMirrorDecoder":[65215],"IMirrorProxy":[65223],"IRouter":[65486],"IWrappedVara":[65497],"Mirror":[67773]},"nodeType":"SourceUnit","src":"39:9631:118","nodes":[{"id":67029,"nodeType":"PragmaDirective","src":"39:24:118","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67031,"nodeType":"ImportDirective","src":"65:48:118","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":65224,"symbolAliases":[{"foreign":{"id":67030,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65223,"src":"73:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67033,"nodeType":"ImportDirective","src":"114:38:118","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":65179,"symbolAliases":[{"foreign":{"id":67032,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"122:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67035,"nodeType":"ImportDirective","src":"153:38:118","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":65487,"symbolAliases":[{"foreign":{"id":67034,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"161:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67037,"nodeType":"ImportDirective","src":"192:48:118","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":65498,"symbolAliases":[{"foreign":{"id":67036,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"200:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67039,"nodeType":"ImportDirective","src":"241:52:118","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":65216,"symbolAliases":[{"foreign":{"id":67038,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"249:14:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67041,"nodeType":"ImportDirective","src":"294:64:118","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67040,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"302:6:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67043,"nodeType":"ImportDirective","src":"359:42:118","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":67774,"sourceUnit":70081,"symbolAliases":[{"foreign":{"id":67042,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"367:4:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67773,"nodeType":"ContractDefinition","src":"403:9266:118","nodes":[{"id":67047,"nodeType":"VariableDeclaration","src":"436:22:118","nodes":[],"baseFunctions":[65131],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:118","scope":67773,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67046,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67049,"nodeType":"VariableDeclaration","src":"464:24:118","nodes":[],"baseFunctions":[65116],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:118","scope":67773,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67048,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67052,"nodeType":"VariableDeclaration","src":"664:26:118","nodes":[],"constant":false,"documentation":{"id":67050,"nodeType":"StructuredDocumentation","src":"494:165:118","text":"@dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"679:11:118","scope":67773,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67051,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67054,"nodeType":"VariableDeclaration","src":"696:24:118","nodes":[],"baseFunctions":[65111],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:118","scope":67773,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67056,"nodeType":"VariableDeclaration","src":"726:20:118","nodes":[],"baseFunctions":[65121],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:118","scope":67773,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67055,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67070,"nodeType":"ModifierDefinition","src":"828:109:118","nodes":[],"body":{"id":67069,"nodeType":"Block","src":"850:87:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"872:6:118","memberName":"sender","nodeType":"MemberAccess","src":"868:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67062,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67178,"src":"882:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:22:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616c6c6572206973206e6f742074686520726f75746572","id":67065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"892:26:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""},"value":"caller is not the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""}],"id":67059,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"860:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:59:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67067,"nodeType":"ExpressionStatement","src":"860:59:118"},{"id":67068,"nodeType":"PlaceholderStatement","src":"929:1:118"}]},"documentation":{"id":67057,"nodeType":"StructuredDocumentation","src":"753:70:118","text":"@dev Only the router can call functions marked with this modifier."},"name":"onlyRouter","nameLocation":"837:10:118","parameters":{"id":67058,"nodeType":"ParameterList","parameters":[],"src":"847:2:118"},"virtual":false,"visibility":"internal"},{"id":67104,"nodeType":"ModifierDefinition","src":"1053:326:118","nodes":[],"body":{"id":67103,"nodeType":"Block","src":"1093:286:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67073,"src":"1107:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1107:10:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67101,"nodeType":"IfStatement","src":"1103:259:118","trueBody":{"id":67100,"nodeType":"Block","src":"1119:243:118","statements":[{"assignments":[67079],"declarations":[{"constant":false,"id":67079,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:118","nodeType":"VariableDeclaration","scope":67100,"src":"1133:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67078,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67082,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67080,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67178,"src":"1154:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1133:29:118"},{"assignments":[67084],"declarations":[{"constant":false,"id":67084,"mutability":"mutable","name":"success","nameLocation":"1181:7:118","nodeType":"VariableDeclaration","scope":67100,"src":"1176:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67083,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67094,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67089,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67743,"src":"1223:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67091,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67079,"src":"1234:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67092,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67073,"src":"1246:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":67086,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67079,"src":"1198:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67085,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67724,"src":"1191:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65497_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:18:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"id":67088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:12:118","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43812,"src":"1191:31:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":67093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1176:76:118"},{"expression":{"arguments":[{"id":67096,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67084,"src":"1274:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":67097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1283:67:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""},"value":"failed to transfer non-zero amount of WVara from source to router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""}],"id":67095,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1266:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1266:85:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67099,"nodeType":"ExpressionStatement","src":"1266:85:118"}]}},{"id":67102,"nodeType":"PlaceholderStatement","src":"1371:1:118"}]},"documentation":{"id":67071,"nodeType":"StructuredDocumentation","src":"943:105:118","text":"@dev Non-zero value must be transferred from source to router in functions marked with this modifier."},"name":"retrievingValue","nameLocation":"1062:15:118","parameters":{"id":67074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67073,"mutability":"mutable","name":"value","nameLocation":"1086:5:118","nodeType":"VariableDeclaration","scope":67104,"src":"1078:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67072,"name":"uint128","nodeType":"ElementaryTypeName","src":"1078:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1077:15:118"},"virtual":false,"visibility":"internal"},{"id":67119,"nodeType":"ModifierDefinition","src":"1589:115:118","nodes":[],"body":{"id":67118,"nodeType":"Block","src":"1615:89:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67108,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67049,"src":"1633:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67109,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:118","typeDescriptions":{}}},"id":67112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1646:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1633:23:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":67114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:27:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""},"value":"program is not terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""}],"id":67107,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1625:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1625:61:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67116,"nodeType":"ExpressionStatement","src":"1625:61:118"},{"id":67117,"nodeType":"PlaceholderStatement","src":"1696:1:118"}]},"documentation":{"id":67105,"nodeType":"StructuredDocumentation","src":"1488:96:118","text":"@dev Functions marked with this modifier can be called only after the program is terminated."},"name":"whenTerminated","nameLocation":"1598:14:118","parameters":{"id":67106,"nodeType":"ParameterList","parameters":[],"src":"1612:2:118"},"virtual":false,"visibility":"internal"},{"id":67131,"nodeType":"ModifierDefinition","src":"1830:127:118","nodes":[],"body":{"id":67130,"nodeType":"Block","src":"1864:93:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67123,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67056,"src":"1882:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1882:9:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d65737361676520796574","id":67126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1893:45:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""},"value":"initializer hasn't created init message yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""}],"id":67122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1874:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:65:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67128,"nodeType":"ExpressionStatement","src":"1874:65:118"},{"id":67129,"nodeType":"PlaceholderStatement","src":"1949:1:118"}]},"documentation":{"id":67120,"nodeType":"StructuredDocumentation","src":"1710:115:118","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message."},"name":"whenInitMessageCreated","nameLocation":"1839:22:118","parameters":{"id":67121,"nodeType":"ParameterList","parameters":[],"src":"1861:2:118"},"virtual":false,"visibility":"internal"},{"id":67148,"nodeType":"ModifierDefinition","src":"2122:237:118","nodes":[],"body":{"id":67147,"nodeType":"Block","src":"2173:186:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":67142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67135,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67056,"src":"2204:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2212:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2204:9:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67138,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67743,"src":"2217:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67140,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67052,"src":"2230:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2217:24:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2204:37:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d657373616765207965743b20616e6420736f75726365206973206e6f7420696e697469616c697a6572","id":67143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2255:76:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""},"value":"initializer hasn't created init message yet; and source is not initializer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""}],"id":67134,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2183:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2183:158:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67145,"nodeType":"ExpressionStatement","src":"2183:158:118"},{"id":67146,"nodeType":"PlaceholderStatement","src":"2351:1:118"}]},"documentation":{"id":67132,"nodeType":"StructuredDocumentation","src":"1963:154:118","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access)."},"name":"whenInitMessageCreatedOrFromInitializer","nameLocation":"2131:39:118","parameters":{"id":67133,"nodeType":"ParameterList","parameters":[],"src":"2170:2:118"},"virtual":false,"visibility":"internal"},{"id":67163,"nodeType":"ModifierDefinition","src":"2459:108:118","nodes":[],"body":{"id":67162,"nodeType":"Block","src":"2482:85:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67152,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67049,"src":"2500:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2513:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67153,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:118","typeDescriptions":{}}},"id":67156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2513:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:23:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":67158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2525:23:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":67151,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2492:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:57:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67160,"nodeType":"ExpressionStatement","src":"2492:57:118"},{"id":67161,"nodeType":"PlaceholderStatement","src":"2559:1:118"}]},"documentation":{"id":67149,"nodeType":"StructuredDocumentation","src":"2365:89:118","text":"@dev Functions marked with this modifier can be called only if the program is active."},"name":"whileActive","nameLocation":"2468:11:118","parameters":{"id":67150,"nodeType":"ParameterList","parameters":[],"src":"2479:2:118"},"virtual":false,"visibility":"internal"},{"id":67178,"nodeType":"FunctionDefinition","src":"2606:108:118","nodes":[],"body":{"id":67177,"nodeType":"Block","src":"2654:60:118","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":67171,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}],"id":67170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67169,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:118","typeDescriptions":{}}},"id":67172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67168,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65223,"src":"2671:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$65223_$","typeString":"type(contract IMirrorProxy)"}},"id":67173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$65223","typeString":"contract IMirrorProxy"}},"id":67174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:118","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":65222,"src":"2671:34:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67167,"id":67176,"nodeType":"Return","src":"2664:43:118"}]},"baseFunctions":[65126],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:118","parameters":{"id":67164,"nodeType":"ParameterList","parameters":[],"src":"2621:2:118"},"returnParameters":{"id":67167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67166,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67178,"src":"2645:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67165,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:118"},"scope":67773,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67219,"nodeType":"FunctionDefinition","src":"2750:383:118","nodes":[],"body":{"id":67218,"nodeType":"Block","src":"2959:174:118","nodes":[],"statements":[{"assignments":[67195],"declarations":[{"constant":false,"id":67195,"mutability":"mutable","name":"id","nameLocation":"2977:2:118","nodeType":"VariableDeclaration","scope":67218,"src":"2969:10:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":67207,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":67201,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}],"id":67200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67199,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:118","typeDescriptions":{}}},"id":67202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:118","subExpression":{"id":67203,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67056,"src":"3024:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":67197,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2996:12:118","memberName":"encodePacked","nodeType":"MemberAccess","src":"2992:16:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:40:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67196,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2982:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:51:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2969:64:118"},{"eventCall":{"arguments":[{"id":67209,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67195,"src":"3074:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67210,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67743,"src":"3078:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67212,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67180,"src":"3089:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67213,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67182,"src":"3099:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67208,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65054,"src":"3049:24:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3049:57:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67215,"nodeType":"EmitStatement","src":"3044:62:118"},{"expression":{"id":67216,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67195,"src":"3124:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67193,"id":67217,"nodeType":"Return","src":"3117:9:118"}]},"baseFunctions":[65140],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":67185,"kind":"modifierInvocation","modifierName":{"id":67184,"name":"whileActive","nameLocations":["2837:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67163,"src":"2837:11:118"},"nodeType":"ModifierInvocation","src":"2837:11:118"},{"id":67187,"kind":"modifierInvocation","modifierName":{"id":67186,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:118"],"nodeType":"IdentifierPath","referencedDeclaration":67148,"src":"2857:39:118"},"nodeType":"ModifierInvocation","src":"2857:39:118"},{"arguments":[{"id":67189,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67182,"src":"2921:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67190,"kind":"modifierInvocation","modifierName":{"id":67188,"name":"retrievingValue","nameLocations":["2905:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67104,"src":"2905:15:118"},"nodeType":"ModifierInvocation","src":"2905:23:118"}],"name":"sendMessage","nameLocation":"2759:11:118","parameters":{"id":67183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67180,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:118","nodeType":"VariableDeclaration","scope":67219,"src":"2771:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67179,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67182,"mutability":"mutable","name":"_value","nameLocation":"2804:6:118","nodeType":"VariableDeclaration","scope":67219,"src":"2796:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67181,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:118"},"returnParameters":{"id":67193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67219,"src":"2946:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67244,"nodeType":"FunctionDefinition","src":"3139:269:118","nodes":[],"body":{"id":67243,"nodeType":"Block","src":"3323:85:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67236,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67221,"src":"3361:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67237,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67743,"src":"3373:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67239,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67223,"src":"3384:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67240,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67225,"src":"3394:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67235,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65065,"src":"3338:22:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:63:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67242,"nodeType":"EmitStatement","src":"3333:68:118"}]},"baseFunctions":[65149],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":67228,"kind":"modifierInvocation","modifierName":{"id":67227,"name":"whileActive","nameLocations":["3244:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67163,"src":"3244:11:118"},"nodeType":"ModifierInvocation","src":"3244:11:118"},{"id":67230,"kind":"modifierInvocation","modifierName":{"id":67229,"name":"whenInitMessageCreated","nameLocations":["3264:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67131,"src":"3264:22:118"},"nodeType":"ModifierInvocation","src":"3264:22:118"},{"arguments":[{"id":67232,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67225,"src":"3311:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67233,"kind":"modifierInvocation","modifierName":{"id":67231,"name":"retrievingValue","nameLocations":["3295:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67104,"src":"3295:15:118"},"nodeType":"ModifierInvocation","src":"3295:23:118"}],"name":"sendReply","nameLocation":"3148:9:118","parameters":{"id":67226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67221,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:118","nodeType":"VariableDeclaration","scope":67244,"src":"3158:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67223,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:118","nodeType":"VariableDeclaration","scope":67244,"src":"3178:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67222,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67225,"mutability":"mutable","name":"_value","nameLocation":"3211:6:118","nodeType":"VariableDeclaration","scope":67244,"src":"3203:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67224,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:118"},"returnParameters":{"id":67234,"nodeType":"ParameterList","parameters":[],"src":"3323:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67258,"nodeType":"FunctionDefinition","src":"3414:139:118","nodes":[],"body":{"id":67257,"nodeType":"Block","src":"3486:67:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67252,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67246,"src":"3524:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67253,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67743,"src":"3536:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:9:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":67251,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65072,"src":"3501:22:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":67255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67256,"nodeType":"EmitStatement","src":"3496:50:118"}]},"baseFunctions":[65154],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":67249,"kind":"modifierInvocation","modifierName":{"id":67248,"name":"whenInitMessageCreated","nameLocations":["3463:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67131,"src":"3463:22:118"},"nodeType":"ModifierInvocation","src":"3463:22:118"}],"name":"claimValue","nameLocation":"3423:10:118","parameters":{"id":67247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67246,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:118","nodeType":"VariableDeclaration","scope":67258,"src":"3434:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:118"},"returnParameters":{"id":67250,"nodeType":"ParameterList","parameters":[],"src":"3486:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67273,"nodeType":"FunctionDefinition","src":"3559:154:118","nodes":[],"body":{"id":67272,"nodeType":"Block","src":"3652:61:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67269,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67260,"src":"3699:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67268,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65077,"src":"3667:31:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":67270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:39:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67271,"nodeType":"EmitStatement","src":"3662:44:118"}]},"baseFunctions":[65159],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":67263,"kind":"modifierInvocation","modifierName":{"id":67262,"name":"whileActive","nameLocations":["3616:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67163,"src":"3616:11:118"},"nodeType":"ModifierInvocation","src":"3616:11:118"},{"arguments":[{"id":67265,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67260,"src":"3644:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67266,"kind":"modifierInvocation","modifierName":{"id":67264,"name":"retrievingValue","nameLocations":["3628:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67104,"src":"3628:15:118"},"nodeType":"ModifierInvocation","src":"3628:23:118"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:118","parameters":{"id":67261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67260,"mutability":"mutable","name":"_value","nameLocation":"3599:6:118","nodeType":"VariableDeclaration","scope":67273,"src":"3591:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67259,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:118"},"returnParameters":{"id":67267,"nodeType":"ParameterList","parameters":[],"src":"3652:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67300,"nodeType":"FunctionDefinition","src":"3719:193:118","nodes":[],"body":{"id":67299,"nodeType":"Block","src":"3783:129:118","nodes":[],"statements":[{"assignments":[67279],"declarations":[{"constant":false,"id":67279,"mutability":"mutable","name":"balance","nameLocation":"3801:7:118","nodeType":"VariableDeclaration","scope":67299,"src":"3793:15:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67278,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67290,"initialValue":{"arguments":[{"arguments":[{"id":67287,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}],"id":67286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3838:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67285,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:118","typeDescriptions":{}}},"id":67288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67281,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67178,"src":"3818:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67280,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67724,"src":"3811:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65497_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"id":67284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3828:9:118","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43770,"src":"3811:26:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":67289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:41:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:59:118"},{"expression":{"arguments":[{"id":67292,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67049,"src":"3877:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":67295,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67279,"src":"3896:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":67294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3888:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":67293,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:118","typeDescriptions":{}}},"id":67296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3888:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67291,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67772,"src":"3862:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:43:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67298,"nodeType":"ExpressionStatement","src":"3862:43:118"}]},"baseFunctions":[65162],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":67276,"kind":"modifierInvocation","modifierName":{"id":67275,"name":"whenTerminated","nameLocations":["3768:14:118"],"nodeType":"IdentifierPath","referencedDeclaration":67119,"src":"3768:14:118"},"nodeType":"ModifierInvocation","src":"3768:14:118"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:118","parameters":{"id":67274,"nodeType":"ParameterList","parameters":[],"src":"3758:2:118"},"returnParameters":{"id":67277,"nodeType":"ParameterList","parameters":[],"src":"3783:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67338,"nodeType":"FunctionDefinition","src":"3970:310:118","nodes":[],"body":{"id":67337,"nodeType":"Block","src":"4048:232:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67310,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67052,"src":"4066:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4081:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67311,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:118","typeDescriptions":{}}},"id":67314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4066:25:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4093:36:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67309,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4058:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:72:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67318,"nodeType":"ExpressionStatement","src":"4058:72:118"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67320,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"4148:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4167:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4159:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67321,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:118","typeDescriptions":{}}},"id":67324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4159:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4148:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4171:36:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67319,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4140:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4140:68:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67328,"nodeType":"ExpressionStatement","src":"4140:68:118"},{"expression":{"id":67331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67329,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67052,"src":"4219:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67330,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67302,"src":"4233:12:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67332,"nodeType":"ExpressionStatement","src":"4219:26:118"},{"expression":{"id":67335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67333,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"4255:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67334,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67304,"src":"4265:8:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67336,"nodeType":"ExpressionStatement","src":"4255:18:118"}]},"baseFunctions":[65169],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":67307,"kind":"modifierInvocation","modifierName":{"id":67306,"name":"onlyRouter","nameLocations":["4037:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67070,"src":"4037:10:118"},"nodeType":"ModifierInvocation","src":"4037:10:118"}],"name":"initialize","nameLocation":"3979:10:118","parameters":{"id":67305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67302,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:118","nodeType":"VariableDeclaration","scope":67338,"src":"3990:20:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67301,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67304,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:118","nodeType":"VariableDeclaration","scope":67338,"src":"4012:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67303,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:118"},"returnParameters":{"id":67308,"nodeType":"ParameterList","parameters":[],"src":"4048:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67415,"nodeType":"FunctionDefinition","src":"4363:1163:118","nodes":[],"body":{"id":67414,"nodeType":"Block","src":"4476:1050:118","nodes":[],"statements":[{"documentation":"@dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67349,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"4564:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"4564:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":67353,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67773","typeString":"contract Mirror"}],"id":67352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4587:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67351,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:118","typeDescriptions":{}}},"id":67354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4564:36:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6163746f724964206d757374206265207468697320636f6e7472616374","id":67356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:31:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""},"value":"actorId must be this contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""}],"id":67348,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4556:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:78:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67358,"nodeType":"ExpressionStatement","src":"4556:78:118"},{"assignments":[67361],"declarations":[{"constant":false,"id":67361,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:118","nodeType":"VariableDeclaration","scope":67414,"src":"4690:26:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":67366,"initialValue":{"arguments":[{"expression":{"id":67363,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"4733:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:118","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":69604,"src":"4733:20:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":67362,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67482,"src":"4719:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":67365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4719:35:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4690:64:118"},{"assignments":[67369],"declarations":[{"constant":false,"id":67369,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:118","nodeType":"VariableDeclaration","scope":67414,"src":"4809:23:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67368,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":67374,"initialValue":{"arguments":[{"expression":{"id":67371,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"4848:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:118","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":69600,"src":"4848:23:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":67370,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67674,"src":"4835:12:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":67373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:37:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4809:63:118"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67375,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"4932:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69594,"src":"4932:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4965:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4957:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67377,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:118","typeDescriptions":{}}},"id":67380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4932:35:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Set inheritor if specified.","id":67388,"nodeType":"IfStatement","src":"4928:102:118","trueBody":{"id":67387,"nodeType":"Block","src":"4969:61:118","statements":[{"expression":{"arguments":[{"expression":{"id":67383,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"4997:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5009:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69594,"src":"4997:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67382,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67689,"src":"4983:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4983:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67386,"nodeType":"ExpressionStatement","src":"4983:36:118"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67389,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67054,"src":"5095:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":67390,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5108:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5120:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69592,"src":"5108:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5095:37:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Update the state hash if changed.","id":67399,"nodeType":"IfStatement","src":"5091:110:118","trueBody":{"id":67398,"nodeType":"Block","src":"5134:67:118","statements":[{"expression":{"arguments":[{"expression":{"id":67394,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5165:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69592,"src":"5165:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67393,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67703,"src":"5148:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5148:42:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67397,"nodeType":"ExpressionStatement","src":"5148:42:118"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":67402,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5316:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"5316:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67404,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5349:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5361:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69592,"src":"5349:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67406,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5387:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69594,"src":"5387:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67408,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67341,"src":"5422:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:14:118","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69596,"src":"5422:26:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":67410,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67369,"src":"5462:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":67411,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67361,"src":"5491:18:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":67400,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5278:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:118","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":69830,"src":"5278:24:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,address,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":67412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5278:241:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67347,"id":67413,"nodeType":"Return","src":"5271:248:118"}]},"baseFunctions":[65177],"functionSelector":"9ed32350","implemented":true,"kind":"function","modifiers":[{"id":67344,"kind":"modifierInvocation","modifierName":{"id":67343,"name":"onlyRouter","nameLocations":["4447:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67070,"src":"4447:10:118"},"nodeType":"ModifierInvocation","src":"4447:10:118"}],"name":"performStateTransition","nameLocation":"4372:22:118","parameters":{"id":67342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67341,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:118","nodeType":"VariableDeclaration","scope":67415,"src":"4395:41:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":67340,"nodeType":"UserDefinedTypeName","pathNode":{"id":67339,"name":"Gear.StateTransition","nameLocations":["4395:4:118","4400:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":69605,"src":"4395:20:118"},"referencedDeclaration":69605,"src":"4395:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:118"},"returnParameters":{"id":67347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67415,"src":"4467:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67482,"nodeType":"FunctionDefinition","src":"5734:627:118","nodes":[],"body":{"id":67481,"nodeType":"Block","src":"5818:543:118","nodes":[],"statements":[{"assignments":[67425],"declarations":[{"constant":false,"id":67425,"mutability":"mutable","name":"messagesHashes","nameLocation":"5841:14:118","nodeType":"VariableDeclaration","scope":67481,"src":"5828:27:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67424,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67426,"nodeType":"VariableDeclarationStatement","src":"5828:27:118"},{"body":{"id":67475,"nodeType":"Block","src":"5913:399:118","statements":[{"assignments":[67442],"declarations":[{"constant":false,"id":67442,"mutability":"mutable","name":"message","nameLocation":"5949:7:118","nodeType":"VariableDeclaration","scope":67475,"src":"5927:29:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67441,"nodeType":"UserDefinedTypeName","pathNode":{"id":67440,"name":"Gear.Message","nameLocations":["5927:4:118","5932:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69569,"src":"5927:12:118"},"referencedDeclaration":69569,"src":"5927:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":67446,"initialValue":{"baseExpression":{"id":67443,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67419,"src":"5959:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67445,"indexExpression":{"id":67444,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67428,"src":"5969:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5959:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5927:44:118"},{"expression":{"id":67457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67447,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67425,"src":"5986:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67451,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67425,"src":"6016:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67454,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67442,"src":"6049:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":67452,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"6032:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:118","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":69776,"src":"6032:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$69569_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":67455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6032:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":67449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6003:5:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67448,"name":"bytes","nodeType":"ElementaryTypeName","src":"6003:5:118","typeDescriptions":{}}},"id":67450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6009:6:118","memberName":"concat","nodeType":"MemberAccess","src":"6003:12:118","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:55:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5986:72:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67458,"nodeType":"ExpressionStatement","src":"5986:72:118"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":67459,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67442,"src":"6144:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69568,"src":"6144:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69588_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6165:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69585,"src":"6144:23:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":67462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6171:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6144:28:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67473,"nodeType":"Block","src":"6243:59:118","statements":[{"expression":{"arguments":[{"id":67470,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67442,"src":"6279:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67469,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67609,"src":"6261:17:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69569_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6261:26:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67472,"nodeType":"ExpressionStatement","src":"6261:26:118"}]},"id":67474,"nodeType":"IfStatement","src":"6140:162:118","trueBody":{"id":67468,"nodeType":"Block","src":"6174:63:118","statements":[{"expression":{"arguments":[{"id":67465,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67442,"src":"6214:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67464,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67539,"src":"6192:21:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69569_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:30:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67467,"nodeType":"ExpressionStatement","src":"6192:30:118"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67428,"src":"5886:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67432,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67419,"src":"5890:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5900:6:118","memberName":"length","nodeType":"MemberAccess","src":"5890:16:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:20:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67476,"initializationExpression":{"assignments":[67428],"declarations":[{"constant":false,"id":67428,"mutability":"mutable","name":"i","nameLocation":"5879:1:118","nodeType":"VariableDeclaration","scope":67476,"src":"5871:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67427,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67430,"initialValue":{"hexValue":"30","id":67429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5871:13:118"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5908:3:118","subExpression":{"id":67435,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67428,"src":"5908:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67437,"nodeType":"ExpressionStatement","src":"5908:3:118"},"nodeType":"ForStatement","src":"5866:446:118"},{"expression":{"arguments":[{"id":67478,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67425,"src":"6339:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67477,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6329:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6329:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67423,"id":67480,"nodeType":"Return","src":"6322:32:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5743:13:118","parameters":{"id":67420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67419,"mutability":"mutable","name":"_messages","nameLocation":"5781:9:118","nodeType":"VariableDeclaration","scope":67482,"src":"5757:33:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69569_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":67417,"nodeType":"UserDefinedTypeName","pathNode":{"id":67416,"name":"Gear.Message","nameLocations":["5757:4:118","5762:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69569,"src":"5757:12:118"},"referencedDeclaration":69569,"src":"5757:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_storage_ptr","typeString":"struct Gear.Message"}},"id":67418,"nodeType":"ArrayTypeName","src":"5757:14:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69569_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5756:35:118"},"returnParameters":{"id":67423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67482,"src":"5809:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5809:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5808:9:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67539,"nodeType":"FunctionDefinition","src":"6420:653:118","nodes":[],"body":{"id":67538,"nodeType":"Block","src":"6491:582:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67489,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"6505:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6516:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67490,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:118","typeDescriptions":{}}},"id":67493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6505:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67526,"nodeType":"IfStatement","src":"6501:474:118","trueBody":{"id":67525,"nodeType":"Block","src":"6528:447:118","statements":[{"assignments":[67496],"declarations":[{"constant":false,"id":67496,"mutability":"mutable","name":"callData","nameLocation":"6555:8:118","nodeType":"VariableDeclaration","scope":67525,"src":"6542:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67495,"name":"bytes","nodeType":"ElementaryTypeName","src":"6542:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67511,"initialValue":{"arguments":[{"expression":{"expression":{"id":67499,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"6606:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65215_$","typeString":"type(contract IMirrorDecoder)"}},"id":67500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6621:13:118","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":65201,"src":"6606:28:118","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":67501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6635:8:118","memberName":"selector","nodeType":"MemberAccess","src":"6606:37:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67502,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"6661:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69559,"src":"6661:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67504,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"6690:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"6690:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67506,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"6728:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69563,"src":"6728:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67508,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"6762:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69565,"src":"6762:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":67497,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6566:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:18:118","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6566:22:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:224:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6542:248:118"},{"assignments":[67513,null],"declarations":[{"constant":false,"id":67513,"mutability":"mutable","name":"success","nameLocation":"6850:7:118","nodeType":"VariableDeclaration","scope":67525,"src":"6845:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67512,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67520,"initialValue":{"arguments":[{"id":67518,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67496,"src":"6889:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67514,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"6862:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6870:4:118","memberName":"call","nodeType":"MemberAccess","src":"6862:12:118","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:7:118","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"6862:26:118","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6862:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6844:54:118"},{"condition":{"id":67521,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67513,"src":"6917:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67524,"nodeType":"IfStatement","src":"6913:52:118","trueBody":{"id":67523,"nodeType":"Block","src":"6926:39:118","statements":[{"functionReturnParameters":67488,"id":67522,"nodeType":"Return","src":"6944:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67528,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"6998:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7007:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69559,"src":"6998:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67530,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"7011:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7020:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"7011:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67532,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"7033:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7042:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69563,"src":"7033:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67534,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67486,"src":"7051:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7060:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69565,"src":"7051:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67527,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65088,"src":"6990:7:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6990:76:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67537,"nodeType":"EmitStatement","src":"6985:81:118"}]},"documentation":{"id":67483,"nodeType":"StructuredDocumentation","src":"6367:48:118","text":"@dev Value never sent since goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"6429:21:118","parameters":{"id":67487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67486,"mutability":"mutable","name":"_message","nameLocation":"6473:8:118","nodeType":"VariableDeclaration","scope":67539,"src":"6451:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67485,"nodeType":"UserDefinedTypeName","pathNode":{"id":67484,"name":"Gear.Message","nameLocations":["6451:4:118","6456:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69569,"src":"6451:12:118"},"referencedDeclaration":69569,"src":"6451:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6450:32:118"},"returnParameters":{"id":67488,"nodeType":"ParameterList","parameters":[],"src":"6491:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67609,"nodeType":"FunctionDefinition","src":"7148:784:118","nodes":[],"body":{"id":67608,"nodeType":"Block","src":"7215:717:118","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":67547,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7240:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7249:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"7240:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67549,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7262:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7271:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69565,"src":"7262:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67546,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67772,"src":"7225:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7225:52:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67552,"nodeType":"ExpressionStatement","src":"7225:52:118"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67553,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"7292:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7311:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7303:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67554,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:118","typeDescriptions":{}}},"id":67557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7303:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7292:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67594,"nodeType":"IfStatement","src":"7288:529:118","trueBody":{"id":67593,"nodeType":"Block","src":"7315:502:118","statements":[{"assignments":[67560],"declarations":[{"constant":false,"id":67560,"mutability":"mutable","name":"callData","nameLocation":"7342:8:118","nodeType":"VariableDeclaration","scope":67593,"src":"7329:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67559,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67579,"initialValue":{"arguments":[{"expression":{"expression":{"id":67563,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"7393:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65215_$","typeString":"type(contract IMirrorDecoder)"}},"id":67564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7408:11:118","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":65214,"src":"7393:26:118","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":67565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7420:8:118","memberName":"selector","nodeType":"MemberAccess","src":"7393:35:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67566,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7446:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69561,"src":"7446:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67568,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7484:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7493:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69563,"src":"7484:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67570,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7518:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69565,"src":"7518:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67572,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7550:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7559:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69568,"src":"7550:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69588_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7572:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69585,"src":"7550:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67575,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7592:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7601:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69568,"src":"7592:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69588_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69587,"src":"7592:26:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":67561,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7353:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7357:18:118","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7353:22:118","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:279:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7329:303:118"},{"assignments":[67581,null],"declarations":[{"constant":false,"id":67581,"mutability":"mutable","name":"success","nameLocation":"7692:7:118","nodeType":"VariableDeclaration","scope":67593,"src":"7687:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67580,"name":"bool","nodeType":"ElementaryTypeName","src":"7687:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67588,"initialValue":{"arguments":[{"id":67586,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67560,"src":"7731:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67582,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"7704:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:4:118","memberName":"call","nodeType":"MemberAccess","src":"7704:12:118","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:7:118","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"7704:26:118","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:36:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7686:54:118"},{"condition":{"id":67589,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67581,"src":"7759:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67592,"nodeType":"IfStatement","src":"7755:52:118","trueBody":{"id":67591,"nodeType":"Block","src":"7768:39:118","statements":[{"functionReturnParameters":67545,"id":67590,"nodeType":"Return","src":"7786:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67596,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7838:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7847:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69563,"src":"7838:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67598,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7856:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69565,"src":"7856:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67600,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7872:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7881:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69568,"src":"7872:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69588_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69585,"src":"7872:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67603,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67543,"src":"7898:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69568,"src":"7898:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69588_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69587,"src":"7898:26:118","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":67595,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65099,"src":"7832:5:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":67606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7832:93:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67607,"nodeType":"EmitStatement","src":"7827:98:118"}]},"documentation":{"id":67540,"nodeType":"StructuredDocumentation","src":"7079:64:118","text":"@dev Non-zero value always sent since never goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"7157:17:118","parameters":{"id":67544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67543,"mutability":"mutable","name":"_message","nameLocation":"7197:8:118","nodeType":"VariableDeclaration","scope":67609,"src":"7175:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67542,"nodeType":"UserDefinedTypeName","pathNode":{"id":67541,"name":"Gear.Message","nameLocations":["7175:4:118","7180:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69569,"src":"7175:12:118"},"referencedDeclaration":69569,"src":"7175:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69569_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7174:32:118"},"returnParameters":{"id":67545,"nodeType":"ParameterList","parameters":[],"src":"7215:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67674,"nodeType":"FunctionDefinition","src":"7938:514:118","nodes":[],"body":{"id":67673,"nodeType":"Block","src":"8022:430:118","nodes":[],"statements":[{"assignments":[67619],"declarations":[{"constant":false,"id":67619,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8045:16:118","nodeType":"VariableDeclaration","scope":67673,"src":"8032:29:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67618,"name":"bytes","nodeType":"ElementaryTypeName","src":"8032:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67620,"nodeType":"VariableDeclarationStatement","src":"8032:29:118"},{"body":{"id":67667,"nodeType":"Block","src":"8117:284:118","statements":[{"assignments":[67636],"declarations":[{"constant":false,"id":67636,"mutability":"mutable","name":"claim","nameLocation":"8156:5:118","nodeType":"VariableDeclaration","scope":67667,"src":"8131:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":67635,"nodeType":"UserDefinedTypeName","pathNode":{"id":67634,"name":"Gear.ValueClaim","nameLocations":["8131:4:118","8136:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69626,"src":"8131:15:118"},"referencedDeclaration":69626,"src":"8131:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":67640,"initialValue":{"baseExpression":{"id":67637,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67613,"src":"8164:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67639,"indexExpression":{"id":67638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67622,"src":"8172:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8164:10:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8131:43:118"},{"expression":{"id":67651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67641,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67619,"src":"8189:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67645,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67619,"src":"8221:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67648,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67636,"src":"8260:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":67646,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"8239:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:118","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":70079,"src":"8239:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$69626_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":67649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8208:5:118","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67642,"name":"bytes","nodeType":"ElementaryTypeName","src":"8208:5:118","typeDescriptions":{}}},"id":67644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8214:6:118","memberName":"concat","nodeType":"MemberAccess","src":"8208:12:118","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8208:59:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8189:78:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67652,"nodeType":"ExpressionStatement","src":"8189:78:118"},{"expression":{"arguments":[{"expression":{"id":67654,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67636,"src":"8297:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8303:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69623,"src":"8297:17:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67656,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67636,"src":"8316:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69625,"src":"8316:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67653,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67772,"src":"8282:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:46:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67659,"nodeType":"ExpressionStatement","src":"8282:46:118"},{"eventCall":{"arguments":[{"expression":{"id":67661,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67636,"src":"8361:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8367:9:118","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":69621,"src":"8361:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67663,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67636,"src":"8378:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69625,"src":"8378:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67660,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65106,"src":"8348:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":67665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:42:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67666,"nodeType":"EmitStatement","src":"8343:47:118"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67622,"src":"8092:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67626,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67613,"src":"8096:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8104:6:118","memberName":"length","nodeType":"MemberAccess","src":"8096:14:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8092:18:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67668,"initializationExpression":{"assignments":[67622],"declarations":[{"constant":false,"id":67622,"mutability":"mutable","name":"i","nameLocation":"8085:1:118","nodeType":"VariableDeclaration","scope":67668,"src":"8077:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67621,"name":"uint256","nodeType":"ElementaryTypeName","src":"8077:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67624,"initialValue":{"hexValue":"30","id":67623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8077:13:118"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8112:3:118","subExpression":{"id":67629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67622,"src":"8112:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67631,"nodeType":"ExpressionStatement","src":"8112:3:118"},"nodeType":"ForStatement","src":"8072:329:118"},{"expression":{"arguments":[{"id":67670,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67619,"src":"8428:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67669,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8418:9:118","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67617,"id":67672,"nodeType":"Return","src":"8411:34:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7947:12:118","parameters":{"id":67614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67613,"mutability":"mutable","name":"_claims","nameLocation":"7987:7:118","nodeType":"VariableDeclaration","scope":67674,"src":"7960:34:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":67611,"nodeType":"UserDefinedTypeName","pathNode":{"id":67610,"name":"Gear.ValueClaim","nameLocations":["7960:4:118","7965:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69626,"src":"7960:15:118"},"referencedDeclaration":69626,"src":"7960:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69626_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":67612,"nodeType":"ArrayTypeName","src":"7960:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69626_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7959:36:118"},"returnParameters":{"id":67617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67674,"src":"8013:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8012:9:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67689,"nodeType":"FunctionDefinition","src":"8524:243:118","nodes":[],"body":{"id":67688,"nodeType":"Block","src":"8587:180:118","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":67683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67681,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67049,"src":"8629:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67682,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67676,"src":"8641:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8629:22:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67684,"nodeType":"ExpressionStatement","src":"8629:22:118"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67685,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67300,"src":"8728:30:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:32:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67687,"nodeType":"ExpressionStatement","src":"8728:32:118"}]},"implemented":true,"kind":"function","modifiers":[{"id":67679,"kind":"modifierInvocation","modifierName":{"id":67678,"name":"whileActive","nameLocations":["8575:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67163,"src":"8575:11:118"},"nodeType":"ModifierInvocation","src":"8575:11:118"}],"name":"_setInheritor","nameLocation":"8533:13:118","parameters":{"id":67677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67676,"mutability":"mutable","name":"_inheritor","nameLocation":"8555:10:118","nodeType":"VariableDeclaration","scope":67689,"src":"8547:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67675,"name":"address","nodeType":"ElementaryTypeName","src":"8547:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8546:20:118"},"returnParameters":{"id":67680,"nodeType":"ParameterList","parameters":[],"src":"8587:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67703,"nodeType":"FunctionDefinition","src":"8773:235:118","nodes":[],"body":{"id":67702,"nodeType":"Block","src":"8827:181:118","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":67696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67694,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67054,"src":"8870:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67695,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67691,"src":"8882:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8870:22:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":67697,"nodeType":"ExpressionStatement","src":"8870:22:118"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":67699,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67054,"src":"8991:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67698,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65043,"src":"8978:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8978:23:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67701,"nodeType":"EmitStatement","src":"8973:28:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8782:16:118","parameters":{"id":67692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67691,"mutability":"mutable","name":"_stateHash","nameLocation":"8807:10:118","nodeType":"VariableDeclaration","scope":67703,"src":"8799:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67690,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8799:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8798:20:118"},"returnParameters":{"id":67693,"nodeType":"ParameterList","parameters":[],"src":"8827:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67724,"nodeType":"FunctionDefinition","src":"9048:182:118","nodes":[],"body":{"id":67723,"nodeType":"Block","src":"9120:110:118","nodes":[],"statements":[{"assignments":[67712],"declarations":[{"constant":false,"id":67712,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9138:9:118","nodeType":"VariableDeclaration","scope":67723,"src":"9130:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67711,"name":"address","nodeType":"ElementaryTypeName","src":"9130:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67718,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67714,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67705,"src":"9158:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67713,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"9150:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65486_$","typeString":"type(contract IRouter)"}},"id":67715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:19:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65486","typeString":"contract IRouter"}},"id":67716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:11:118","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":65329,"src":"9150:31:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:33:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9130:53:118"},{"expression":{"arguments":[{"id":67720,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67712,"src":"9213:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67719,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"9200:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65497_$","typeString":"type(contract IWrappedVara)"}},"id":67721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9200:23:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"functionReturnParameters":67710,"id":67722,"nodeType":"Return","src":"9193:30:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9057:6:118","parameters":{"id":67706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67705,"mutability":"mutable","name":"routerAddr","nameLocation":"9072:10:118","nodeType":"VariableDeclaration","scope":67724,"src":"9064:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67704,"name":"address","nodeType":"ElementaryTypeName","src":"9064:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9063:20:118"},"returnParameters":{"id":67710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67724,"src":"9106:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"},"typeName":{"id":67708,"nodeType":"UserDefinedTypeName","pathNode":{"id":67707,"name":"IWrappedVara","nameLocations":["9106:12:118"],"nodeType":"IdentifierPath","referencedDeclaration":65497,"src":"9106:12:118"},"referencedDeclaration":65497,"src":"9106:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9105:14:118"},"scope":67773,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67743,"nodeType":"FunctionDefinition","src":"9236:182:118","nodes":[],"body":{"id":67742,"nodeType":"Block","src":"9286:132:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67729,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9300:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9304:6:118","memberName":"sender","nodeType":"MemberAccess","src":"9300:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67731,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67047,"src":"9314:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9300:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67740,"nodeType":"Block","src":"9370:42:118","statements":[{"expression":{"expression":{"id":67737,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9391:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9395:6:118","memberName":"sender","nodeType":"MemberAccess","src":"9391:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67728,"id":67739,"nodeType":"Return","src":"9384:17:118"}]},"id":67741,"nodeType":"IfStatement","src":"9296:116:118","trueBody":{"id":67736,"nodeType":"Block","src":"9323:41:118","statements":[{"expression":{"expression":{"id":67733,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9344:2:118","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":67734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9347:6:118","memberName":"origin","nodeType":"MemberAccess","src":"9344:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67728,"id":67735,"nodeType":"Return","src":"9337:16:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9245:7:118","parameters":{"id":67725,"nodeType":"ParameterList","parameters":[],"src":"9252:2:118"},"returnParameters":{"id":67728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67743,"src":"9277:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67726,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9276:9:118"},"scope":67773,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67772,"nodeType":"FunctionDefinition","src":"9424:243:118","nodes":[],"body":{"id":67771,"nodeType":"Block","src":"9492:175:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67747,"src":"9506:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9515:1:118","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9506:10:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67770,"nodeType":"IfStatement","src":"9502:159:118","trueBody":{"id":67769,"nodeType":"Block","src":"9518:143:118","statements":[{"assignments":[67754],"declarations":[{"constant":false,"id":67754,"mutability":"mutable","name":"success","nameLocation":"9537:7:118","nodeType":"VariableDeclaration","scope":67769,"src":"9532:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67753,"name":"bool","nodeType":"ElementaryTypeName","src":"9532:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67763,"initialValue":{"arguments":[{"id":67760,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67745,"src":"9573:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67747,"src":"9586:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67756,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67178,"src":"9554:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9554:8:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67755,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67724,"src":"9547:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65497_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:16:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"id":67759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9564:8:118","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"9547:25:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":67762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:45:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9532:60:118"},{"expression":{"arguments":[{"id":67765,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67754,"src":"9614:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":67766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9623:26:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""},"value":"failed to transfer WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""}],"id":67764,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9606:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9606:44:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67768,"nodeType":"ExpressionStatement","src":"9606:44:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9433:14:118","parameters":{"id":67748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67745,"mutability":"mutable","name":"destination","nameLocation":"9456:11:118","nodeType":"VariableDeclaration","scope":67772,"src":"9448:19:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67744,"name":"address","nodeType":"ElementaryTypeName","src":"9448:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67747,"mutability":"mutable","name":"value","nameLocation":"9477:5:118","nodeType":"VariableDeclaration","scope":67772,"src":"9469:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67746,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9447:36:118"},"returnParameters":{"id":67749,"nodeType":"ParameterList","parameters":[],"src":"9492:0:118"},"scope":67773,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67044,"name":"IMirror","nameLocations":["422:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":65178,"src":"422:7:118"},"id":67045,"nodeType":"InheritanceSpecifier","src":"422:7:118"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67773,65178],"name":"Mirror","nameLocation":"412:6:118","scope":67774,"usedErrors":[],"usedEvents":[65043,65054,65065,65072,65077,65088,65099,65106]}],"license":"UNLICENSED"},"id":118} \ No newline at end of file +{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_decoder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576116bb908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea2646970667358221220b7b9a2e2b5bee8c3351e5fd65371ef75709b0d5583a3845557d0302f7b4d9fbc64736f6c634300081c0033","sourceMap":"403:9266:119:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea2646970667358221220b7b9a2e2b5bee8c3351e5fd65371ef75709b0d5583a3845557d0302f7b4d9fbc64736f6c634300081c0033","sourceMap":"403:9266:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;1633:23;;403:9266;;3811:41;;403:9266;-1:-1:-1;;;;;3811:16:119;3818:8;;:::i;:::-;3811:16;:::i;:::-;403:9266;;;;;;;;;;3811:41;;3846:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;403:9266;;-1:-1:-1;;;;;3888:16:119;403:9266;;3888:16;;:::i;:::-;403:9266;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;;-1:-1:-1;;;;;3811:41:119;;;;;-1:-1:-1;3811:41:119;;;403:9266;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:119;2500:23;2492:57;:::i;:::-;403:9266;;2204:9;;;:37;;;403:9266;;;;1103:259;;403:9266;;;-1:-1:-1;;403:9266:119;;;;;;;2500:9;3049:57;403:9266;;;;;;2992:40;;;3017:4;;403:9266;;;;;;;;;2992:40;;;;;;:::i;:::-;403:9266;2982:51;;;3049:57;-1:-1:-1;;;;;3078:9:119;;:::i;:::-;403:9266;;;;3049:57;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;1103:259;1191:61;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:119;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:119;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;1266:85;1191:61;403:9266;1191:61;;;1103:259;1266:85;;:::i;:::-;1103:259;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:9266;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;2204:37;2217:9;;;:::i;:::-;2230:11;403:9266;-1:-1:-1;;;;;403:9266:119;;;;;2217:24;2204:37;;403:9266;;;;;;-1:-1:-1;;403:9266:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;860:59;-1:-1:-1;;;;;882:8:119;;:::i;:::-;403:9266;868:10;:22;860:59;:::i;:::-;4564:19;;;:::i;:::-;4595:4;-1:-1:-1;;;;;403:9266:119;;;4564:36;403:9266;;4733:20;;;403:9266;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;5828:27;;-1:-1:-1;;403:9266:119;;;;;;5828:27;403:9266;5908:3;5886:20;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:20;403:9266;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;4733:20;403:9266;;;;;;;;;;;-1:-1:-1;;;;;;403:9266:119;;;;;;;;7719:243:123;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;;7818:15:123;;403:9266:119;;;;;;;;;;;;;;;7719:243:123;;;;;;403:9266:119;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;7719:243:123;;;;;;;;;;:::i;:::-;403:9266:119;7696:276:123;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6144:28;;;6214:7;;;:::i;:::-;403:9266;5871:13;;;6140:162;6279:7;;;:::i;:::-;6140:162;;403:9266;;;;;;;;;;;;5886:20;403:9266;;;;;6329:25;4848:23;;;;403:9266;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;8077:13;403:9266;8112:3;8092:18;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;11704:65:123;403:9266:119;11704:65:123;;403:9266:119;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;11704:65:123;;;;;;:::i;:::-;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8297:17;;;;:::i;:::-;8316:11;;;:::i;:::-;;;;:::i;:::-;8378;;;:::i;:::-;403:9266;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;8348:42;;;403:9266;;8077:13;;8092:18;-1:-1:-1;403:9266:119;;;;;8418:27;403:9266;4932:21;;;;-1:-1:-1;;;;;4932:21:119;;;:::i;:::-;403:9266;4928:102;;8072:329;403:9266;;5422:26;11704:65:123;5387:21:119;5316:19;5095:9;403:9266;5108:24;;;;403:9266;5095:37;;;5091:110;;5316:19;:::i;:::-;5387:21;;:::i;:::-;5422:26;;;:::i;:::-;403:9266;;;8448:101:123;;;;403:9266:119;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;;8448:101:123;;;;;;:::i;:::-;403:9266:119;8425:134:123;;403:9266:119;;;;;;5091:110;403:9266;5095:9;403:9266;8978:23;403:9266;;;;;;8978:23;5316:19;:::i;4928:102::-;4997:21;;;:::i;:::-;403:9266;;;;2492:57;-1:-1:-1;;;;;403:9266:119;;2500:23;2492:57;:::i;:::-;-1:-1:-1;;;;;403:9266:119;-1:-1:-1;;;;;;403:9266:119;;;;;;;;1633:23;;403:9266;;3811:41;403:9266;-1:-1:-1;;;;;3811:16:119;3818:8;;:::i;3811:16::-;403:9266;;;;;;;;;;3811:41;;4595:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;4928:102;403:9266;;;-1:-1:-1;;;;;3888:16:119;403:9266;;3888:16;;:::i;:::-;4928:102;;;;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;3811:41;;;;;-1:-1:-1;3811:41:119;;403:9266;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;664:26;403:9266;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;-1:-1:-1;;;;;3536:9:119;;:::i;:::-;403:9266;3501:45;403:9266;;;;;;;3501:45;403:9266;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:119;2500:23;2492:57;:::i;:::-;1107:10;1103:259;;403:9266;3667:39;403:9266;;;;;;;3667:39;403:9266;1103:259;1154:8;403:9266;1191:61;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:119;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:119;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;1266:85;403:9266;1191:61;3667:39;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;;;;;;;;;;;:::i;403:9266::-;;;;;;-1:-1:-1;;403:9266:119;;;;;696:24;403:9266;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:119;;:::i;860:59::-;4066:11;403:9266;;4058:72;-1:-1:-1;;;;;403:9266:119;;4066:25;4058:72;:::i;:::-;403:9266;;;4140:68;-1:-1:-1;;;;;403:9266:119;;4148:21;4140:68;:::i;:::-;-1:-1:-1;;;;;;403:9266:119;;;;;;;4066:11;403:9266;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;-1:-1:-1;;403:9266:119;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:119;2500:23;2492:57;:::i;:::-;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;1103:259;;403:9266;3338:63;;;-1:-1:-1;;;;;3373:9:119;;:::i;:::-;403:9266;;;;;;;;;3338:63;;:::i;:::-;;;;403:9266;1103:259;1191:61;1154:8;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:119;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:119;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;3338:63;1191:61;1266:85;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:119;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:119;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:9266:119;;;;;;;;-1:-1:-1;;403:9266:119;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:119;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:119;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:9266:119;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;:::o;2606:108::-;403:9266;;-1:-1:-1;;;2671:36:119;;;403:9266;2671:36;403:9266;2692:4;2671:36;;;;;;;-1:-1:-1;2671:36:119;;;2664:43;2606:108;:::o;2671:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2606:108;:::o;2671:36::-;;;;;9048:182;403:9266;;-1:-1:-1;;;9150:33:119;;403:9266;9150:33;;403:9266;;9150:33;;403:9266;;-1:-1:-1;;;;;403:9266:119;9150:33;;;;;;;-1:-1:-1;9150:33:119;;;9048:182;-1:-1:-1;;;;;;403:9266:119;;9048:182::o;9150:33::-;;;;;;;;;;;;;;:::i;:::-;;;;9236:182;403:9266;;9300:10;-1:-1:-1;;;;;403:9266:119;;;9300:21;403:9266;;9344:9;9337:16;:::o;9296:116::-;9300:10;9384:17;:::o;403:9266::-;-1:-1:-1;;;;;403:9266:119;;;;;;-1:-1:-1;;403:9266:119;;;;:::o;9424:243::-;;-1:-1:-1;;;;;403:9266:119;9506:10;9502:159;;9424:243;;:::o;9502:159::-;403:9266;;9547:45;-1:-1:-1;;;;;9547:16:119;9554:8;;:::i;9547:16::-;403:9266;;-1:-1:-1;;;9547:45:119;;-1:-1:-1;;;;;403:9266:119;;;9547:45;;;403:9266;;;;;;;;;;;;9515:1;;403:9266;9547:45;;;;;;;9515:1;9547:45;;;9502:159;403:9266;;;;9424:243::o;403:9266::-;;;-1:-1:-1;;;403:9266:119;;;9547:45;403:9266;;;;;;;;;9547:45;403:9266;;;;;;9547:45;;;;403:9266;9547:45;403:9266;9547:45;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;403:9266:119;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;403:9266:119;;;;:::o;:::-;;;:::o;7148:784::-;7240:20;;;;;;:::i;:::-;7262:14;;;;;;;;;:::i;:::-;;;:::i;:::-;7292:7;403:9266;-1:-1:-1;;;;;403:9266:119;;;7288:529;;7148:784;7838:16;;7832:93;7838:16;7856:14;7838:16;;;;;;:::i;:::-;7856:14;;;;:::i;:::-;7872:21;-1:-1:-1;;;;;;7898:26:119;;;;;:::i;:::-;403:9266;;-1:-1:-1;;;;;403:9266:119;7838:16;403:9266;;;;7262:14;403:9266;;7262:14;403:9266;;;;:::i;:::-;;;7240:20;403:9266;;;7872:21;403:9266;7838:16;403:9266;;;7832:93;;;7148:784::o;7288:529::-;7292:7;7446:20;;;;;:::i;:::-;7484:16;7353:279;7484:16;;;;;;:::i;:::-;7518:14;;;;;;:::i;:::-;7592:26;;;;;:::i;:::-;7484:16;403:9266;-1:-1:-1;;;7240:20:119;7353:279;;;;;-1:-1:-1;;;;;403:9266:119;;;7353:279;;;403:9266;;;;;;;;;-1:-1:-1;;;;;403:9266:119;;;;;;;;:::i;:::-;;;;;;;7550:21;;;403:9266;;;;;-1:-1:-1;;;;;;403:9266:119;;;;;7353:279;-1:-1:-1;;7353:279:119;;;;;;:::i;:::-;7704:36;;7722:7;7704:36;;;:::i;:::-;;7755:52;;7288:529;;;;7755:52;7786:7;;:::o;6420:653::-;6505:7;403:9266;-1:-1:-1;;;;;403:9266:119;;6501:474;;6420:653;7011:20;6990:76;;7011:20;;;;;:::i;:::-;7033:16;;;;;;:::i;:::-;7051:14;;;;;;;;:::i;:::-;403:9266;7033:16;403:9266;;;;;;;;;;;;6990:76;;:::i;:::-;;;;6420:653::o;6501:474::-;6505:7;6690:20;;;;;;;;;:::i;:::-;6566:224;6728:16;;;;;;:::i;:::-;6762:14;;-1:-1:-1;;;;;403:9266:119;6762:14;;;;;:::i;:::-;6728:16;403:9266;-1:-1:-1;;;6690:20:119;6566:224;;;;;403:9266;;6566:224;;;403:9266;-1:-1:-1;;;;;403:9266:119;;;;;;;;;;;;;;;;;;;;;6566:224;403:9266;:::i;:::-;;;;;;;6566:224;403:9266;;6566:224;;;;;;:::i;:::-;6862:36;;6880:7;6862:36;;;:::i;:::-;;6913:52;;6501:474;;;6913:52;6944:7;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initialize(address,address)":"485cc955","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[]))":"9ed32350","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_decoder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"initializer\":{\"details\":\"This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5\",\"dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"lib/symbiotic-core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/symbiotic-core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"lib/symbiotic-core/src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/symbiotic-core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56\",\"dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d\",\"dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3\",\"dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Middleware.sol\":{\"keccak256\":\"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61\",\"dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f\",\"dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52\",\"dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3\",\"dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_decoder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}],"stateMutability":"nonpayable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9","urls":["bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5","dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4","urls":["bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56","dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB"],"license":"UNLICENSED"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac","urls":["bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d","dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a","urls":["bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3","dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Middleware.sol":{"keccak256":"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed","urls":["bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61","dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th"],"license":"BUSL-1.1"},"src/Mirror.sol":{"keccak256":"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9","urls":["bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f","dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9","urls":["bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52","dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq"],"license":"UNLICENSED"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381","urls":["bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3","dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":67204,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67206,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67209,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67211,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67213,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":67931,"exportedSymbols":{"Clones":[42512],"Gear":[70712],"IMirror":[65344],"IMirrorDecoder":[65381],"IMirrorProxy":[65389],"IRouter":[65695],"IWrappedVara":[65706],"Mirror":[67930]},"nodeType":"SourceUnit","src":"39:9631:119","nodes":[{"id":67186,"nodeType":"PragmaDirective","src":"39:24:119","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67188,"nodeType":"ImportDirective","src":"65:48:119","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":65390,"symbolAliases":[{"foreign":{"id":67187,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65389,"src":"73:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67190,"nodeType":"ImportDirective","src":"114:38:119","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":65345,"symbolAliases":[{"foreign":{"id":67189,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65344,"src":"122:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67192,"nodeType":"ImportDirective","src":"153:38:119","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":65696,"symbolAliases":[{"foreign":{"id":67191,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65695,"src":"161:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67194,"nodeType":"ImportDirective","src":"192:48:119","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":65707,"symbolAliases":[{"foreign":{"id":67193,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65706,"src":"200:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67196,"nodeType":"ImportDirective","src":"241:52:119","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":65382,"symbolAliases":[{"foreign":{"id":67195,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65381,"src":"249:14:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67198,"nodeType":"ImportDirective","src":"294:64:119","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67197,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"302:6:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67200,"nodeType":"ImportDirective","src":"359:42:119","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":67931,"sourceUnit":70713,"symbolAliases":[{"foreign":{"id":67199,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"367:4:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67930,"nodeType":"ContractDefinition","src":"403:9266:119","nodes":[{"id":67204,"nodeType":"VariableDeclaration","src":"436:22:119","nodes":[],"baseFunctions":[65297],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:119","scope":67930,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67203,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67206,"nodeType":"VariableDeclaration","src":"464:24:119","nodes":[],"baseFunctions":[65282],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:119","scope":67930,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67205,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67209,"nodeType":"VariableDeclaration","src":"664:26:119","nodes":[],"constant":false,"documentation":{"id":67207,"nodeType":"StructuredDocumentation","src":"494:165:119","text":"@dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"679:11:119","scope":67930,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67208,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67211,"nodeType":"VariableDeclaration","src":"696:24:119","nodes":[],"baseFunctions":[65277],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:119","scope":67930,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67213,"nodeType":"VariableDeclaration","src":"726:20:119","nodes":[],"baseFunctions":[65287],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:119","scope":67930,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67212,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67227,"nodeType":"ModifierDefinition","src":"828:109:119","nodes":[],"body":{"id":67226,"nodeType":"Block","src":"850:87:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67217,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"872:6:119","memberName":"sender","nodeType":"MemberAccess","src":"868:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67219,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67335,"src":"882:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:8:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:22:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616c6c6572206973206e6f742074686520726f75746572","id":67222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"892:26:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""},"value":"caller is not the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""}],"id":67216,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"860:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:59:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67224,"nodeType":"ExpressionStatement","src":"860:59:119"},{"id":67225,"nodeType":"PlaceholderStatement","src":"929:1:119"}]},"documentation":{"id":67214,"nodeType":"StructuredDocumentation","src":"753:70:119","text":"@dev Only the router can call functions marked with this modifier."},"name":"onlyRouter","nameLocation":"837:10:119","parameters":{"id":67215,"nodeType":"ParameterList","parameters":[],"src":"847:2:119"},"virtual":false,"visibility":"internal"},{"id":67261,"nodeType":"ModifierDefinition","src":"1053:326:119","nodes":[],"body":{"id":67260,"nodeType":"Block","src":"1093:286:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67232,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67230,"src":"1107:5:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1107:10:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67258,"nodeType":"IfStatement","src":"1103:259:119","trueBody":{"id":67257,"nodeType":"Block","src":"1119:243:119","statements":[{"assignments":[67236],"declarations":[{"constant":false,"id":67236,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:119","nodeType":"VariableDeclaration","scope":67257,"src":"1133:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67235,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67239,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67237,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67335,"src":"1154:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:8:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1133:29:119"},{"assignments":[67241],"declarations":[{"constant":false,"id":67241,"mutability":"mutable","name":"success","nameLocation":"1181:7:119","nodeType":"VariableDeclaration","scope":67257,"src":"1176:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67240,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67251,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67246,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"1223:7:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67248,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67236,"src":"1234:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67230,"src":"1246:5:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":67243,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67236,"src":"1198:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67242,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67881,"src":"1191:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65706_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:18:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"id":67245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:12:119","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43812,"src":"1191:31:119","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":67250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:61:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1176:76:119"},{"expression":{"arguments":[{"id":67253,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67241,"src":"1274:7:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":67254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1283:67:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""},"value":"failed to transfer non-zero amount of WVara from source to router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""}],"id":67252,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1266:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1266:85:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67256,"nodeType":"ExpressionStatement","src":"1266:85:119"}]}},{"id":67259,"nodeType":"PlaceholderStatement","src":"1371:1:119"}]},"documentation":{"id":67228,"nodeType":"StructuredDocumentation","src":"943:105:119","text":"@dev Non-zero value must be transferred from source to router in functions marked with this modifier."},"name":"retrievingValue","nameLocation":"1062:15:119","parameters":{"id":67231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67230,"mutability":"mutable","name":"value","nameLocation":"1086:5:119","nodeType":"VariableDeclaration","scope":67261,"src":"1078:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67229,"name":"uint128","nodeType":"ElementaryTypeName","src":"1078:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1077:15:119"},"virtual":false,"visibility":"internal"},{"id":67276,"nodeType":"ModifierDefinition","src":"1589:115:119","nodes":[],"body":{"id":67275,"nodeType":"Block","src":"1615:89:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67265,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67206,"src":"1633:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67266,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:119","typeDescriptions":{}}},"id":67269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1646:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1633:23:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":67271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:27:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""},"value":"program is not terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""}],"id":67264,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1625:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1625:61:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67273,"nodeType":"ExpressionStatement","src":"1625:61:119"},{"id":67274,"nodeType":"PlaceholderStatement","src":"1696:1:119"}]},"documentation":{"id":67262,"nodeType":"StructuredDocumentation","src":"1488:96:119","text":"@dev Functions marked with this modifier can be called only after the program is terminated."},"name":"whenTerminated","nameLocation":"1598:14:119","parameters":{"id":67263,"nodeType":"ParameterList","parameters":[],"src":"1612:2:119"},"virtual":false,"visibility":"internal"},{"id":67288,"nodeType":"ModifierDefinition","src":"1830:127:119","nodes":[],"body":{"id":67287,"nodeType":"Block","src":"1864:93:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67280,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67213,"src":"1882:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1882:9:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d65737361676520796574","id":67283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1893:45:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""},"value":"initializer hasn't created init message yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""}],"id":67279,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1874:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:65:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67285,"nodeType":"ExpressionStatement","src":"1874:65:119"},{"id":67286,"nodeType":"PlaceholderStatement","src":"1949:1:119"}]},"documentation":{"id":67277,"nodeType":"StructuredDocumentation","src":"1710:115:119","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message."},"name":"whenInitMessageCreated","nameLocation":"1839:22:119","parameters":{"id":67278,"nodeType":"ParameterList","parameters":[],"src":"1861:2:119"},"virtual":false,"visibility":"internal"},{"id":67305,"nodeType":"ModifierDefinition","src":"2122:237:119","nodes":[],"body":{"id":67304,"nodeType":"Block","src":"2173:186:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":67299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67292,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67213,"src":"2204:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2212:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2204:9:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67295,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"2217:7:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67297,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67209,"src":"2230:11:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2217:24:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2204:37:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d657373616765207965743b20616e6420736f75726365206973206e6f7420696e697469616c697a6572","id":67300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2255:76:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""},"value":"initializer hasn't created init message yet; and source is not initializer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""}],"id":67291,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2183:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2183:158:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67302,"nodeType":"ExpressionStatement","src":"2183:158:119"},{"id":67303,"nodeType":"PlaceholderStatement","src":"2351:1:119"}]},"documentation":{"id":67289,"nodeType":"StructuredDocumentation","src":"1963:154:119","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access)."},"name":"whenInitMessageCreatedOrFromInitializer","nameLocation":"2131:39:119","parameters":{"id":67290,"nodeType":"ParameterList","parameters":[],"src":"2170:2:119"},"virtual":false,"visibility":"internal"},{"id":67320,"nodeType":"ModifierDefinition","src":"2459:108:119","nodes":[],"body":{"id":67319,"nodeType":"Block","src":"2482:85:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67309,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67206,"src":"2500:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2513:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67310,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:119","typeDescriptions":{}}},"id":67313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2513:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:23:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":67315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2525:23:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":67308,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2492:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:57:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67317,"nodeType":"ExpressionStatement","src":"2492:57:119"},{"id":67318,"nodeType":"PlaceholderStatement","src":"2559:1:119"}]},"documentation":{"id":67306,"nodeType":"StructuredDocumentation","src":"2365:89:119","text":"@dev Functions marked with this modifier can be called only if the program is active."},"name":"whileActive","nameLocation":"2468:11:119","parameters":{"id":67307,"nodeType":"ParameterList","parameters":[],"src":"2479:2:119"},"virtual":false,"visibility":"internal"},{"id":67335,"nodeType":"FunctionDefinition","src":"2606:108:119","nodes":[],"body":{"id":67334,"nodeType":"Block","src":"2654:60:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":67328,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:119","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}],"id":67327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67326,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:119","typeDescriptions":{}}},"id":67329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67325,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65389,"src":"2671:12:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$65389_$","typeString":"type(contract IMirrorProxy)"}},"id":67330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:27:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$65389","typeString":"contract IMirrorProxy"}},"id":67331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:119","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":65388,"src":"2671:34:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:36:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67324,"id":67333,"nodeType":"Return","src":"2664:43:119"}]},"baseFunctions":[65292],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:119","parameters":{"id":67321,"nodeType":"ParameterList","parameters":[],"src":"2621:2:119"},"returnParameters":{"id":67324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67335,"src":"2645:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67322,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:119"},"scope":67930,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67376,"nodeType":"FunctionDefinition","src":"2750:383:119","nodes":[],"body":{"id":67375,"nodeType":"Block","src":"2959:174:119","nodes":[],"statements":[{"assignments":[67352],"declarations":[{"constant":false,"id":67352,"mutability":"mutable","name":"id","nameLocation":"2977:2:119","nodeType":"VariableDeclaration","scope":67375,"src":"2969:10:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":67364,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":67358,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:119","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}],"id":67357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67356,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:119","typeDescriptions":{}}},"id":67359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:119","subExpression":{"id":67360,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67213,"src":"3024:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":67354,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:119","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2996:12:119","memberName":"encodePacked","nodeType":"MemberAccess","src":"2992:16:119","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:40:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67353,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2982:9:119","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:51:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2969:64:119"},{"eventCall":{"arguments":[{"id":67366,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67352,"src":"3074:2:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67367,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"3078:7:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67369,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67337,"src":"3089:8:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67370,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67339,"src":"3099:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67365,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65220,"src":"3049:24:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3049:57:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67372,"nodeType":"EmitStatement","src":"3044:62:119"},{"expression":{"id":67373,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67352,"src":"3124:2:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67350,"id":67374,"nodeType":"Return","src":"3117:9:119"}]},"baseFunctions":[65306],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":67342,"kind":"modifierInvocation","modifierName":{"id":67341,"name":"whileActive","nameLocations":["2837:11:119"],"nodeType":"IdentifierPath","referencedDeclaration":67320,"src":"2837:11:119"},"nodeType":"ModifierInvocation","src":"2837:11:119"},{"id":67344,"kind":"modifierInvocation","modifierName":{"id":67343,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:119"],"nodeType":"IdentifierPath","referencedDeclaration":67305,"src":"2857:39:119"},"nodeType":"ModifierInvocation","src":"2857:39:119"},{"arguments":[{"id":67346,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67339,"src":"2921:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67347,"kind":"modifierInvocation","modifierName":{"id":67345,"name":"retrievingValue","nameLocations":["2905:15:119"],"nodeType":"IdentifierPath","referencedDeclaration":67261,"src":"2905:15:119"},"nodeType":"ModifierInvocation","src":"2905:23:119"}],"name":"sendMessage","nameLocation":"2759:11:119","parameters":{"id":67340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67337,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:119","nodeType":"VariableDeclaration","scope":67376,"src":"2771:23:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67336,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67339,"mutability":"mutable","name":"_value","nameLocation":"2804:6:119","nodeType":"VariableDeclaration","scope":67376,"src":"2796:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67338,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:119"},"returnParameters":{"id":67350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67376,"src":"2946:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67401,"nodeType":"FunctionDefinition","src":"3139:269:119","nodes":[],"body":{"id":67400,"nodeType":"Block","src":"3323:85:119","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67393,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67378,"src":"3361:10:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67394,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"3373:7:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67396,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67380,"src":"3384:8:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67397,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67382,"src":"3394:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67392,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65231,"src":"3338:22:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:63:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67399,"nodeType":"EmitStatement","src":"3333:68:119"}]},"baseFunctions":[65315],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":67385,"kind":"modifierInvocation","modifierName":{"id":67384,"name":"whileActive","nameLocations":["3244:11:119"],"nodeType":"IdentifierPath","referencedDeclaration":67320,"src":"3244:11:119"},"nodeType":"ModifierInvocation","src":"3244:11:119"},{"id":67387,"kind":"modifierInvocation","modifierName":{"id":67386,"name":"whenInitMessageCreated","nameLocations":["3264:22:119"],"nodeType":"IdentifierPath","referencedDeclaration":67288,"src":"3264:22:119"},"nodeType":"ModifierInvocation","src":"3264:22:119"},{"arguments":[{"id":67389,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67382,"src":"3311:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67390,"kind":"modifierInvocation","modifierName":{"id":67388,"name":"retrievingValue","nameLocations":["3295:15:119"],"nodeType":"IdentifierPath","referencedDeclaration":67261,"src":"3295:15:119"},"nodeType":"ModifierInvocation","src":"3295:23:119"}],"name":"sendReply","nameLocation":"3148:9:119","parameters":{"id":67383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67378,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:119","nodeType":"VariableDeclaration","scope":67401,"src":"3158:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67380,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:119","nodeType":"VariableDeclaration","scope":67401,"src":"3178:23:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67379,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67382,"mutability":"mutable","name":"_value","nameLocation":"3211:6:119","nodeType":"VariableDeclaration","scope":67401,"src":"3203:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67381,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:119"},"returnParameters":{"id":67391,"nodeType":"ParameterList","parameters":[],"src":"3323:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67415,"nodeType":"FunctionDefinition","src":"3414:139:119","nodes":[],"body":{"id":67414,"nodeType":"Block","src":"3486:67:119","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67409,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67403,"src":"3524:10:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67410,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"3536:7:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:9:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":67408,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65238,"src":"3501:22:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":67412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67413,"nodeType":"EmitStatement","src":"3496:50:119"}]},"baseFunctions":[65320],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":67406,"kind":"modifierInvocation","modifierName":{"id":67405,"name":"whenInitMessageCreated","nameLocations":["3463:22:119"],"nodeType":"IdentifierPath","referencedDeclaration":67288,"src":"3463:22:119"},"nodeType":"ModifierInvocation","src":"3463:22:119"}],"name":"claimValue","nameLocation":"3423:10:119","parameters":{"id":67404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67403,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:119","nodeType":"VariableDeclaration","scope":67415,"src":"3434:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:119"},"returnParameters":{"id":67407,"nodeType":"ParameterList","parameters":[],"src":"3486:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67430,"nodeType":"FunctionDefinition","src":"3559:154:119","nodes":[],"body":{"id":67429,"nodeType":"Block","src":"3652:61:119","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67426,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67417,"src":"3699:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67425,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65243,"src":"3667:31:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":67427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:39:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67428,"nodeType":"EmitStatement","src":"3662:44:119"}]},"baseFunctions":[65325],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":67420,"kind":"modifierInvocation","modifierName":{"id":67419,"name":"whileActive","nameLocations":["3616:11:119"],"nodeType":"IdentifierPath","referencedDeclaration":67320,"src":"3616:11:119"},"nodeType":"ModifierInvocation","src":"3616:11:119"},{"arguments":[{"id":67422,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67417,"src":"3644:6:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67423,"kind":"modifierInvocation","modifierName":{"id":67421,"name":"retrievingValue","nameLocations":["3628:15:119"],"nodeType":"IdentifierPath","referencedDeclaration":67261,"src":"3628:15:119"},"nodeType":"ModifierInvocation","src":"3628:23:119"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:119","parameters":{"id":67418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67417,"mutability":"mutable","name":"_value","nameLocation":"3599:6:119","nodeType":"VariableDeclaration","scope":67430,"src":"3591:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67416,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:119"},"returnParameters":{"id":67424,"nodeType":"ParameterList","parameters":[],"src":"3652:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67457,"nodeType":"FunctionDefinition","src":"3719:193:119","nodes":[],"body":{"id":67456,"nodeType":"Block","src":"3783:129:119","nodes":[],"statements":[{"assignments":[67436],"declarations":[{"constant":false,"id":67436,"mutability":"mutable","name":"balance","nameLocation":"3801:7:119","nodeType":"VariableDeclaration","scope":67456,"src":"3793:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67447,"initialValue":{"arguments":[{"arguments":[{"id":67444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:119","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}],"id":67443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3838:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67442,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:119","typeDescriptions":{}}},"id":67445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67438,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67335,"src":"3818:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:8:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67437,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67881,"src":"3811:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65706_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:16:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"id":67441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3828:9:119","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43770,"src":"3811:26:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":67446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:41:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:59:119"},{"expression":{"arguments":[{"id":67449,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67206,"src":"3877:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":67452,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67436,"src":"3896:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":67451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3888:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":67450,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:119","typeDescriptions":{}}},"id":67453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3888:16:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67448,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"3862:14:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:43:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67455,"nodeType":"ExpressionStatement","src":"3862:43:119"}]},"baseFunctions":[65328],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":67433,"kind":"modifierInvocation","modifierName":{"id":67432,"name":"whenTerminated","nameLocations":["3768:14:119"],"nodeType":"IdentifierPath","referencedDeclaration":67276,"src":"3768:14:119"},"nodeType":"ModifierInvocation","src":"3768:14:119"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:119","parameters":{"id":67431,"nodeType":"ParameterList","parameters":[],"src":"3758:2:119"},"returnParameters":{"id":67434,"nodeType":"ParameterList","parameters":[],"src":"3783:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67495,"nodeType":"FunctionDefinition","src":"3970:310:119","nodes":[],"body":{"id":67494,"nodeType":"Block","src":"4048:232:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67467,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67209,"src":"4066:11:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4081:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67468,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:119","typeDescriptions":{}}},"id":67471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4066:25:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4093:36:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67466,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4058:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:72:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67475,"nodeType":"ExpressionStatement","src":"4058:72:119"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67477,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"4148:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4167:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4159:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67478,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:119","typeDescriptions":{}}},"id":67481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4159:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4148:21:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":67483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4171:36:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":67476,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4140:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4140:68:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67485,"nodeType":"ExpressionStatement","src":"4140:68:119"},{"expression":{"id":67488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67486,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67209,"src":"4219:11:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67487,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67459,"src":"4233:12:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67489,"nodeType":"ExpressionStatement","src":"4219:26:119"},{"expression":{"id":67492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67490,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"4255:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67491,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67461,"src":"4265:8:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67493,"nodeType":"ExpressionStatement","src":"4255:18:119"}]},"baseFunctions":[65335],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":67464,"kind":"modifierInvocation","modifierName":{"id":67463,"name":"onlyRouter","nameLocations":["4037:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":67227,"src":"4037:10:119"},"nodeType":"ModifierInvocation","src":"4037:10:119"}],"name":"initialize","nameLocation":"3979:10:119","parameters":{"id":67462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67459,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:119","nodeType":"VariableDeclaration","scope":67495,"src":"3990:20:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67458,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67461,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:119","nodeType":"VariableDeclaration","scope":67495,"src":"4012:16:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67460,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:119"},"returnParameters":{"id":67465,"nodeType":"ParameterList","parameters":[],"src":"4048:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67572,"nodeType":"FunctionDefinition","src":"4363:1163:119","nodes":[],"body":{"id":67571,"nodeType":"Block","src":"4476:1050:119","nodes":[],"statements":[{"documentation":"@dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67506,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"4564:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:119","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69999,"src":"4564:19:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":67510,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:119","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67930","typeString":"contract Mirror"}],"id":67509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4587:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67508,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:119","typeDescriptions":{}}},"id":67511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4564:36:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6163746f724964206d757374206265207468697320636f6e7472616374","id":67513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:31:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""},"value":"actorId must be this contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""}],"id":67505,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4556:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:78:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67515,"nodeType":"ExpressionStatement","src":"4556:78:119"},{"assignments":[67518],"declarations":[{"constant":false,"id":67518,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:119","nodeType":"VariableDeclaration","scope":67571,"src":"4690:26:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":67523,"initialValue":{"arguments":[{"expression":{"id":67520,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"4733:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:119","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":70013,"src":"4733:20:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":67519,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67639,"src":"4719:13:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":67522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4719:35:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4690:64:119"},{"assignments":[67526],"declarations":[{"constant":false,"id":67526,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:119","nodeType":"VariableDeclaration","scope":67571,"src":"4809:23:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":67531,"initialValue":{"arguments":[{"expression":{"id":67528,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"4848:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:119","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":70009,"src":"4848:23:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":67527,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67831,"src":"4835:12:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":67530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:37:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4809:63:119"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67532,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"4932:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:119","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":70003,"src":"4932:21:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4965:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4957:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67534,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:119","typeDescriptions":{}}},"id":67537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4932:35:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Set inheritor if specified.","id":67545,"nodeType":"IfStatement","src":"4928:102:119","trueBody":{"id":67544,"nodeType":"Block","src":"4969:61:119","statements":[{"expression":{"arguments":[{"expression":{"id":67540,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"4997:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5009:9:119","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":70003,"src":"4997:21:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67539,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67846,"src":"4983:13:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4983:36:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67543,"nodeType":"ExpressionStatement","src":"4983:36:119"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67546,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67211,"src":"5095:9:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":67547,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5108:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5120:12:119","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":70001,"src":"5108:24:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5095:37:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Update the state hash if changed.","id":67556,"nodeType":"IfStatement","src":"5091:110:119","trueBody":{"id":67555,"nodeType":"Block","src":"5134:67:119","statements":[{"expression":{"arguments":[{"expression":{"id":67551,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5165:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:12:119","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":70001,"src":"5165:24:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67550,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67860,"src":"5148:16:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5148:42:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67554,"nodeType":"ExpressionStatement","src":"5148:42:119"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":67559,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5316:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:7:119","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69999,"src":"5316:19:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67561,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5349:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5361:12:119","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":70001,"src":"5349:24:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67563,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5387:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:9:119","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":70003,"src":"5387:21:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67565,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67498,"src":"5422:11:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:14:119","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":70005,"src":"5422:26:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":67567,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67526,"src":"5462:15:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":67568,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67518,"src":"5491:18:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":67557,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5278:4:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":67558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:119","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":70462,"src":"5278:24:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,address,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":67569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5278:241:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67504,"id":67570,"nodeType":"Return","src":"5271:248:119"}]},"baseFunctions":[65343],"functionSelector":"9ed32350","implemented":true,"kind":"function","modifiers":[{"id":67501,"kind":"modifierInvocation","modifierName":{"id":67500,"name":"onlyRouter","nameLocations":["4447:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":67227,"src":"4447:10:119"},"nodeType":"ModifierInvocation","src":"4447:10:119"}],"name":"performStateTransition","nameLocation":"4372:22:119","parameters":{"id":67499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67498,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:119","nodeType":"VariableDeclaration","scope":67572,"src":"4395:41:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":67497,"nodeType":"UserDefinedTypeName","pathNode":{"id":67496,"name":"Gear.StateTransition","nameLocations":["4395:4:119","4400:15:119"],"nodeType":"IdentifierPath","referencedDeclaration":70014,"src":"4395:20:119"},"referencedDeclaration":70014,"src":"4395:20:119","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:119"},"returnParameters":{"id":67504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67572,"src":"4467:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67639,"nodeType":"FunctionDefinition","src":"5734:627:119","nodes":[],"body":{"id":67638,"nodeType":"Block","src":"5818:543:119","nodes":[],"statements":[{"assignments":[67582],"declarations":[{"constant":false,"id":67582,"mutability":"mutable","name":"messagesHashes","nameLocation":"5841:14:119","nodeType":"VariableDeclaration","scope":67638,"src":"5828:27:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67581,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67583,"nodeType":"VariableDeclarationStatement","src":"5828:27:119"},{"body":{"id":67632,"nodeType":"Block","src":"5913:399:119","statements":[{"assignments":[67599],"declarations":[{"constant":false,"id":67599,"mutability":"mutable","name":"message","nameLocation":"5949:7:119","nodeType":"VariableDeclaration","scope":67632,"src":"5927:29:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67598,"nodeType":"UserDefinedTypeName","pathNode":{"id":67597,"name":"Gear.Message","nameLocations":["5927:4:119","5932:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":69978,"src":"5927:12:119"},"referencedDeclaration":69978,"src":"5927:12:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":67603,"initialValue":{"baseExpression":{"id":67600,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67576,"src":"5959:9:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67602,"indexExpression":{"id":67601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67585,"src":"5969:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5959:12:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5927:44:119"},{"expression":{"id":67614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67604,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67582,"src":"5986:14:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67608,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67582,"src":"6016:14:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67611,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67599,"src":"6049:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":67609,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"6032:4:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":67610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:119","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":70408,"src":"6032:16:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$69978_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":67612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6032:25:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":67606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6003:5:119","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67605,"name":"bytes","nodeType":"ElementaryTypeName","src":"6003:5:119","typeDescriptions":{}}},"id":67607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6009:6:119","memberName":"concat","nodeType":"MemberAccess","src":"6003:12:119","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:55:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5986:72:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67615,"nodeType":"ExpressionStatement","src":"5986:72:119"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":67616,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67599,"src":"6144:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:12:119","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69977,"src":"6144:20:119","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69997_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6165:2:119","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69994,"src":"6144:23:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":67619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6171:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6144:28:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67630,"nodeType":"Block","src":"6243:59:119","statements":[{"expression":{"arguments":[{"id":67627,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67599,"src":"6279:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67626,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67766,"src":"6261:17:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69978_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6261:26:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67629,"nodeType":"ExpressionStatement","src":"6261:26:119"}]},"id":67631,"nodeType":"IfStatement","src":"6140:162:119","trueBody":{"id":67625,"nodeType":"Block","src":"6174:63:119","statements":[{"expression":{"arguments":[{"id":67622,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67599,"src":"6214:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67621,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67696,"src":"6192:21:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69978_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:30:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67624,"nodeType":"ExpressionStatement","src":"6192:30:119"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67588,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67585,"src":"5886:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67589,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67576,"src":"5890:9:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5900:6:119","memberName":"length","nodeType":"MemberAccess","src":"5890:16:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:20:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67633,"initializationExpression":{"assignments":[67585],"declarations":[{"constant":false,"id":67585,"mutability":"mutable","name":"i","nameLocation":"5879:1:119","nodeType":"VariableDeclaration","scope":67633,"src":"5871:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67584,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67587,"initialValue":{"hexValue":"30","id":67586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5871:13:119"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5908:3:119","subExpression":{"id":67592,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67585,"src":"5908:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67594,"nodeType":"ExpressionStatement","src":"5908:3:119"},"nodeType":"ForStatement","src":"5866:446:119"},{"expression":{"arguments":[{"id":67635,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67582,"src":"6339:14:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67634,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6329:9:119","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6329:25:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67580,"id":67637,"nodeType":"Return","src":"6322:32:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5743:13:119","parameters":{"id":67577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67576,"mutability":"mutable","name":"_messages","nameLocation":"5781:9:119","nodeType":"VariableDeclaration","scope":67639,"src":"5757:33:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69978_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":67574,"nodeType":"UserDefinedTypeName","pathNode":{"id":67573,"name":"Gear.Message","nameLocations":["5757:4:119","5762:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":69978,"src":"5757:12:119"},"referencedDeclaration":69978,"src":"5757:12:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_storage_ptr","typeString":"struct Gear.Message"}},"id":67575,"nodeType":"ArrayTypeName","src":"5757:14:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69978_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5756:35:119"},"returnParameters":{"id":67580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67639,"src":"5809:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5809:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5808:9:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67696,"nodeType":"FunctionDefinition","src":"6420:653:119","nodes":[],"body":{"id":67695,"nodeType":"Block","src":"6491:582:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67646,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"6505:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6516:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67647,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:119","typeDescriptions":{}}},"id":67650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6505:21:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67683,"nodeType":"IfStatement","src":"6501:474:119","trueBody":{"id":67682,"nodeType":"Block","src":"6528:447:119","statements":[{"assignments":[67653],"declarations":[{"constant":false,"id":67653,"mutability":"mutable","name":"callData","nameLocation":"6555:8:119","nodeType":"VariableDeclaration","scope":67682,"src":"6542:21:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67652,"name":"bytes","nodeType":"ElementaryTypeName","src":"6542:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67668,"initialValue":{"arguments":[{"expression":{"expression":{"id":67656,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65381,"src":"6606:14:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65381_$","typeString":"type(contract IMirrorDecoder)"}},"id":67657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6621:13:119","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":65367,"src":"6606:28:119","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":67658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6635:8:119","memberName":"selector","nodeType":"MemberAccess","src":"6606:37:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67659,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"6661:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:2:119","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69968,"src":"6661:11:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67661,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"6690:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:11:119","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69970,"src":"6690:20:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67663,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"6728:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:7:119","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69972,"src":"6728:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67665,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"6762:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69974,"src":"6762:14:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":67654,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6566:3:119","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:18:119","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6566:22:119","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:224:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6542:248:119"},{"assignments":[67670,null],"declarations":[{"constant":false,"id":67670,"mutability":"mutable","name":"success","nameLocation":"6850:7:119","nodeType":"VariableDeclaration","scope":67682,"src":"6845:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67669,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67677,"initialValue":{"arguments":[{"id":67675,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67653,"src":"6889:8:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67671,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"6862:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6870:4:119","memberName":"call","nodeType":"MemberAccess","src":"6862:12:119","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:7:119","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"6862:26:119","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6862:36:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6844:54:119"},{"condition":{"id":67678,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67670,"src":"6917:7:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67681,"nodeType":"IfStatement","src":"6913:52:119","trueBody":{"id":67680,"nodeType":"Block","src":"6926:39:119","statements":[{"functionReturnParameters":67645,"id":67679,"nodeType":"Return","src":"6944:7:119"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67685,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"6998:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7007:2:119","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69968,"src":"6998:11:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67687,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"7011:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7020:11:119","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69970,"src":"7011:20:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67689,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"7033:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7042:7:119","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69972,"src":"7033:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67691,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67643,"src":"7051:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7060:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69974,"src":"7051:14:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67684,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65254,"src":"6990:7:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":67693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6990:76:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67694,"nodeType":"EmitStatement","src":"6985:81:119"}]},"documentation":{"id":67640,"nodeType":"StructuredDocumentation","src":"6367:48:119","text":"@dev Value never sent since goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"6429:21:119","parameters":{"id":67644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67643,"mutability":"mutable","name":"_message","nameLocation":"6473:8:119","nodeType":"VariableDeclaration","scope":67696,"src":"6451:30:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67642,"nodeType":"UserDefinedTypeName","pathNode":{"id":67641,"name":"Gear.Message","nameLocations":["6451:4:119","6456:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":69978,"src":"6451:12:119"},"referencedDeclaration":69978,"src":"6451:12:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6450:32:119"},"returnParameters":{"id":67645,"nodeType":"ParameterList","parameters":[],"src":"6491:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67766,"nodeType":"FunctionDefinition","src":"7148:784:119","nodes":[],"body":{"id":67765,"nodeType":"Block","src":"7215:717:119","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":67704,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7240:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7249:11:119","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69970,"src":"7240:20:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67706,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7262:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7271:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69974,"src":"7262:14:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67703,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"7225:14:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7225:52:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67709,"nodeType":"ExpressionStatement","src":"7225:52:119"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67710,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"7292:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7311:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":67712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7303:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":67711,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:119","typeDescriptions":{}}},"id":67714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7303:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7292:21:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67751,"nodeType":"IfStatement","src":"7288:529:119","trueBody":{"id":67750,"nodeType":"Block","src":"7315:502:119","statements":[{"assignments":[67717],"declarations":[{"constant":false,"id":67717,"mutability":"mutable","name":"callData","nameLocation":"7342:8:119","nodeType":"VariableDeclaration","scope":67750,"src":"7329:21:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67716,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67736,"initialValue":{"arguments":[{"expression":{"expression":{"id":67720,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65381,"src":"7393:14:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65381_$","typeString":"type(contract IMirrorDecoder)"}},"id":67721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7408:11:119","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":65380,"src":"7393:26:119","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":67722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7420:8:119","memberName":"selector","nodeType":"MemberAccess","src":"7393:35:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":67723,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7446:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:11:119","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69970,"src":"7446:20:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67725,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7484:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7493:7:119","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69972,"src":"7484:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67727,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7518:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69974,"src":"7518:14:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67729,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7550:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7559:12:119","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69977,"src":"7550:21:119","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69997_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7572:2:119","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69994,"src":"7550:24:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67732,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7592:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7601:12:119","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69977,"src":"7592:21:119","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69997_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:4:119","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69996,"src":"7592:26:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":67718,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7353:3:119","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7357:18:119","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7353:22:119","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":67735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:279:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7329:303:119"},{"assignments":[67738,null],"declarations":[{"constant":false,"id":67738,"mutability":"mutable","name":"success","nameLocation":"7692:7:119","nodeType":"VariableDeclaration","scope":67750,"src":"7687:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67737,"name":"bool","nodeType":"ElementaryTypeName","src":"7687:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67745,"initialValue":{"arguments":[{"id":67743,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67717,"src":"7731:8:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67739,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"7704:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:4:119","memberName":"call","nodeType":"MemberAccess","src":"7704:12:119","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:7:119","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"7704:26:119","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":67744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:36:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7686:54:119"},{"condition":{"id":67746,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67738,"src":"7759:7:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67749,"nodeType":"IfStatement","src":"7755:52:119","trueBody":{"id":67748,"nodeType":"Block","src":"7768:39:119","statements":[{"functionReturnParameters":67702,"id":67747,"nodeType":"Return","src":"7786:7:119"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67753,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7838:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7847:7:119","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69972,"src":"7838:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67755,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7856:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69974,"src":"7856:14:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67757,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7872:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7881:12:119","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69977,"src":"7872:21:119","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69997_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:2:119","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69994,"src":"7872:24:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67760,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67700,"src":"7898:8:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:119","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69977,"src":"7898:21:119","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69997_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:4:119","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69996,"src":"7898:26:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":67752,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65265,"src":"7832:5:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":67763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7832:93:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67764,"nodeType":"EmitStatement","src":"7827:98:119"}]},"documentation":{"id":67697,"nodeType":"StructuredDocumentation","src":"7079:64:119","text":"@dev Non-zero value always sent since never goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"7157:17:119","parameters":{"id":67701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67700,"mutability":"mutable","name":"_message","nameLocation":"7197:8:119","nodeType":"VariableDeclaration","scope":67766,"src":"7175:30:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67699,"nodeType":"UserDefinedTypeName","pathNode":{"id":67698,"name":"Gear.Message","nameLocations":["7175:4:119","7180:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":69978,"src":"7175:12:119"},"referencedDeclaration":69978,"src":"7175:12:119","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69978_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7174:32:119"},"returnParameters":{"id":67702,"nodeType":"ParameterList","parameters":[],"src":"7215:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67831,"nodeType":"FunctionDefinition","src":"7938:514:119","nodes":[],"body":{"id":67830,"nodeType":"Block","src":"8022:430:119","nodes":[],"statements":[{"assignments":[67776],"declarations":[{"constant":false,"id":67776,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8045:16:119","nodeType":"VariableDeclaration","scope":67830,"src":"8032:29:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67775,"name":"bytes","nodeType":"ElementaryTypeName","src":"8032:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67777,"nodeType":"VariableDeclarationStatement","src":"8032:29:119"},{"body":{"id":67824,"nodeType":"Block","src":"8117:284:119","statements":[{"assignments":[67793],"declarations":[{"constant":false,"id":67793,"mutability":"mutable","name":"claim","nameLocation":"8156:5:119","nodeType":"VariableDeclaration","scope":67824,"src":"8131:30:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":67792,"nodeType":"UserDefinedTypeName","pathNode":{"id":67791,"name":"Gear.ValueClaim","nameLocations":["8131:4:119","8136:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":70049,"src":"8131:15:119"},"referencedDeclaration":70049,"src":"8131:15:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":67797,"initialValue":{"baseExpression":{"id":67794,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67770,"src":"8164:7:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67796,"indexExpression":{"id":67795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67779,"src":"8172:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8164:10:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8131:43:119"},{"expression":{"id":67808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67798,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67776,"src":"8189:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67802,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67776,"src":"8221:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67805,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67793,"src":"8260:5:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":67803,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"8239:4:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":67804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:119","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":70711,"src":"8239:20:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$70049_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":67806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:27:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":67800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8208:5:119","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":67799,"name":"bytes","nodeType":"ElementaryTypeName","src":"8208:5:119","typeDescriptions":{}}},"id":67801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8214:6:119","memberName":"concat","nodeType":"MemberAccess","src":"8208:12:119","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":67807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8208:59:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8189:78:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":67809,"nodeType":"ExpressionStatement","src":"8189:78:119"},{"expression":{"arguments":[{"expression":{"id":67811,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67793,"src":"8297:5:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8303:11:119","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":70046,"src":"8297:17:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67813,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67793,"src":"8316:5:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":70048,"src":"8316:11:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67810,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"8282:14:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:46:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67816,"nodeType":"ExpressionStatement","src":"8282:46:119"},{"eventCall":{"arguments":[{"expression":{"id":67818,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67793,"src":"8361:5:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8367:9:119","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":70044,"src":"8361:15:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67820,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67793,"src":"8378:5:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:5:119","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":70048,"src":"8378:11:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67817,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65272,"src":"8348:12:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":67822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:42:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67823,"nodeType":"EmitStatement","src":"8343:47:119"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67779,"src":"8092:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67783,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67770,"src":"8096:7:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8104:6:119","memberName":"length","nodeType":"MemberAccess","src":"8096:14:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8092:18:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67825,"initializationExpression":{"assignments":[67779],"declarations":[{"constant":false,"id":67779,"mutability":"mutable","name":"i","nameLocation":"8085:1:119","nodeType":"VariableDeclaration","scope":67825,"src":"8077:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67778,"name":"uint256","nodeType":"ElementaryTypeName","src":"8077:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67781,"initialValue":{"hexValue":"30","id":67780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8077:13:119"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8112:3:119","subExpression":{"id":67786,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67779,"src":"8112:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67788,"nodeType":"ExpressionStatement","src":"8112:3:119"},"nodeType":"ForStatement","src":"8072:329:119"},{"expression":{"arguments":[{"id":67827,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67776,"src":"8428:16:119","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67826,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8418:9:119","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":67828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:27:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67774,"id":67829,"nodeType":"Return","src":"8411:34:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7947:12:119","parameters":{"id":67771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67770,"mutability":"mutable","name":"_claims","nameLocation":"7987:7:119","nodeType":"VariableDeclaration","scope":67831,"src":"7960:34:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":67768,"nodeType":"UserDefinedTypeName","pathNode":{"id":67767,"name":"Gear.ValueClaim","nameLocations":["7960:4:119","7965:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":70049,"src":"7960:15:119"},"referencedDeclaration":70049,"src":"7960:15:119","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$70049_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":67769,"nodeType":"ArrayTypeName","src":"7960:17:119","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$70049_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7959:36:119"},"returnParameters":{"id":67774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67831,"src":"8013:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8012:9:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67846,"nodeType":"FunctionDefinition","src":"8524:243:119","nodes":[],"body":{"id":67845,"nodeType":"Block","src":"8587:180:119","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":67840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67838,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67206,"src":"8629:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67839,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67833,"src":"8641:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8629:22:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67841,"nodeType":"ExpressionStatement","src":"8629:22:119"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67842,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67457,"src":"8728:30:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:32:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67844,"nodeType":"ExpressionStatement","src":"8728:32:119"}]},"implemented":true,"kind":"function","modifiers":[{"id":67836,"kind":"modifierInvocation","modifierName":{"id":67835,"name":"whileActive","nameLocations":["8575:11:119"],"nodeType":"IdentifierPath","referencedDeclaration":67320,"src":"8575:11:119"},"nodeType":"ModifierInvocation","src":"8575:11:119"}],"name":"_setInheritor","nameLocation":"8533:13:119","parameters":{"id":67834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67833,"mutability":"mutable","name":"_inheritor","nameLocation":"8555:10:119","nodeType":"VariableDeclaration","scope":67846,"src":"8547:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67832,"name":"address","nodeType":"ElementaryTypeName","src":"8547:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8546:20:119"},"returnParameters":{"id":67837,"nodeType":"ParameterList","parameters":[],"src":"8587:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67860,"nodeType":"FunctionDefinition","src":"8773:235:119","nodes":[],"body":{"id":67859,"nodeType":"Block","src":"8827:181:119","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":67853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67851,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67211,"src":"8870:9:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67852,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67848,"src":"8882:10:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8870:22:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":67854,"nodeType":"ExpressionStatement","src":"8870:22:119"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":67856,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67211,"src":"8991:9:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67855,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65209,"src":"8978:12:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8978:23:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67858,"nodeType":"EmitStatement","src":"8973:28:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8782:16:119","parameters":{"id":67849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67848,"mutability":"mutable","name":"_stateHash","nameLocation":"8807:10:119","nodeType":"VariableDeclaration","scope":67860,"src":"8799:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8799:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8798:20:119"},"returnParameters":{"id":67850,"nodeType":"ParameterList","parameters":[],"src":"8827:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67881,"nodeType":"FunctionDefinition","src":"9048:182:119","nodes":[],"body":{"id":67880,"nodeType":"Block","src":"9120:110:119","nodes":[],"statements":[{"assignments":[67869],"declarations":[{"constant":false,"id":67869,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9138:9:119","nodeType":"VariableDeclaration","scope":67880,"src":"9130:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67868,"name":"address","nodeType":"ElementaryTypeName","src":"9130:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67875,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67871,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67862,"src":"9158:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67870,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65695,"src":"9150:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65695_$","typeString":"type(contract IRouter)"}},"id":67872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:19:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65695","typeString":"contract IRouter"}},"id":67873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:11:119","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":65515,"src":"9150:31:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:33:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9130:53:119"},{"expression":{"arguments":[{"id":67877,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67869,"src":"9213:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67876,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65706,"src":"9200:12:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65706_$","typeString":"type(contract IWrappedVara)"}},"id":67878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9200:23:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"functionReturnParameters":67867,"id":67879,"nodeType":"Return","src":"9193:30:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9057:6:119","parameters":{"id":67863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67862,"mutability":"mutable","name":"routerAddr","nameLocation":"9072:10:119","nodeType":"VariableDeclaration","scope":67881,"src":"9064:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67861,"name":"address","nodeType":"ElementaryTypeName","src":"9064:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9063:20:119"},"returnParameters":{"id":67867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67866,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67881,"src":"9106:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"},"typeName":{"id":67865,"nodeType":"UserDefinedTypeName","pathNode":{"id":67864,"name":"IWrappedVara","nameLocations":["9106:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":65706,"src":"9106:12:119"},"referencedDeclaration":65706,"src":"9106:12:119","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9105:14:119"},"scope":67930,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67900,"nodeType":"FunctionDefinition","src":"9236:182:119","nodes":[],"body":{"id":67899,"nodeType":"Block","src":"9286:132:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67886,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9300:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9304:6:119","memberName":"sender","nodeType":"MemberAccess","src":"9300:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":67888,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67204,"src":"9314:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9300:21:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67897,"nodeType":"Block","src":"9370:42:119","statements":[{"expression":{"expression":{"id":67894,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9391:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9395:6:119","memberName":"sender","nodeType":"MemberAccess","src":"9391:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67885,"id":67896,"nodeType":"Return","src":"9384:17:119"}]},"id":67898,"nodeType":"IfStatement","src":"9296:116:119","trueBody":{"id":67893,"nodeType":"Block","src":"9323:41:119","statements":[{"expression":{"expression":{"id":67890,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9344:2:119","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":67891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9347:6:119","memberName":"origin","nodeType":"MemberAccess","src":"9344:9:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67885,"id":67892,"nodeType":"Return","src":"9337:16:119"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9245:7:119","parameters":{"id":67882,"nodeType":"ParameterList","parameters":[],"src":"9252:2:119"},"returnParameters":{"id":67885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67900,"src":"9277:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67883,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9276:9:119"},"scope":67930,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67929,"nodeType":"FunctionDefinition","src":"9424:243:119","nodes":[],"body":{"id":67928,"nodeType":"Block","src":"9492:175:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67904,"src":"9506:5:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9515:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9506:10:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67927,"nodeType":"IfStatement","src":"9502:159:119","trueBody":{"id":67926,"nodeType":"Block","src":"9518:143:119","statements":[{"assignments":[67911],"declarations":[{"constant":false,"id":67911,"mutability":"mutable","name":"success","nameLocation":"9537:7:119","nodeType":"VariableDeclaration","scope":67926,"src":"9532:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67910,"name":"bool","nodeType":"ElementaryTypeName","src":"9532:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67920,"initialValue":{"arguments":[{"id":67917,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67902,"src":"9573:11:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67918,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67904,"src":"9586:5:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67913,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67335,"src":"9554:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9554:8:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67912,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67881,"src":"9547:6:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65706_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:16:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"id":67916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9564:8:119","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"9547:25:119","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":67919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:45:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9532:60:119"},{"expression":{"arguments":[{"id":67922,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67911,"src":"9614:7:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":67923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9623:26:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""},"value":"failed to transfer WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""}],"id":67921,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9606:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9606:44:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67925,"nodeType":"ExpressionStatement","src":"9606:44:119"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9433:14:119","parameters":{"id":67905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67902,"mutability":"mutable","name":"destination","nameLocation":"9456:11:119","nodeType":"VariableDeclaration","scope":67929,"src":"9448:19:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67901,"name":"address","nodeType":"ElementaryTypeName","src":"9448:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67904,"mutability":"mutable","name":"value","nameLocation":"9477:5:119","nodeType":"VariableDeclaration","scope":67929,"src":"9469:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67903,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9447:36:119"},"returnParameters":{"id":67906,"nodeType":"ParameterList","parameters":[],"src":"9492:0:119"},"scope":67930,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67201,"name":"IMirror","nameLocations":["422:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":65344,"src":"422:7:119"},"id":67202,"nodeType":"InheritanceSpecifier","src":"422:7:119"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67930,65344],"name":"Mirror","nameLocation":"412:6:119","scope":67931,"usedErrors":[],"usedEvents":[65209,65220,65231,65238,65243,65254,65265,65272]}],"license":"UNLICENSED"},"id":119} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index f0198a972eb..245bb39bb6f 100644 --- a/ethexe/ethereum/MirrorProxy.json +++ b/ethexe/ethereum/MirrorProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212205c9b1b7b667b8036fd369127f3d67ec9fd80e37388b905666820dfd840a1044c64736f6c634300081c0033","sourceMap":"259:286:119:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:119;;;;-1:-1:-1;;;;;259:286:119;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:119;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:119;;;;;;-1:-1:-1;259:286:119;;;;;-1:-1:-1;259:286:119","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea26469706673582212205c9b1b7b667b8036fd369127f3d67ec9fd80e37388b905666820dfd840a1044c64736f6c634300081c0033","sourceMap":"259:286:119:-:0;;;;;;;;;-1:-1:-1;;;;259:286:119;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:119;508:28;;;;;;-1:-1:-1;508:28:119;;2381:17:40;508:28:119;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:40;:::i;259:286:119:-;;;;-1:-1:-1;259:286:119;;;;;-1:-1:-1;259:286:119;508:28;;;;;;259:286;;;-1:-1:-1;259:286:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:119;;;;309:31;-1:-1:-1;;;;;259:286:119;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:119;;;;;;;:::o;949:895:40:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"67787":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b\",\"dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831\",\"dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf","urls":["bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b","dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de","urls":["bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831","dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":67812,"exportedSymbols":{"IMirrorProxy":[65223],"IRouter":[65486],"MirrorProxy":[67811],"Proxy":[42880]},"nodeType":"SourceUnit","src":"39:507:119","nodes":[{"id":67775,"nodeType":"PragmaDirective","src":"39:24:119","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67777,"nodeType":"ImportDirective","src":"65:62:119","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":67812,"sourceUnit":42881,"symbolAliases":[{"foreign":{"id":67776,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42880,"src":"73:5:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67779,"nodeType":"ImportDirective","src":"128:48:119","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67812,"sourceUnit":65224,"symbolAliases":[{"foreign":{"id":67778,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65223,"src":"136:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67781,"nodeType":"ImportDirective","src":"177:38:119","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67812,"sourceUnit":65487,"symbolAliases":[{"foreign":{"id":67780,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"185:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67811,"nodeType":"ContractDefinition","src":"259:286:119","nodes":[{"id":67787,"nodeType":"VariableDeclaration","src":"309:31:119","nodes":[],"baseFunctions":[65222],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:119","scope":67811,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67786,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67797,"nodeType":"FunctionDefinition","src":"347:62:119","nodes":[],"body":{"id":67796,"nodeType":"Block","src":"376:33:119","nodes":[],"statements":[{"expression":{"id":67794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67792,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67787,"src":"386:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67793,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67789,"src":"395:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67795,"nodeType":"ExpressionStatement","src":"386:16:119"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67789,"mutability":"mutable","name":"_router","nameLocation":"367:7:119","nodeType":"VariableDeclaration","scope":67797,"src":"359:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67788,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:119"},"returnParameters":{"id":67791,"nodeType":"ParameterList","parameters":[],"src":"376:0:119"},"scope":67811,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67810,"nodeType":"FunctionDefinition","src":"415:128:119","nodes":[],"body":{"id":67809,"nodeType":"Block","src":"491:52:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67804,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67787,"src":"516:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67803,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"508:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65486_$","typeString":"type(contract IRouter)"}},"id":67805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65486","typeString":"contract IRouter"}},"id":67806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:119","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":65319,"src":"508:26:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67802,"id":67808,"nodeType":"Return","src":"501:35:119"}]},"baseFunctions":[42861],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:119","overrides":{"id":67799,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:119"},"parameters":{"id":67798,"nodeType":"ParameterList","parameters":[],"src":"439:2:119"},"returnParameters":{"id":67802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67810,"src":"482:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67800,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:119"},"scope":67811,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":67782,"name":"IMirrorProxy","nameLocations":["283:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":65223,"src":"283:12:119"},"id":67783,"nodeType":"InheritanceSpecifier","src":"283:12:119"},{"baseName":{"id":67784,"name":"Proxy","nameLocations":["297:5:119"],"nodeType":"IdentifierPath","referencedDeclaration":42880,"src":"297:5:119"},"id":67785,"nodeType":"InheritanceSpecifier","src":"297:5:119"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67811,42880,65223],"name":"MirrorProxy","nameLocation":"268:11:119","scope":67812,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":119} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220720eb300bfe7214d61cf2390114ce707ebdcf9a4f2ea20e341792c490b51dd5c64736f6c634300081c0033","sourceMap":"259:286:120:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:120;;;;-1:-1:-1;;;;;259:286:120;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:120;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:120;;;;;;-1:-1:-1;259:286:120;;;;;-1:-1:-1;259:286:120","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220720eb300bfe7214d61cf2390114ce707ebdcf9a4f2ea20e341792c490b51dd5c64736f6c634300081c0033","sourceMap":"259:286:120:-:0;;;;;;;;;-1:-1:-1;;;;259:286:120;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:120;508:28;;;;;;-1:-1:-1;508:28:120;;2381:17:40;508:28:120;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:40;:::i;259:286:120:-;;;;-1:-1:-1;259:286:120;;;;;-1:-1:-1;259:286:120;508:28;;;;;;259:286;;;-1:-1:-1;259:286:120;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:120;;;;309:31;-1:-1:-1;;;;;259:286:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:120;;;;;;;:::o;949:895:40:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"67944":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5\",\"dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"lib/symbiotic-core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/symbiotic-core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"lib/symbiotic-core/src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/symbiotic-core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56\",\"dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3\",\"dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn\"]},\"src/Middleware.sol\":{\"keccak256\":\"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61\",\"dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52\",\"dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3\",\"dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9","urls":["bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5","dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4","urls":["bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56","dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a","urls":["bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3","dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn"],"license":"UNLICENSED"},"src/Middleware.sol":{"keccak256":"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed","urls":["bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61","dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th"],"license":"BUSL-1.1"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9","urls":["bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52","dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq"],"license":"UNLICENSED"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381","urls":["bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3","dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":67969,"exportedSymbols":{"IMirrorProxy":[65389],"IRouter":[65695],"MirrorProxy":[67968],"Proxy":[42880]},"nodeType":"SourceUnit","src":"39:507:120","nodes":[{"id":67932,"nodeType":"PragmaDirective","src":"39:24:120","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67934,"nodeType":"ImportDirective","src":"65:62:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":67969,"sourceUnit":42881,"symbolAliases":[{"foreign":{"id":67933,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42880,"src":"73:5:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67936,"nodeType":"ImportDirective","src":"128:48:120","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67969,"sourceUnit":65390,"symbolAliases":[{"foreign":{"id":67935,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65389,"src":"136:12:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67938,"nodeType":"ImportDirective","src":"177:38:120","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67969,"sourceUnit":65696,"symbolAliases":[{"foreign":{"id":67937,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65695,"src":"185:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67968,"nodeType":"ContractDefinition","src":"259:286:120","nodes":[{"id":67944,"nodeType":"VariableDeclaration","src":"309:31:120","nodes":[],"baseFunctions":[65388],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:120","scope":67968,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67943,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67954,"nodeType":"FunctionDefinition","src":"347:62:120","nodes":[],"body":{"id":67953,"nodeType":"Block","src":"376:33:120","nodes":[],"statements":[{"expression":{"id":67951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67949,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67944,"src":"386:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67950,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67946,"src":"395:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67952,"nodeType":"ExpressionStatement","src":"386:16:120"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67946,"mutability":"mutable","name":"_router","nameLocation":"367:7:120","nodeType":"VariableDeclaration","scope":67954,"src":"359:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67945,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:120"},"returnParameters":{"id":67948,"nodeType":"ParameterList","parameters":[],"src":"376:0:120"},"scope":67968,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67967,"nodeType":"FunctionDefinition","src":"415:128:120","nodes":[],"body":{"id":67966,"nodeType":"Block","src":"491:52:120","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67961,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67944,"src":"516:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67960,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65695,"src":"508:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65695_$","typeString":"type(contract IRouter)"}},"id":67962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65695","typeString":"contract IRouter"}},"id":67963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:120","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":65505,"src":"508:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67959,"id":67965,"nodeType":"Return","src":"501:35:120"}]},"baseFunctions":[42861],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:120","overrides":{"id":67956,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:120"},"parameters":{"id":67955,"nodeType":"ParameterList","parameters":[],"src":"439:2:120"},"returnParameters":{"id":67959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67967,"src":"482:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67957,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:120"},"scope":67968,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":67939,"name":"IMirrorProxy","nameLocations":["283:12:120"],"nodeType":"IdentifierPath","referencedDeclaration":65389,"src":"283:12:120"},"id":67940,"nodeType":"InheritanceSpecifier","src":"283:12:120"},{"baseName":{"id":67941,"name":"Proxy","nameLocations":["297:5:120"],"nodeType":"IdentifierPath","referencedDeclaration":42880,"src":"297:5:120"},"id":67942,"nodeType":"InheritanceSpecifier","src":"297:5:120"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67968,42880,65389],"name":"MirrorProxy","nameLocation":"268:11:120","scope":67969,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":120} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index fde5c74dd89..ae798b4e290 100644 --- a/ethexe/ethereum/Router.json +++ b/ethexe/ethereum/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitValidators","inputs":[{"name":"commitment","type":"tuple","internalType":"struct Gear.ValidatorsCommitment","components":[{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"eraIndex","type":"uint256","internalType":"uint256"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"genesisTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_eraDuration","type":"uint256","internalType":"uint256"},{"name":"_electionDuration","type":"uint256","internalType":"uint256"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"NextEraValidatorsCommitted","inputs":[{"name":"startTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080806040523460aa575f516020612e715f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051612dc290816100af8239f35b6001600160401b0319166001600160401b039081175f516020612e715f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e7146121415750806301b1d15614611a035780631c149d8a146118aa57806328e24b3d146118805780633d43b4181461182e578063527de0f9146117ac57806365ecfea2146117735780636c2eb3501461148c578063715018a61461142357806382bdeaad1461130b57806384d22a4f146112a257806388f50cf0146112695780638b1edf1e146111a25780638da5cb5b1461116d5780638f381dbe146111275780639067088e146110de57806396a2ddfa146110b0578063aaf0fe6a14610d13578063b1669a3314610865578063baaf020114610768578063c13911e814610724578063c9f16a11146106f6578063ca1e781914610675578063cacf66ab1461063d578063e6fabc0914610604578063e7006a74146104e3578063e97d3eb3146102b0578063ed612f8c1461027a578063edc8722514610231578063efd81abc146101ff578063f2fde38b146101d25763facd743b1461017d575f80fd5b346101cf5760203660031901126101cf576101966121b1565b6101ad5f516020612d4d5f395f51905f52546128d5565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101cf5760203660031901126101cf576101fc6101ef6121b1565b6101f7612729565b61254b565b80f35b50346101cf57806003193601126101cf57602061ffff60075f516020612d4d5f395f51905f5254015416604051908152f35b50346101cf57806003193601126101cf5760206102725f516020612d4d5f395f51905f525461ffff60076001610266846128d5565b01549201541690612a22565b604051908152f35b50346101cf57806003193601126101cf57602060016102a65f516020612d4d5f395f51905f52546128d5565b0154604051908152f35b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf57366023830112156101cf578160040135916001600160401b0383116104df573660248460061b830101116104df576024356001600160401b0381116104db57906103238492369060040161216b565b935f516020612d4d5f395f51905f525492610340845415156121e8565b606095829360118601975b878610156104be578560061b84016024810135918287528a60205260ff60408820541660038110156104aa57600103610447576001926103fa6044610427940161039481612530565b1561042f57828a528d60205260408a20600260ff1982541617905560148c016103bd815461253d565b90555b6103c981612530565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612530565b6040519060208201928352151560f81b60408201526021815261041e6041826122a4565b519020906122c5565b95019461034b565b828a528d60205260408a2060ff1981541690556103c0565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926101fc92886104d69360208151910120906125cf565b6122f4565b8280fd5b5080fd5b50346101cf5760603660031901126101cf576104fd6121b1565b6024359061054560443591610512838561275c565b9360405193602085019182526040850152604084526105326060856122a4565b92519092206001600160a01b0392612c47565b16803b156104db5760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156105f9576105e4575b5050813b156104db576040519063485cc95560e01b82523360048301526024820152828160448183865af180156105d9576105c4575b602082604051908152f35b6105cf8380926122a4565b6104df57816105b9565b6040513d85823e3d90fd5b816105ee916122a4565b6104db57825f610583565b6040513d84823e3d90fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf57602065ffffffffffff60015f516020612d4d5f395f51905f52540154821c16604051908152f35b50346101cf57806003193601126101cf576106a860016106a25f516020612d4d5f395f51905f52546128d5565b01612340565b90604051918291602083016020845282518091526020604085019301915b8181106106d4575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c6565b50346101cf57806003193601126101cf57602060025f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf5760ff604060209260115f516020612d4d5f395f51905f5254016004358252845220541661076660405180926121db565bf35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761079990369060040161216b565b905f516020612d4d5f395f51905f5254906107b383612391565b916107c160405193846122a4565b8383526107cd84612391565b602084019490601f19013686376012869201915b81811061082c57868587604051928392602084019060208552518091526040840192915b818110610813575050500390f35b8251845285945060209384019390920191600101610805565b8061084261083d60019385886123a8565b6123f8565b828060a01b03165f528360205260405f205461085e82886123cc565b52016107e1565b50346101cf5760e03660031901126101cf5761087f6121b1565b6024356001600160a01b03811691908290036104db576044356001600160a01b0381169290839003610d0f576064356001600160a01b0381169190829003610d0b576084359160a43560c4356001600160401b038111610d07576108e790369060040161216b565b9490925f516020612d6d5f395f51905f52549660ff8860401c1615976001600160401b03811680159081610cff575b6001149081610cf5575b159081610cec575b50610cdd5767ffffffffffffffff1981166001175f516020612d6d5f395f51905f5255610967919089610cb1575b5061095f612b82565b6101f7612b82565b4215610c5b578215610c055782821115610ba457604097885161098a8a826122a4565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526109be612729565b5190205f198101908111610b905792610b3697969592600895928b610b2f966109f48251926020840192835260208452836122a4565b60ff19915190201697885f516020612d4d5f395f51905f52558c610a16612890565b80518b5560018b019169ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff191617179055828d8051610a5e81612289565b8381526020810185905201526004890180546001600160a01b03199081166001600160a01b039384161790915560058a018054821693831693909317909255600689018054909216921691909117905560078601805461ffff1916611a0a179055610ac76123e0565b506509184e72a00060208b51610adc8161225a565b639502f90081520152600e860180546001600160c01b0319166d09184e72a000000000009502f90017905589518290602090610b178161225a565b8381520152600f8601556010850155429436916124a7565b91016128ef565b610b3e575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160018152a180f35b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f516020612d6d5f395f51905f52555f610956565b63f92ee8a960e01b8b5260048bfd5b9050155f610928565b303b159150610920565b8a9150610916565b8780fd5b8480fd5b8380fd5b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf5781600401604060031984360301126104df576024356001600160401b0381116104db57610d6890369060040161216b565b91905f516020612d4d5f395f51905f52549265ffffffffffff600185015460201c1691610d958342612473565b94600f81015495861561109c5786900495602489013596600181018091116110885787036110305786610dc791612494565b840180941161101c57610dde601082015485612473565b4210610fd757610ded81612a08565b954260028801541015610f775760405198610e078a61225a565b8635906001600160401b038211610f73570136602382011215610f6f576020610e3b839236906024600482013591016124a7565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f50575050506020828c610e7a93610e9f9a9b9c9d9e520380845201826122a4565b5190206040516020810191825260208152610e966040826122a4565b519020906125cf565b15610ef057610ee6817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ee0610ed9866020976124fb565b36916124a7565b906128ef565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e54565b8880fd5b8980fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b89526011600452602489fd5b634e487b7160e01b88526012600452602488fd5b50346101cf57806003193601126101cf57602060135f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf576110f86121b1565b60125f516020612d4d5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101cf5760203660031901126101cf57600435906001600160401b0382116101cf57602061116361115d366004860161216b565b9061240c565b6040519015158152f35b50346101cf57806003193601126101cf575f516020612d2d5f395f51905f52546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f525480546112245763ffffffff600182015416409081156111df575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf576112bb6123e0565b506040600e5f516020612d4d5f395f51905f5254016001600160801b038251916112e48361225a565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761133c90369060040161216b565b905f516020612d4d5f395f51905f52549061135683612391565b9161136460405193846122a4565b83835261137084612391565b602084019490601f19013686376011869201915b8181106113d957868587604051928392602084019060208552518091526040840192915b8181106113b6575050500390f35b91935091602080826113cb60019488516121db565b0194019101918493926113a8565b6113e48183866123a8565b3587528260205260ff6040882054166113fd82876123cc565b600382101561140f5752600101611384565b634e487b7160e01b89526021600452602489fd5b50346101cf57806003193601126101cf5761143c612729565b5f516020612d2d5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101cf57806003193601126101cf576114a5612729565b5f516020612d6d5f395f51905f525460ff8160401c16801561175f575b61175057680100000000000000029068ffffffffffffffffff1916175f516020612d6d5f395f51905f52555f516020612d4d5f395f51905f5254604090815161150b83826122a4565b6017815260208101907f726f757465722e73746f726167652e526f757465725632000000000000000000825261153f612729565b5190205f19810190811161173c57916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29382519084820190815284825261158984836122a4565b60ff19915190201690815f516020612d4d5f395f51905f52556115aa612890565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff1916171790556004810160048301908082036116ee575b505061ffff600782015416600783019061ffff19825416179055611630600161161c836128d5565b016116274291612340565b600885016128ef565b600e8101600e83019080820361169c575b5050600f8101600f830191818303611686575b5050505060ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160028152a180f35b601092839254905501549101555f808080611654565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611641565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490850180548416918316919091179055600680840154908501805490931691161790555f806115f4565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b03821610156114c2565b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600501546040516001600160a01b039091168152602090f35b3461182a576117cc6117bd3661219b565b6001600160a01b03929161275c565b16803b1561182a576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af191821561181f5760209261180f575b50604051908152f35b5f611819916122a4565b5f611806565b6040513d5f823e3d90fd5b5f80fd5b3461182a57602036600319011261182a576118476121b1565b61184f612729565b5f516020612d4d5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b3461182a575f36600319011261182a5760205f516020612d4d5f395f51905f525454604051908152f35b3461182a576118b83661219b565b9081158015906119f9575b156119be5760115f516020612d4d5f395f51905f52546118e5815415156121e8565b0190805f528160205260ff60405f20541660038110156119aa57611949577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f4915156118c3565b3461182a57604036600319011261182a576004356001600160401b03811161182a57611a3390369060040161216b565b6024356001600160401b03811161182a57611a5290369060040161216b565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6121325760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f516020612d4d5f395f51905f525491611aba835415156121e8565b60605f915b858310156120f6578260051b840135609e198536030181121561182a5784019060028601546040830135036120a357611afb6060830135612a44565b1561204f57949396959291906020611b148183016125bc565b65ffffffffffff60405191611b288361225a565b843583521691829101528135600287015565ffffffffffff19600387015416176003860155611b5a60808201826124fb565b9690946060995f925b89841015611fac578360051b88013560be198936030181121561182a5788019b611b8c8d6123f8565b6001600160a01b03165f90815260128b01602052604090205415611f4f5760068a01548d906001600160a01b03166060611bc5836123f8565b92019182356001600160801b03811680910361182a5760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af1801561181f57611f19575b506001600160a01b03611c298f6123f8565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b0390611c96906001600160a01b03611c67866121c7565b166024870152602085013560448701526001600160a01b03611c8b604087016121c7565b166064870152612a87565b16608484015236829003601e19019060808301358281121561182a57830190602082359201946001600160401b03831161182a57606083023603861361182a57826101049260c060a4840152520193905f905b808210611ecf575050509e9f939495969798999a9b9c9d9e60a08201359081121561182a570190813560208301926001600160401b03821161182a578160051b91823603851361182a578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b828510611dd6575050505050505091815f8160209503925af190811561181f575f91611da4575b50611d93906001926122c5565b9b9a99989796959401929190611b63565b90506020813d8211611dce575b81611dbe602093836122a4565b8101031261182a57516001611d86565b3d9150611db1565b9193959750919395601f1983820301875287358581121561182a57820160208101358252906001600160a01b03611e0f604084016121c7565b1660208201526060820135603e19368490030181121561182a5782602091010191602083359301906001600160401b03841161182a57833603821361182a578360c092836040860152818486015260e08501375f60e085850101526001600160801b03611e7e60808301612a87565b16606084015260a0810135608084015201359163ffffffff60e01b831680930361182a5760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492611d5f565b90919460608060019288358152838060a01b03611eee60208b016121c7565b1660208201526001600160801b03611f0860408b01612a87565b166040820152019601920190611ce9565b6020813d8211611f47575b81611f31602093836122a4565b8101031261182a57518015158114611c17575f80fd5b3d9150611f24565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b96509697509793986001939150916120469260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ffd602082016125bc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261041e60a6826122a4565b91960191611abf565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6104d690878661210d9460208151910120906125cf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b3461182a575f36600319011261182a5760209060145f516020612d4d5f395f51905f525401548152f35b9181601f8401121561182a578235916001600160401b03831161182a576020808501948460051b01011161182a57565b604090600319011261182a576004359060243590565b600435906001600160a01b038216820361182a57565b35906001600160a01b038216820361182a57565b9060038210156119aa5752565b156121ef57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b0382111761227557604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761227557604052565b90601f801991011681019081106001600160401b0382111761227557604052565b6020806122f2928195946040519682889351918291018585015e82019083820152030180855201836122a4565b565b156122fb57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b81811061236f5750506122f2925003836122a4565b84546001600160a01b031683526001948501948794506020909301920161235a565b6001600160401b0381116122755760051b60200190565b91908110156123b85760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156123b85760209160051b010190565b604051906123ed8261225a565b5f6020838281520152565b356001600160a01b038116810361182a5790565b6124235f516020612d4d5f395f51905f52546128d5565b905f5b8381106124365750505050600190565b61244461083d8286856123a8565b6001600160a01b03165f9081526020849052604090205460ff161561246b57600101612426565b505050505f90565b9190820391821161248057565b634e487b7160e01b5f52601160045260245ffd5b8181029291811591840414171561248057565b9291906124b381612391565b936124c160405195866122a4565b602085838152019160051b810192831161182a57905b8282106124e357505050565b602080916124f0846121c7565b8152019101906124d7565b903590601e198136030182121561182a57018035906001600160401b03821161182a57602001918160051b3603831361182a57565b35801515810361182a5790565b5f1981146124805760010190565b6001600160a01b031680156125a9575f516020612d2d5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff8116810361182a5790565b9190916125f36125de826128d5565b9161ffff600760018501549201541690612a22565b9260405190602082019081526020825261260e6040836122a4565b61264a603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f1981018352826122a4565b5190205f925f5b8681101561271e578060051b820135601e198336030181121561182a5782018035906001600160401b03821161182a576020810190823603821361182a57604051906126a7601f8501601f1916602001836122a4565b838252602084369201011161182a575f6020846126d9956126d095838601378301015285612bad565b90929192612be7565b6001600160a01b03165f9081526020859052604090205460ff16612700575b600101612651565b9361270a9061253d565b938585036126f85750505050505050600190565b505050505050505f90565b5f516020612d2d5f395f51905f52546001600160a01b0316330361274957565b63118cdaa760e01b5f523360045260245ffd5b5f516020612d4d5f395f51905f525491612778835415156121e8565b815f526011830160205260ff60405f20541660038110156119aa57600203612834576127d660139160018060a01b036005860154169060405160208101918683526040820152604081526127cd6060826122a4565b51902090612c47565b9260018060a01b0384165f52601281016020528260405f2055016127fa815461253d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161289e81612289565b82815282602082015201526040516128b581612289565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6128de81612a9b565b156128e957600b0190565b60080190565b905f5b6001830190815481101561292f575f91825260208083208201546001600160a01b031683528490526040909120805460ff191690556001016128f2565b50505f5b8151811015612974576001906001600160a01b0361295182856123cc565b5116828060a01b03165f528360205260405f208260ff1982541617905501612933565b50600182018151916001600160401b038311612275576801000000000000000083116122755781548383558084106129e2575b50602001905f5260205f205f5b8381106129c5575050505060020155565b82516001600160a01b0316818301556020909201916001016129b4565b825f528360205f2091820191015b8181106129fd57506129a7565b5f81556001016129f0565b612a1181612a9b565b15612a1c5760080190565b600b0190565b61ffff612a30921690612494565b61270f810180911161248057612710900490565b905f19430143811161248057805b612a5d575b505f9150565b8040838103612a6e57506001925050565b15612a82578015612480575f190180612a52565b612a57565b35906001600160801b038216820361182a57565b600d600a820154910154808214612b3e5780821091421090811590421015918190612b37575b15612ad65782612ad057505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081612ac1565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f516020612d6d5f395f51905f525460401c1615612b9e57565b631afcd79f60e31b5f5260045ffd5b8151919060418303612bdd57612bd69250602082015190606060408401519301515f1a90612caa565b9192909190565b50505f9160029190565b60048110156119aa5780612bf9575050565b60018103612c105763f645eedf60e01b5f5260045ffd5b60028103612c2b575063fce698f760e01b5f5260045260245ffd5b600314612c355750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b03821615612c9b57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d21579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561181f575f516001600160a01b03811615612d1757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f66e3e1bc4037348273211a9406000b46d6c209d6dcb3083248113c6033f9a2b64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"690:16205:120:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;690:16205:120;;7985:34:25;7981:146;;-1:-1:-1;690:16205:120;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;690:16205:120;-1:-1:-1;;;;;690:16205:120;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;8087:29:25;;690:16205:120;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;690:16205:120;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e7146121415750806301b1d15614611a035780631c149d8a146118aa57806328e24b3d146118805780633d43b4181461182e578063527de0f9146117ac57806365ecfea2146117735780636c2eb3501461148c578063715018a61461142357806382bdeaad1461130b57806384d22a4f146112a257806388f50cf0146112695780638b1edf1e146111a25780638da5cb5b1461116d5780638f381dbe146111275780639067088e146110de57806396a2ddfa146110b0578063aaf0fe6a14610d13578063b1669a3314610865578063baaf020114610768578063c13911e814610724578063c9f16a11146106f6578063ca1e781914610675578063cacf66ab1461063d578063e6fabc0914610604578063e7006a74146104e3578063e97d3eb3146102b0578063ed612f8c1461027a578063edc8722514610231578063efd81abc146101ff578063f2fde38b146101d25763facd743b1461017d575f80fd5b346101cf5760203660031901126101cf576101966121b1565b6101ad5f516020612d4d5f395f51905f52546128d5565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101cf5760203660031901126101cf576101fc6101ef6121b1565b6101f7612729565b61254b565b80f35b50346101cf57806003193601126101cf57602061ffff60075f516020612d4d5f395f51905f5254015416604051908152f35b50346101cf57806003193601126101cf5760206102725f516020612d4d5f395f51905f525461ffff60076001610266846128d5565b01549201541690612a22565b604051908152f35b50346101cf57806003193601126101cf57602060016102a65f516020612d4d5f395f51905f52546128d5565b0154604051908152f35b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf57366023830112156101cf578160040135916001600160401b0383116104df573660248460061b830101116104df576024356001600160401b0381116104db57906103238492369060040161216b565b935f516020612d4d5f395f51905f525492610340845415156121e8565b606095829360118601975b878610156104be578560061b84016024810135918287528a60205260ff60408820541660038110156104aa57600103610447576001926103fa6044610427940161039481612530565b1561042f57828a528d60205260408a20600260ff1982541617905560148c016103bd815461253d565b90555b6103c981612530565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612530565b6040519060208201928352151560f81b60408201526021815261041e6041826122a4565b519020906122c5565b95019461034b565b828a528d60205260408a2060ff1981541690556103c0565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926101fc92886104d69360208151910120906125cf565b6122f4565b8280fd5b5080fd5b50346101cf5760603660031901126101cf576104fd6121b1565b6024359061054560443591610512838561275c565b9360405193602085019182526040850152604084526105326060856122a4565b92519092206001600160a01b0392612c47565b16803b156104db5760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156105f9576105e4575b5050813b156104db576040519063485cc95560e01b82523360048301526024820152828160448183865af180156105d9576105c4575b602082604051908152f35b6105cf8380926122a4565b6104df57816105b9565b6040513d85823e3d90fd5b816105ee916122a4565b6104db57825f610583565b6040513d84823e3d90fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf57602065ffffffffffff60015f516020612d4d5f395f51905f52540154821c16604051908152f35b50346101cf57806003193601126101cf576106a860016106a25f516020612d4d5f395f51905f52546128d5565b01612340565b90604051918291602083016020845282518091526020604085019301915b8181106106d4575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c6565b50346101cf57806003193601126101cf57602060025f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf5760ff604060209260115f516020612d4d5f395f51905f5254016004358252845220541661076660405180926121db565bf35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761079990369060040161216b565b905f516020612d4d5f395f51905f5254906107b383612391565b916107c160405193846122a4565b8383526107cd84612391565b602084019490601f19013686376012869201915b81811061082c57868587604051928392602084019060208552518091526040840192915b818110610813575050500390f35b8251845285945060209384019390920191600101610805565b8061084261083d60019385886123a8565b6123f8565b828060a01b03165f528360205260405f205461085e82886123cc565b52016107e1565b50346101cf5760e03660031901126101cf5761087f6121b1565b6024356001600160a01b03811691908290036104db576044356001600160a01b0381169290839003610d0f576064356001600160a01b0381169190829003610d0b576084359160a43560c4356001600160401b038111610d07576108e790369060040161216b565b9490925f516020612d6d5f395f51905f52549660ff8860401c1615976001600160401b03811680159081610cff575b6001149081610cf5575b159081610cec575b50610cdd5767ffffffffffffffff1981166001175f516020612d6d5f395f51905f5255610967919089610cb1575b5061095f612b82565b6101f7612b82565b4215610c5b578215610c055782821115610ba457604097885161098a8a826122a4565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526109be612729565b5190205f198101908111610b905792610b3697969592600895928b610b2f966109f48251926020840192835260208452836122a4565b60ff19915190201697885f516020612d4d5f395f51905f52558c610a16612890565b80518b5560018b019169ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff191617179055828d8051610a5e81612289565b8381526020810185905201526004890180546001600160a01b03199081166001600160a01b039384161790915560058a018054821693831693909317909255600689018054909216921691909117905560078601805461ffff1916611a0a179055610ac76123e0565b506509184e72a00060208b51610adc8161225a565b639502f90081520152600e860180546001600160c01b0319166d09184e72a000000000009502f90017905589518290602090610b178161225a565b8381520152600f8601556010850155429436916124a7565b91016128ef565b610b3e575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160018152a180f35b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f516020612d6d5f395f51905f52555f610956565b63f92ee8a960e01b8b5260048bfd5b9050155f610928565b303b159150610920565b8a9150610916565b8780fd5b8480fd5b8380fd5b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf5781600401604060031984360301126104df576024356001600160401b0381116104db57610d6890369060040161216b565b91905f516020612d4d5f395f51905f52549265ffffffffffff600185015460201c1691610d958342612473565b94600f81015495861561109c5786900495602489013596600181018091116110885787036110305786610dc791612494565b840180941161101c57610dde601082015485612473565b4210610fd757610ded81612a08565b954260028801541015610f775760405198610e078a61225a565b8635906001600160401b038211610f73570136602382011215610f6f576020610e3b839236906024600482013591016124a7565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f50575050506020828c610e7a93610e9f9a9b9c9d9e520380845201826122a4565b5190206040516020810191825260208152610e966040826122a4565b519020906125cf565b15610ef057610ee6817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ee0610ed9866020976124fb565b36916124a7565b906128ef565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e54565b8880fd5b8980fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b89526011600452602489fd5b634e487b7160e01b88526012600452602488fd5b50346101cf57806003193601126101cf57602060135f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf576110f86121b1565b60125f516020612d4d5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101cf5760203660031901126101cf57600435906001600160401b0382116101cf57602061116361115d366004860161216b565b9061240c565b6040519015158152f35b50346101cf57806003193601126101cf575f516020612d2d5f395f51905f52546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f525480546112245763ffffffff600182015416409081156111df575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf576112bb6123e0565b506040600e5f516020612d4d5f395f51905f5254016001600160801b038251916112e48361225a565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761133c90369060040161216b565b905f516020612d4d5f395f51905f52549061135683612391565b9161136460405193846122a4565b83835261137084612391565b602084019490601f19013686376011869201915b8181106113d957868587604051928392602084019060208552518091526040840192915b8181106113b6575050500390f35b91935091602080826113cb60019488516121db565b0194019101918493926113a8565b6113e48183866123a8565b3587528260205260ff6040882054166113fd82876123cc565b600382101561140f5752600101611384565b634e487b7160e01b89526021600452602489fd5b50346101cf57806003193601126101cf5761143c612729565b5f516020612d2d5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101cf57806003193601126101cf576114a5612729565b5f516020612d6d5f395f51905f525460ff8160401c16801561175f575b61175057680100000000000000029068ffffffffffffffffff1916175f516020612d6d5f395f51905f52555f516020612d4d5f395f51905f5254604090815161150b83826122a4565b6017815260208101907f726f757465722e73746f726167652e526f757465725632000000000000000000825261153f612729565b5190205f19810190811161173c57916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29382519084820190815284825261158984836122a4565b60ff19915190201690815f516020612d4d5f395f51905f52556115aa612890565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff1916171790556004810160048301908082036116ee575b505061ffff600782015416600783019061ffff19825416179055611630600161161c836128d5565b016116274291612340565b600885016128ef565b600e8101600e83019080820361169c575b5050600f8101600f830191818303611686575b5050505060ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160028152a180f35b601092839254905501549101555f808080611654565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611641565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490850180548416918316919091179055600680840154908501805490931691161790555f806115f4565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b03821610156114c2565b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600501546040516001600160a01b039091168152602090f35b3461182a576117cc6117bd3661219b565b6001600160a01b03929161275c565b16803b1561182a576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af191821561181f5760209261180f575b50604051908152f35b5f611819916122a4565b5f611806565b6040513d5f823e3d90fd5b5f80fd5b3461182a57602036600319011261182a576118476121b1565b61184f612729565b5f516020612d4d5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b3461182a575f36600319011261182a5760205f516020612d4d5f395f51905f525454604051908152f35b3461182a576118b83661219b565b9081158015906119f9575b156119be5760115f516020612d4d5f395f51905f52546118e5815415156121e8565b0190805f528160205260ff60405f20541660038110156119aa57611949577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f4915156118c3565b3461182a57604036600319011261182a576004356001600160401b03811161182a57611a3390369060040161216b565b6024356001600160401b03811161182a57611a5290369060040161216b565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6121325760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f516020612d4d5f395f51905f525491611aba835415156121e8565b60605f915b858310156120f6578260051b840135609e198536030181121561182a5784019060028601546040830135036120a357611afb6060830135612a44565b1561204f57949396959291906020611b148183016125bc565b65ffffffffffff60405191611b288361225a565b843583521691829101528135600287015565ffffffffffff19600387015416176003860155611b5a60808201826124fb565b9690946060995f925b89841015611fac578360051b88013560be198936030181121561182a5788019b611b8c8d6123f8565b6001600160a01b03165f90815260128b01602052604090205415611f4f5760068a01548d906001600160a01b03166060611bc5836123f8565b92019182356001600160801b03811680910361182a5760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af1801561181f57611f19575b506001600160a01b03611c298f6123f8565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b0390611c96906001600160a01b03611c67866121c7565b166024870152602085013560448701526001600160a01b03611c8b604087016121c7565b166064870152612a87565b16608484015236829003601e19019060808301358281121561182a57830190602082359201946001600160401b03831161182a57606083023603861361182a57826101049260c060a4840152520193905f905b808210611ecf575050509e9f939495969798999a9b9c9d9e60a08201359081121561182a570190813560208301926001600160401b03821161182a578160051b91823603851361182a578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b828510611dd6575050505050505091815f8160209503925af190811561181f575f91611da4575b50611d93906001926122c5565b9b9a99989796959401929190611b63565b90506020813d8211611dce575b81611dbe602093836122a4565b8101031261182a57516001611d86565b3d9150611db1565b9193959750919395601f1983820301875287358581121561182a57820160208101358252906001600160a01b03611e0f604084016121c7565b1660208201526060820135603e19368490030181121561182a5782602091010191602083359301906001600160401b03841161182a57833603821361182a578360c092836040860152818486015260e08501375f60e085850101526001600160801b03611e7e60808301612a87565b16606084015260a0810135608084015201359163ffffffff60e01b831680930361182a5760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492611d5f565b90919460608060019288358152838060a01b03611eee60208b016121c7565b1660208201526001600160801b03611f0860408b01612a87565b166040820152019601920190611ce9565b6020813d8211611f47575b81611f31602093836122a4565b8101031261182a57518015158114611c17575f80fd5b3d9150611f24565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b96509697509793986001939150916120469260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ffd602082016125bc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261041e60a6826122a4565b91960191611abf565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6104d690878661210d9460208151910120906125cf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b3461182a575f36600319011261182a5760209060145f516020612d4d5f395f51905f525401548152f35b9181601f8401121561182a578235916001600160401b03831161182a576020808501948460051b01011161182a57565b604090600319011261182a576004359060243590565b600435906001600160a01b038216820361182a57565b35906001600160a01b038216820361182a57565b9060038210156119aa5752565b156121ef57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b0382111761227557604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761227557604052565b90601f801991011681019081106001600160401b0382111761227557604052565b6020806122f2928195946040519682889351918291018585015e82019083820152030180855201836122a4565b565b156122fb57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b81811061236f5750506122f2925003836122a4565b84546001600160a01b031683526001948501948794506020909301920161235a565b6001600160401b0381116122755760051b60200190565b91908110156123b85760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156123b85760209160051b010190565b604051906123ed8261225a565b5f6020838281520152565b356001600160a01b038116810361182a5790565b6124235f516020612d4d5f395f51905f52546128d5565b905f5b8381106124365750505050600190565b61244461083d8286856123a8565b6001600160a01b03165f9081526020849052604090205460ff161561246b57600101612426565b505050505f90565b9190820391821161248057565b634e487b7160e01b5f52601160045260245ffd5b8181029291811591840414171561248057565b9291906124b381612391565b936124c160405195866122a4565b602085838152019160051b810192831161182a57905b8282106124e357505050565b602080916124f0846121c7565b8152019101906124d7565b903590601e198136030182121561182a57018035906001600160401b03821161182a57602001918160051b3603831361182a57565b35801515810361182a5790565b5f1981146124805760010190565b6001600160a01b031680156125a9575f516020612d2d5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff8116810361182a5790565b9190916125f36125de826128d5565b9161ffff600760018501549201541690612a22565b9260405190602082019081526020825261260e6040836122a4565b61264a603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f1981018352826122a4565b5190205f925f5b8681101561271e578060051b820135601e198336030181121561182a5782018035906001600160401b03821161182a576020810190823603821361182a57604051906126a7601f8501601f1916602001836122a4565b838252602084369201011161182a575f6020846126d9956126d095838601378301015285612bad565b90929192612be7565b6001600160a01b03165f9081526020859052604090205460ff16612700575b600101612651565b9361270a9061253d565b938585036126f85750505050505050600190565b505050505050505f90565b5f516020612d2d5f395f51905f52546001600160a01b0316330361274957565b63118cdaa760e01b5f523360045260245ffd5b5f516020612d4d5f395f51905f525491612778835415156121e8565b815f526011830160205260ff60405f20541660038110156119aa57600203612834576127d660139160018060a01b036005860154169060405160208101918683526040820152604081526127cd6060826122a4565b51902090612c47565b9260018060a01b0384165f52601281016020528260405f2055016127fa815461253d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161289e81612289565b82815282602082015201526040516128b581612289565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6128de81612a9b565b156128e957600b0190565b60080190565b905f5b6001830190815481101561292f575f91825260208083208201546001600160a01b031683528490526040909120805460ff191690556001016128f2565b50505f5b8151811015612974576001906001600160a01b0361295182856123cc565b5116828060a01b03165f528360205260405f208260ff1982541617905501612933565b50600182018151916001600160401b038311612275576801000000000000000083116122755781548383558084106129e2575b50602001905f5260205f205f5b8381106129c5575050505060020155565b82516001600160a01b0316818301556020909201916001016129b4565b825f528360205f2091820191015b8181106129fd57506129a7565b5f81556001016129f0565b612a1181612a9b565b15612a1c5760080190565b600b0190565b61ffff612a30921690612494565b61270f810180911161248057612710900490565b905f19430143811161248057805b612a5d575b505f9150565b8040838103612a6e57506001925050565b15612a82578015612480575f190180612a52565b612a57565b35906001600160801b038216820361182a57565b600d600a820154910154808214612b3e5780821091421090811590421015918190612b37575b15612ad65782612ad057505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081612ac1565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f516020612d6d5f395f51905f525460401c1615612b9e57565b631afcd79f60e31b5f5260045ffd5b8151919060418303612bdd57612bd69250602082015190606060408401519301515f1a90612caa565b9192909190565b50505f9160029190565b60048110156119aa5780612bf9575050565b60018103612c105763f645eedf60e01b5f5260045ffd5b60028103612c2b575063fce698f760e01b5f5260045260245ffd5b600314612c355750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b03821615612c9b57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d21579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561181f575f516001600160a01b03811615612d1757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f66e3e1bc4037348273211a9406000b46d6c209d6dcb3083248113c6033f9a2b64736f6c634300081c0033","sourceMap":"690:16205:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;:::i;:::-;5005:36;-1:-1:-1;;;;;;;;;;;690:16205:120;5005:36;:::i;:::-;:52;690:16205;;;;;;-1:-1:-1;690:16205:120;;;;;;-1:-1:-1;690:16205:120;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;2357:1:24;690:16205:120;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;690:16205:120;;;;;;;;;;;;;;;;;5154:28;-1:-1:-1;;;;;;;;;;;690:16205:120;5154:28;690:16205;;;;;;;;;;;;;;;;;;;;;;5619:147;-1:-1:-1;;;;;;;;;;;690:16205:120;;5704:25;5657:38;:33;;;:::i;:::-;:38;690:16205;5704:25;;690:16205;;5619:147;;:::i;:::-;690:16205;;;;;;;;;;;;;;;;;;;;5428:41;:36;-1:-1:-1;;;;;;;;;;;690:16205:120;5428:36;:::i;:::-;:41;690:16205;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;690:16205:120;;10552:107;690:16205;;10560:38;;10552:107;:::i;:::-;690:16205;10720:13;;10888:19;;;;10715:838;10764:3;10735:27;;;;;;690:16205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10888:82;690:16205;;;11076:20;3987::122;11076::120;11466:76;11076:20;;;;;:::i;:::-;;;;690:16205;;;;;;;;;11163:24;690:16205;;;;;;;;11205:39;;;:41;690:16205;;11205:41;:::i;:::-;690:16205;;11072:279;11406:20;;;:::i;:::-;690:16205;;11370:57;690:16205;;;;;;11370:57;3987:20:122;:::i;:::-;690:16205:120;;3951:57:122;690:16205:120;3951:57:122;;690:16205:120;;;;;;;;;;;;3951:57:122;;;;;;:::i;:::-;690:16205:120;3941:68:122;;11466:76:120;;:::i;:::-;10764:3;690:16205;10720:13;;;11072:279;690:16205;;;;;;;;;;;;;;;;11072:279;;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;10735:27;;;11563:155;10735:27;;11584:78;10735:27;690:16205;;;;;11616:32;11584:78;;:::i;:::-;11563:155;:::i;690:16205::-;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;:::i;:::-;;;;2908:43:37;690:16205:120;;8825:30;;;;;:::i;:::-;690:16205;;;8922:32;690:16205;8922:32;;690:16205;;;;;;;;8922:32;;;690:16205;8922:32;;:::i;:::-;690:16205;;8912:43;;;-1:-1:-1;;;;;690:16205:120;2908:43:37;:::i;:::-;690:16205:120;13659:43;;;;;690:16205;;-1:-1:-1;;;13659:43:120;;-1:-1:-1;;;;;690:16205:120;;;;13659:43;;690:16205;;;;;;;;;;;13659:43;;;;;;;;;690:16205;8975:47;;;;;;;690:16205;;;;;;8975:47;;9002:10;690:16205;8975:47;;690:16205;;;;;8975:47;;690:16205;8975:47;;;;;;;;;;;690:16205;;;;;;;;;8975:47;;;;;;:::i;:::-;690:16205;;8975:47;;;;690:16205;;;;;;;;;13659:43;;;;;:::i;:::-;690:16205;;13659:43;;;;;690:16205;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;4256:23;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;4011:32;-1:-1:-1;;;;;;;;;;;690:16205:120;4011:32;690:16205;;;;;;;;;;;;;;;;;;;;;;;;5300:41;:36;-1:-1:-1;;;;;;;;;;;690:16205:120;5300:36;:::i;:::-;:41;690:16205;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;-1:-1:-1;690:16205:120;;;;;;;;;5300:41;690:16205;;;;;;;;;;;;;;;;;4139:30;-1:-1:-1;;;;;;;;;;;690:16205:120;4139:30;690:16205;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;;6005:22;-1:-1:-1;;;;;;;;;;;690:16205:120;6005:22;690:16205;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;690:16205:120;;;;6878:28;6810:13;6878:28;;6805:129;6825:23;;;;;;690:16205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:16205:120;;;;;;;;;6878:28;690:16205;;;6850:3;6907:15;;;6878:28;6907:15;;;;:::i;:::-;;:::i;:::-;690:16205;;;;;;-1:-1:-1;690:16205:120;;;;;-1:-1:-1;690:16205:120;;6869:54;;;;:::i;:::-;577:4:122;690:16205:120;6810:13;;690:16205;;;;;;;-1:-1:-1;;690:16205:120;;;;;;:::i;:::-;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;;4301:16:25;690:16205:120;-1:-1:-1;;;;;690:16205:120;;4726:16:25;;:34;;;;690:16205:120;;4790:16:25;:50;;;;690:16205:120;4855:13:25;:30;;;;690:16205:120;4851:91:25;;;-1:-1:-1;;690:16205:120;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;6961:1:25;;690:16205:120;;4979:67:25;;690:16205:120;6893:76:25;;;:::i;:::-;;;:::i;6961:1::-;1512:15:120;:19;690:16205;;1594:21;;690:16205;;1678:32;;;690:16205;;;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;690:16205:120;16763:27;;-1:-1:-1;;690:16205:120;;;;;;;;2293:85;690:16205;;;;2310:37;690:16205;;;;;16744:52;690:16205;;16744:52;690:16205;16744:52;;690:16205;;;;16744:52;;;;:::i;:::-;690:16205;;;;16734:63;;:89;690:16205;;-1:-1:-1;;;;;;;;;;;690:16205:120;1896:17;;;:::i;:::-;690:16205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1946:53;;690:16205;;;1946:53;690:16205;;1923:20;;690:16205;;-1:-1:-1;;;;;;690:16205:120;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2009:25;;;690:16205;;-1:-1:-1;;690:16205:120;;;;;;;:::i;:::-;;674:18:122;690:16205:120;;;;;;:::i;:::-;447:13:122;690:16205:120;;4128:60:122;690:16205:120;2107:22;;;690:16205;;-1:-1:-1;;;;;;690:16205:120;;;;;;;;;;;;;;:::i;:::-;577:4:122;;;2194:47:120;577:4:122;2175:16:120;;;690:16205;577:4:122;;;690:16205:120;1512:15;690:16205;;;;:::i;:::-;2310:37;;2293:85;:::i;:::-;5066:101:25;;690:16205:120;;;5066:101:25;690:16205:120;5142:14:25;690:16205:120;-1:-1:-1;;;690:16205:120;-1:-1:-1;;;;;;;;;;;690:16205:120;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;5142:14:25;690:16205:120;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;4979:67:25;-1:-1:-1;;690:16205:120;;;-1:-1:-1;;;;;;;;;;;690:16205:120;4979:67:25;;;4851:91;-1:-1:-1;;;4908:23:25;;690:16205:120;6498:23:25;4908;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;690:16205:120;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;690:16205:120;9344:29;690:16205;9344:29;;;690:16205;;;;9326:15;:47;:15;;:47;:::i;:::-;9377:16;;;;690:16205;9325:72;690:16205;;;;;;;9416:19;690:16205;9416:19;;690:16205;;9344:29;690:16205;;;;;;;9416:42;;690:16205;;9571:42;;;;:::i;:::-;690:16205;;;;;;;9650:40;9665:25;;;690:16205;9650:40;;:::i;:::-;9326:15;9631:59;690:16205;;9818:34;;;:::i;:::-;9326:15;;9870:28;;;690:16205;9870:46;690:16205;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3015:60:122;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;3015:60:122;690:16205:120;10079:88;690:16205;;;;;;3015:60:122;;;;;;;:::i;:::-;690:16205:120;3005:71:122;;690:16205:120;;;10121:32;;690:16205;;;;10121:32;;;690:16205;10121:32;;:::i;:::-;690:16205;10111:43;;10079:88;;:::i;:::-;690:16205;;;10254:66;10284:21;10336:40;10284:21;690:16205;10284:21;;690:16205;10284:21;;:::i;:::-;690:16205;;;:::i;:::-;10254:66;;:::i;:::-;690:16205;;;;;10336:40;690:16205;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;9344:29;690:16205;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;7039:36;-1:-1:-1;;;;;;;;;;;690:16205:120;7039:36;690:16205;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;:::i;:::-;6529:31;-1:-1:-1;;;;;;;;;;;690:16205:120;6529:31;:43;690:16205;;;;;;-1:-1:-1;690:16205:120;;;;;-1:-1:-1;690:16205:120;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;7590:26;;;690:16205;;7580:37;7636:25;;;690:16205;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;4491:35;;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5877:25;-1:-1:-1;;;;;;;;;;;690:16205:120;5877:25;-1:-1:-1;;;;;690:16205:120;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;690:16205:120;;;;6356:19;6291:13;6356:19;;6286:120;6306:20;;;;;;690:16205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;6328:3;6382:12;;;;;:::i;:::-;690:16205;;;;;;;;;;;;6347:48;;;;:::i;:::-;690:16205;;;;;;;;;6291:13;;690:16205;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;690:16205:120;;-1:-1:-1;;;;;;690:16205:120;;;;;;;-1:-1:-1;;;;;690:16205:120;3975:40:24;690:16205:120;;3975:40:24;690:16205:120;;;;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;6431:44:25;;;;690:16205:120;6427:105:25;;690:16205:120;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;690:16205:120;16763:27;;-1:-1:-1;;690:16205:120;;;;;;;;;;6656:20:25;690:16205:120;;;16744:52;;;;690:16205;;;16744:52;;;;;;;:::i;:::-;690:16205;;;;16734:63;;:89;690:16205;;-1:-1:-1;;;;;;;;;;;690:16205:120;2673:17;;:::i;:::-;690:16205;;;;6593:4:25;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;2842:23;;690:16205;2816:23;;690:16205;;;;;;;3012:28;;690:16205;3012:28;;;690:16205;;3012:28;2942;;690:16205;;;;;;;;;3350:140;6593:4:25;3422:36:120;;;:::i;:::-;:41;690:16205;3465:15;690:16205;;:::i;:::-;3380:40;;;3350:140;:::i;:::-;3587:25;;;;3559;;690:16205;;;;;;;3692:19;;;;;;3670;;690:16205;;;;;;;;;;;-1:-1:-1;;;690:16205:120;-1:-1:-1;;;;;;;;;;;690:16205:120;;-1:-1:-1;;;;;;;;;;;690:16205:120;;2446:1;690:16205;;6656:20:25;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;-1:-1:-1;;;;;690:16205:120;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;-1:-1:-1;;;;;;;690:16205:120;;;;;;;-1:-1:-1;;;;;;;690:16205:120;;;;;;;;;;;;;-1:-1:-1;;;;;;690:16205:120;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;-1:-1:-1;;;690:16205:120;;;;;;;;6427:105:25;-1:-1:-1;;;6498:23:25;;690:16205:120;6498:23:25;;6431:44;690:16205:120;2446:1;-1:-1:-1;;;;;690:16205:120;;6450:25:25;;6431:44;;690:16205:120;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;4373:35;;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;8535:30;690:16205;;;:::i;:::-;-1:-1:-1;;;;;690:16205:120;;8535:30;:::i;:::-;690:16205;8576:50;;;;;690:16205;;;;;;8576:50;;8603:10;690:16205;8576:50;;690:16205;;;;;;;8576:50;;;;;;;;;;;;690:16205;8576:50;;;690:16205;;;;;;;;8576:50;690:16205;8576:50;;;:::i;:::-;690:16205;8576:50;;;690:16205;;;;;;;;;8576:50;690:16205;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;690:16205:120;;7308:23;690:16205;;-1:-1:-1;;;;;;690:16205:120;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;;;;;;;;;;;;:::i;:::-;7879:16;;;;;:36;;;690:16205;;;;8133:19;-1:-1:-1;;;;;;;;;;;690:16205:120;7994:107;690:16205;;8002:38;;7994:107;:::i;:::-;8133:19;690:16205;;;;;;;;;;;;;;;;;;;;;8368:45;690:16205;;;;;;;;;;;8318:34;690:16205;;;;;;;;;;;;;;;;;8368:45;690:16205;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;7879:36;7899:11;690:16205;7899:11;:16;;7879:36;;690:16205;;;;;;-1:-1:-1;;690:16205:120;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;:::i;:::-;3321:69:57;;637:66:54;3321:69:57;1413:93:54;;1624:4;637:66;3550:68:57;-1:-1:-1;;;;;;;;;;;690:16205:120;;11930:107;690:16205;;11938:38;;11930:107;:::i;:::-;690:16205;;12094:262;12144:3;12114:28;;;;;;690:16205;;;;;;;;;;;;;;;;;;;13911:27;;;;690:16205;;13947:39;;690:16205;13911:75;690:16205;;14068:58;690:16205;14092:33;;690:16205;14068:58;:::i;:::-;690:16205;;;14386:26;;;;;;;690:16205;14386:26;;;;;:::i;:::-;690:16205;;;;;;;:::i;:::-;;;577:4:122;;690:16205:120;14339:74;;;;690:16205;;;13911:27;;;690:16205;;;;;;;;;;;;;14483:28;;;;;;:::i;:::-;14994:30;;;690:16205;15040:13;690:16205;15035:592;15080:3;15055:23;;;;;;690:16205;;;;;;;;;;;;;;;;;;;15226:18;;;;:::i;:::-;-1:-1:-1;;;;;690:16205:120;;;;;15197:28;;;690:16205;;;;;;15197:53;690:16205;;15343:32;;;690:16205;;;-1:-1:-1;;;;;690:16205:120;;15386:18;690:16205;15386:18;:::i;:::-;15406:25;;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;-1:-1:-1;;;15330:102:120;;-1:-1:-1;;;;;690:16205:120;;;;15330:102;;690:16205;;;;;;;;;;15330:102;;690:16205;;;;15330:102;;;;;;;;15080:3;-1:-1:-1;;;;;;15480:18:120;690:16205;15480:18;:::i;:::-;690:16205;;-1:-1:-1;;;15472:62:120;;690:16205;;15472:62;;690:16205;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;-1:-1:-1;;;;;690:16205:120;;;:::i;:::-;;;;;;;;;;15330:102;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;690:16205:120;;14483:28;690:16205;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;;;;15472:62;;;;;;;;;690:16205;15472:62;690:16205;15472:62;;;;;;;;;;690:16205;15472:62;;;690:16205;15569:47;;;1624:4:54;15569:47:120;;:::i;:::-;15080:3;15040:13;;;;;;;690:16205;;15040:13;;;;15472:62;;;690:16205;15472:62;;;;;;;;;690:16205;15472:62;;;:::i;:::-;;;690:16205;;;;;1624:4:54;15472:62:120;;;;;-1:-1:-1;15472:62:120;;690:16205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;14483:28;690:16205;;;:::i;:::-;;;;;;;;;;14483:28;690:16205;;;;;;;;;;;;;;;;;;;;;1624:4:54;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:4:54;690:16205:120;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;:::i;:::-;;;;;;;;;;;;;;15330:102;690:16205;15330:102;;;;;;;;;690:16205;15330:102;;;:::i;:::-;;;690:16205;;;;;;;;;;15330:102;690:16205;;;;15330:102;;;-1:-1:-1;15330:102:120;;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;15330:102;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;15055:23;;;;;;;;;1624:4:54;15055:23:120;;;;12270:75;15055:23;690:16205;;;;;15644:28;690:16205;14528:37;690:16205;;;;;;;14528:37;14656:26;690:16205;14386:26;;14656;:::i;:::-;690:16205;;;;3357:98:122;690:16205:120;3357:98:122;;690:16205:120;;;;;;;;;;;;;;;;;13947:39;;690:16205;;;;;14092:33;690:16205;;;;;;;;;;3357:98:122;;;;;;:::i;12270:75:120:-;12099:13;;690:16205;;12099:13;;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;15330:102;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;15330:102;690:16205;;;-1:-1:-1;;;690:16205:120;;;;;;;12114:28;12387:79;12114:28;;;12366:156;12114:28;690:16205;;;;;12419:33;12387:79;;:::i;12366:156::-;690:16205;637:66:54;3550:68:57;690:16205:120;1413:93:54;1465:30;;;690:16205:120;1465:30:54;690:16205:120;;1465:30:54;690:16205:120;;;;;;-1:-1:-1;;690:16205:120;;;;;;7166:42;-1:-1:-1;;;;;;;;;;;690:16205:120;7166:42;690:16205;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;690:16205:120;;;;;;:::o;:::-;;;-1:-1:-1;;;;;690:16205:120;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;:::o;:::-;;;;-1:-1:-1;690:16205:120;;;;;-1:-1:-1;690:16205:120;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:16205:120;;-1:-1:-1;690:16205:120;;-1:-1:-1;690:16205:120;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;-1:-1:-1;690:16205:120;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;690:16205:120;;;;;;;:::o;:::-;;-1:-1:-1;;;;;690:16205:120;;;;;;;:::o;4539:375::-;4676:36;-1:-1:-1;;;;;;;;;;;690:16205:120;4676:36;:::i;:::-;4728:13;690:16205;4743:22;;;;;;4896:11;;;;690:16205;4539:375;:::o;4767:3::-;4814:14;;;;;;:::i;:::-;-1:-1:-1;;;;;690:16205:120;-1:-1:-1;690:16205:120;;;;;;;;;;;;;4790:39;4786:90;;690:16205;;4728:13;;4786:90;4849:12;;;;690:16205;4849:12;:::o;690:16205::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;690:16205:120;;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;690:16205:120;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;690:16205:120;;-1:-1:-1;;;;;;690:16205:120;;;;;;;-1:-1:-1;;;;;690:16205:120;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;690:16205:120;;3509:1:24;3534:31;690:16205:120;;;;;;;;;;:::o;5229:897:122:-;;;;5508:97;5437:28;;;:::i;:::-;5528:15;690:16205:120;5552:25:122;5528:15;;;690:16205:120;5552:25:122;;690:16205:120;;5508:97:122;;:::i;:::-;690:16205:120;;;5680:27:122;;;;690:16205:120;;;5680:27:122;;;;690:16205:120;5680:27:122;;:::i;:::-;2831:45:59;690:16205:120;;;2831:45:59;;5680:27:122;2831:45:59;;690:16205:120;;;;;;5642:4:122;690:16205:120;;;;;;;;;;;;;;;;;;;;2831:45:59;;690:16205:120;;2831:45:59;;;;;;:::i;:::-;690:16205:120;2821:56:59;;690:16205:120;5761:13:122;690:16205:120;5800:3:122;5776:22;;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;5680:27:122;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;690:16205:120;5680:27:122;690:16205:120;;;:::i;:::-;;;;5680:27:122;690:16205:120;;;;;;;;;5680:27:122;690:16205:120;3927:8:58;690:16205:120;3871:27:58;690:16205:120;;;;;;;;;3871:27:58;;:::i;:::-;3927:8;;;;;:::i;:::-;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;5936:151:122;;5800:3;5528:15;690:16205:120;5761:13:122;;5936:151;5989:17;;;;:::i;:::-;:30;;;;5936:151;5985:88;6043:11;;;;;;;5528:15;6043:11;:::o;5776:22::-;;;;;;;;690:16205:120;5229:897:122;:::o;2658:162:24:-;-1:-1:-1;;;;;;;;;;;690:16205:120;-1:-1:-1;;;;;690:16205:120;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;690:16205:120;;-1:-1:-1;2763:40:24;12571:887:120;-1:-1:-1;;;;;;;;;;;690:16205:120;;12707:107;690:16205;;12715:38;;12707:107;:::i;:::-;690:16205;-1:-1:-1;690:16205:120;12846:19;;;690:16205;;;;-1:-1:-1;690:16205:120;;;;;;;;;12884:24;12846:62;690:16205;;2908:43:37;13343:33:120;690:16205;;;;;;13197:32;;;690:16205;;;;;;13241:32;;690:16205;;;;;;;;;13241:32;;;;;;:::i;:::-;690:16205;13231:43;;2908::37;;:::i;:::-;13286:37:120;690:16205;;;;;;;-1:-1:-1;690:16205:120;13286:28;;;690:16205;;;;-1:-1:-1;690:16205:120;;13343:33;:35;690:16205;;13343:35;:::i;:::-;690:16205;;;;-1:-1:-1;;;;;690:16205:120;;;;13394:32;;690:16205;;13394:32;12571:887;:::o;690:16205::-;;;-1:-1:-1;;;690:16205:120;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;4584:169:122;-1:-1:-1;690:16205:120;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;577:4:122;;690:16205:120;4707:12:122;690:16205:120;;4671:75:122;;690:16205:120;;4729:15:122;690:16205:120;;4671:75:122;;690:16205:120;4584:169:122;:::o;6132:318::-;6251:47;;;:::i;:::-;;;;6321:37;;6314:44;:::o;6247:197::-;6396:37;;6389:44;:::o;15685:618:120:-;;15873:1;15905:3;690:16205;15880:16;;690:16205;;;15876:27;;;;;15873:1;690:16205;;;;;;;;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;-1:-1:-1;;690:16205:120;;;;;15861:13;;15876:27;;;15873:1;16080:3;690:16205;;16053:25;;;;;690:16205;;-1:-1:-1;;;;;16120:17:120;690:16205;16120:17;;:::i;:::-;690:16205;;;;;;;;-1:-1:-1;690:16205:120;;;;;-1:-1:-1;690:16205:120;;;;;;;;;;;16038:13;;16053:25;;690:16205;16205:16;;690:16205;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;;;;16033:163;690:16205;;;;15873:1;690:16205;;15873:1;690:16205;15873:1;690:16205;;;;;;16248:28;;;;;;690:16205;15685:618::o;690:16205::-;;;-1:-1:-1;;;;;690:16205:120;;;;;;;;;;;;;;;;15873:1;690:16205;;;15873:1;690:16205;;;;;;;;;;;;;;;;15873:1;690:16205;;;;;;6456:319:122;6576:47;;;:::i;:::-;;;;6646:37;;6639:44;:::o;6572:197::-;6721:37;;6714:44;:::o;7908:285::-;690:16205:120;8123:47:122;7908:285;690:16205:120;8123:47:122;;:::i;:::-;8173:4;690:16205:120;;;;;;;8181:5:122;690:16205:120;;7908:285:122;:::o;3478:340::-;;690:16205:120;;3576:12:122;690:16205:120;3576:12:122;690:16205:120;;;;3559:230:122;3594:5;;;3559:230;-1:-1:-1;690:16205:120;;-1:-1:-1;3478:340:122:o;3601:3::-;3634:12;;3664:11;;;;;-1:-1:-1;3591:1:122;;-1:-1:-1;;3695:11:122:o;3660:119::-;3731:8;3727:52;;690:16205:120;;;;-1:-1:-1;;690:16205:120;;3564:28:122;;3727:52;3759:5;;690:16205:120;;;-1:-1:-1;;;;;690:16205:120;;;;;;:::o;6998:904:122:-;7248:54;7170;;;690:16205:120;7248:54:122;;690:16205:120;7376:10:122;;;690:16205:120;;7452:9:122;;;7131:15;;-1:-1:-1;7484:9:122;;;7131:15;;-1:-1:-1;7516:9:122;7628:14;;;;;6998:904;690:16205:120;;;7865:30:122;;;7858:37;;6998:904;:::o;7865:30::-;7880:14;;6998:904;-1:-1:-1;6998:904:122:o;690:16205:120:-;;;-1:-1:-1;;;690:16205:120;;;7248:37:122;690:16205:120;;;;;;;;;;;;;-1:-1:-1;;;690:16205:120;;;;;;;7628:14:122;;;;;690:16205:120;;;;;;;;;;7248:37:122;690:16205:120;;;;;;;;;;;;;;7084:141:25;690:16205:120;-1:-1:-1;;;;;;;;;;;690:16205:120;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;2129:778:58;690:16205:120;;;2129:778:58;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:58;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;7280:532::-;690:16205:120;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;690:16205:120;7462:38:58;;690:16205:120;;7523:23:58;;;7375:20;7523:23;690:16205:120;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;690:16205:120;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;690:16205:120;;;7375:20:58;7763:32;3384:974:37;3673:585;3384:974;3673:585;;;;;;;-1:-1:-1;3673:585:37;;;;;;;;-1:-1:-1;3673:585:37;690:16205:120;-1:-1:-1;;;;;690:16205:120;;4271:22:37;4267:85;;3384:974::o;4267:85::-;4316:25;;;-1:-1:-1;4316:25:37;;-1:-1:-1;4316:25:37;5203:1551:58;;;6283:66;6270:79;;6266:164;;690:16205:120;;;;;;-1:-1:-1;690:16205:120;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;690:16205:120;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"01b1d156","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","commitValidators((address[],uint256),bytes[])":"aaf0fe6a","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32)":"527de0f9","createProgramWithDecoder(address,bytes32,bytes32)":"e7006a74","genesisBlockHash()":"28e24b3d","genesisTimestamp()":"cacf66ab","initialize(address,address,address,address,uint256,uint256,address[])":"b1669a33","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTimestamp\",\"type\":\"uint256\"}],\"name\":\"NextEraValidatorsCommitted\",\"type\":\"event\"},{\"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\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_eraDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_electionDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"NextEraValidatorsCommitted(uint256)\":{\"details\":\"This is an *informational* and *request* event, signaling that validators has been set for the next era.\",\"params\":{\"startTimestamp\":\"timestamp when the new era starts.\"}},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"}},\"kind\":\"dev\",\"methods\":{\"commitValidators((address[],uint256),bytes[])\":{\"details\":\"Set validators for the next era.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"NextEraValidatorsCommitted(uint256)\":{\"notice\":\"Emitted when validators for the next era has been set.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79\",\"dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889\",\"dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d\",\"dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b\",\"dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0xeb1eb08e258df76bce34b94392f4276b38849b8c94f9627081c6ae0a17371c11\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc92bef1184e6377a33bfba7faa9bdca8187ecfe3cbf07024f46f8a171e47739\",\"dweb:/ipfs/QmRqups2TbDu2Gm7CKyPvAAEqsgKGWPekpA4giHKaG3PXp\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831\",\"dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"startTimestamp","type":"uint256","indexed":false}],"type":"event","name":"NextEraValidatorsCommitted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct Gear.CodeCommitment[]","name":"_codeCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"struct Gear.ValidatorsCommitment","name":"commitment","type":"tuple","components":[{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"eraIndex","type":"uint256"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"uint256","name":"_eraDuration","type":"uint256"},{"internalType":"uint256","name":"_electionDuration","type":"uint256"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"commitValidators((address[],uint256),bytes[])":{"details":"Set validators for the next era."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b","urls":["bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79","dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1","urls":["bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889","dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac","urls":["bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d","dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x5f6e8be4d5738e41071deb350bd50279df85b4df544d6abe87faaf5ef6a399cf","urls":["bzz-raw://3c8df2e9d20982b1f25e3be114acc735e597ef1cecd8b9f4528080ca982e618b","dweb:/ipfs/QmRZQrTE6o5y5KWdRzE4Usyf3tdFjqs1CGu8kad2PFWEFW"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0xeb1eb08e258df76bce34b94392f4276b38849b8c94f9627081c6ae0a17371c11","urls":["bzz-raw://dc92bef1184e6377a33bfba7faa9bdca8187ecfe3cbf07024f46f8a171e47739","dweb:/ipfs/QmRqups2TbDu2Gm7CKyPvAAEqsgKGWPekpA4giHKaG3PXp"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de","urls":["bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831","dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":69366,"exportedSymbols":{"Clones":[42512],"Gear":[70080],"IMirror":[65178],"IMirrorDecoder":[65215],"IRouter":[65486],"IWrappedVara":[65497],"OwnableUpgradeable":[40332],"ReentrancyGuardTransient":[44307],"Router":[69365],"StorageSlot":[44431]},"nodeType":"SourceUnit","src":"39:16857:120","nodes":[{"id":67813,"nodeType":"PragmaDirective","src":"39:24:120","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67815,"nodeType":"ImportDirective","src":"65:64:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67814,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"73:6:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67817,"nodeType":"ImportDirective","src":"130:42:120","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":70081,"symbolAliases":[{"foreign":{"id":67816,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"138:4:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67819,"nodeType":"ImportDirective","src":"173:38:120","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":65179,"symbolAliases":[{"foreign":{"id":67818,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"181:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67821,"nodeType":"ImportDirective","src":"212:52:120","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":65216,"symbolAliases":[{"foreign":{"id":67820,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"220:14:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67823,"nodeType":"ImportDirective","src":"265:38:120","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":65487,"symbolAliases":[{"foreign":{"id":67822,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"273:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67825,"nodeType":"ImportDirective","src":"304:48:120","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":65498,"symbolAliases":[{"foreign":{"id":67824,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"312:12:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67827,"nodeType":"ImportDirective","src":"353:101:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":67826,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"361:18:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67829,"nodeType":"ImportDirective","src":"455:100:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":44308,"symbolAliases":[{"foreign":{"id":67828,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"463:24:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67831,"nodeType":"ImportDirective","src":"556:74:120","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":69366,"sourceUnit":44432,"symbolAliases":[{"foreign":{"id":67830,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"564:11:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69365,"nodeType":"ContractDefinition","src":"690:16205:120","nodes":[{"id":67840,"nodeType":"VariableDeclaration","src":"871:106:120","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"896:12:120","scope":69365,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67838,"name":"bytes32","nodeType":"ElementaryTypeName","src":"871:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":67839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"911:66:120","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":67848,"nodeType":"FunctionDefinition","src":"1037:53:120","nodes":[],"body":{"id":67847,"nodeType":"Block","src":"1051:39:120","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67844,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1061:20:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1061:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67846,"nodeType":"ExpressionStatement","src":"1061:22:120"}]},"documentation":{"id":67841,"nodeType":"StructuredDocumentation","src":"984:48:120","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67842,"nodeType":"ParameterList","parameters":[],"src":"1048:2:120"},"returnParameters":{"id":67843,"nodeType":"ParameterList","parameters":[],"src":"1051:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67960,"nodeType":"FunctionDefinition","src":"1096:1289:120","nodes":[],"body":{"id":67959,"nodeType":"Block","src":"1355:1030:120","nodes":[],"statements":[{"expression":{"arguments":[{"id":67869,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67850,"src":"1380:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67868,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1365:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1365:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67871,"nodeType":"ExpressionStatement","src":"1365:22:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67873,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1512:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":67874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1518:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"1512:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1530:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1512:19:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63757272656e742074696d657374616d70206d7573742062652067726561746572207468616e2030","id":67877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1533:42:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_010a1bc0b39cf96528374edb07c79052766d9dbc6322e9b022f045d426584476","typeString":"literal_string \"current timestamp must be greater than 0\""},"value":"current timestamp must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_010a1bc0b39cf96528374edb07c79052766d9dbc6322e9b022f045d426584476","typeString":"literal_string \"current timestamp must be greater than 0\""}],"id":67872,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1504:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1504:72:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67879,"nodeType":"ExpressionStatement","src":"1504:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67881,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67860,"src":"1594:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1614:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1594:21:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206475726174696f6e206d7573742062652067726561746572207468616e2030","id":67884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1617:42:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_22f70577ade1b9c6246323ca38a4066fa51456aa417f5a924af9df8299c24ade","typeString":"literal_string \"election duration must be greater than 0\""},"value":"election duration must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22f70577ade1b9c6246323ca38a4066fa51456aa417f5a924af9df8299c24ade","typeString":"literal_string \"election duration must be greater than 0\""}],"id":67880,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1586:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1586:74:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67886,"nodeType":"ExpressionStatement","src":"1586:74:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67888,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67858,"src":"1678:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":67889,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67860,"src":"1693:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1678:32:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"657261206475726174696f6e206d7573742062652067726561746572207468616e20656c656374696f6e206475726174696f6e","id":67891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1712:53:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_07fe5d445d3047744132d2b933786d7532224c888580fad1eb3bf2fab68d889a","typeString":"literal_string \"era duration must be greater than election duration\""},"value":"era duration must be greater than election duration"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07fe5d445d3047744132d2b933786d7532224c888580fad1eb3bf2fab68d889a","typeString":"literal_string \"era duration must be greater than election duration\""}],"id":67887,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1670:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1670:96:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67893,"nodeType":"ExpressionStatement","src":"1670:96:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":67895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1793:25:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":67894,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69364,"src":"1777:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1777:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67897,"nodeType":"ExpressionStatement","src":"1777:42:120"},{"assignments":[67900],"declarations":[{"constant":false,"id":67900,"mutability":"mutable","name":"router","nameLocation":"1845:6:120","nodeType":"VariableDeclaration","scope":67959,"src":"1829:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67899,"nodeType":"UserDefinedTypeName","pathNode":{"id":67898,"name":"Storage","nameLocations":["1829:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"1829:7:120"},"referencedDeclaration":65258,"src":"1829:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67903,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67901,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"1854:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1854:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1829:34:120"},{"expression":{"id":67910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67904,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"1874:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1881:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"1874:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67907,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"1896:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69800,"src":"1896:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69557_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1896:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1874:39:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67911,"nodeType":"ExpressionStatement","src":"1874:39:120"},{"expression":{"id":67921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67912,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"1923:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1930:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"1923:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67917,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67852,"src":"1963:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67918,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67854,"src":"1972:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67919,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67856,"src":"1986:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":67915,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"1946:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1951:11:120","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":69512,"src":"1946:16:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$69512_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":67920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1946:53:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1923:76:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67922,"nodeType":"ExpressionStatement","src":"1923:76:120"},{"expression":{"id":67930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":67923,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"2009:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2016:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"2009:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2035:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"2009:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67928,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"2064:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2069:28:120","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":69492,"src":"2064:33:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2009:88:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":67931,"nodeType":"ExpressionStatement","src":"2009:88:120"},{"expression":{"id":67938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67932,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"2107:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2114:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"2107:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67935,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"2132:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2137:26:120","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":69747,"src":"2132:31:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$69550_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":67937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2132:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"2107:58:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":67939,"nodeType":"ExpressionStatement","src":"2107:58:120"},{"expression":{"id":67948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"2175:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2182:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"2175:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67945,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67858,"src":"2209:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":67946,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67860,"src":"2223:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":67943,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"2194:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2199:9:120","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"2194:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$69610_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":67947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2194:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"2175:66:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"id":67949,"nodeType":"ExpressionStatement","src":"2175:66:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":67951,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67900,"src":"2310:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2317:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"2310:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2336:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69615,"src":"2310:37:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage","typeString":"struct Gear.Validators storage ref"}},{"id":67954,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67863,"src":"2349:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":67955,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2362:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":67956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2368:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"2362:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69505_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":67950,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"src":"2293:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69505_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":67957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2293:85:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67958,"nodeType":"ExpressionStatement","src":"2293:85:120"}]},"functionSelector":"b1669a33","implemented":true,"kind":"function","modifiers":[{"id":67866,"kind":"modifierInvocation","modifierName":{"id":67865,"name":"initializer","nameLocations":["1343:11:120"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1343:11:120"},"nodeType":"ModifierInvocation","src":"1343:11:120"}],"name":"initialize","nameLocation":"1105:10:120","parameters":{"id":67864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67850,"mutability":"mutable","name":"_owner","nameLocation":"1133:6:120","nodeType":"VariableDeclaration","scope":67960,"src":"1125:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67849,"name":"address","nodeType":"ElementaryTypeName","src":"1125:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67852,"mutability":"mutable","name":"_mirror","nameLocation":"1157:7:120","nodeType":"VariableDeclaration","scope":67960,"src":"1149:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67851,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67854,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1182:12:120","nodeType":"VariableDeclaration","scope":67960,"src":"1174:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67853,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67856,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1212:12:120","nodeType":"VariableDeclaration","scope":67960,"src":"1204:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67855,"name":"address","nodeType":"ElementaryTypeName","src":"1204:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67858,"mutability":"mutable","name":"_eraDuration","nameLocation":"1242:12:120","nodeType":"VariableDeclaration","scope":67960,"src":"1234:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67860,"mutability":"mutable","name":"_electionDuration","nameLocation":"1272:17:120","nodeType":"VariableDeclaration","scope":67960,"src":"1264:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67859,"name":"uint256","nodeType":"ElementaryTypeName","src":"1264:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67863,"mutability":"mutable","name":"_validators","nameLocation":"1318:11:120","nodeType":"VariableDeclaration","scope":67960,"src":"1299:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":67861,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67862,"nodeType":"ArrayTypeName","src":"1299:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1115:220:120"},"returnParameters":{"id":67867,"nodeType":"ParameterList","parameters":[],"src":"1355:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68037,"nodeType":"FunctionDefinition","src":"2391:1409:120","nodes":[],"body":{"id":68036,"nodeType":"Block","src":"2449:1351:120","nodes":[],"statements":[{"assignments":[67970],"declarations":[{"constant":false,"id":67970,"mutability":"mutable","name":"oldRouter","nameLocation":"2475:9:120","nodeType":"VariableDeclaration","scope":68036,"src":"2459:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67969,"nodeType":"UserDefinedTypeName","pathNode":{"id":67968,"name":"Storage","nameLocations":["2459:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"2459:7:120"},"referencedDeclaration":65258,"src":"2459:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67973,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67971,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"2487:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2487:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2459:37:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":67975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2523:25:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""},"value":"router.storage.RouterV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""}],"id":67974,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69364,"src":"2507:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2507:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67977,"nodeType":"ExpressionStatement","src":"2507:42:120"},{"assignments":[67980],"declarations":[{"constant":false,"id":67980,"mutability":"mutable","name":"newRouter","nameLocation":"2575:9:120","nodeType":"VariableDeclaration","scope":68036,"src":"2559:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67979,"nodeType":"UserDefinedTypeName","pathNode":{"id":67978,"name":"Storage","nameLocations":["2559:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"2559:7:120"},"referencedDeclaration":65258,"src":"2559:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67983,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67981,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"2587:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2587:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2559:37:120"},{"expression":{"id":67990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67984,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"2648:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2658:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"2648:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67987,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"2673:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":67988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2678:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69800,"src":"2673:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69557_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2673:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2648:42:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67991,"nodeType":"ExpressionStatement","src":"2648:42:120"},{"expression":{"id":67997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67992,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"2816:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2826:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"2816:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67995,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67970,"src":"2842:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2852:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"2842:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"2816:49:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67998,"nodeType":"ExpressionStatement","src":"2816:49:120"},{"expression":{"id":68007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":67999,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"2942:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2952:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"2942:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2971:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"2942:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68004,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67970,"src":"3012:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3022:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"3012:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3041:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"3012:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2942:125:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68008,"nodeType":"ExpressionStatement","src":"2942:125:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":68010,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"3380:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3390:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"3380:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3409:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69615,"src":"3380:40:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage","typeString":"struct Gear.Validators storage ref"}},{"expression":{"arguments":[{"id":68015,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67970,"src":"3448:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68013,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"3422:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3427:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"3422:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3422:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3459:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"3422:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":68018,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3465:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3471:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"3465:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69505_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68009,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"src":"3350:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69505_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3350:140:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68021,"nodeType":"ExpressionStatement","src":"3350:140:120"},{"expression":{"id":68027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68022,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"3559:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3569:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"3559:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68025,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67970,"src":"3587:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3597:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"3587:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"3559:53:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68028,"nodeType":"ExpressionStatement","src":"3559:53:120"},{"expression":{"id":68034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68029,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67980,"src":"3670:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3680:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"3670:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68032,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67970,"src":"3692:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3702:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"3692:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"src":"3670:41:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68035,"nodeType":"ExpressionStatement","src":"3670:41:120"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":67963,"kind":"modifierInvocation","modifierName":{"id":67962,"name":"onlyOwner","nameLocations":["2422:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"2422:9:120"},"nodeType":"ModifierInvocation","src":"2422:9:120"},{"arguments":[{"hexValue":"32","id":67965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:1:120","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":67966,"kind":"modifierInvocation","modifierName":{"id":67964,"name":"reinitializer","nameLocations":["2432:13:120"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"2432:13:120"},"nodeType":"ModifierInvocation","src":"2432:16:120"}],"name":"reinitialize","nameLocation":"2400:12:120","parameters":{"id":67961,"nodeType":"ParameterList","parameters":[],"src":"2412:2:120"},"returnParameters":{"id":67967,"nodeType":"ParameterList","parameters":[],"src":"2449:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68048,"nodeType":"FunctionDefinition","src":"3822:109:120","nodes":[],"body":{"id":68047,"nodeType":"Block","src":"3880:51:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68042,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"3897:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3897:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3907:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"3897:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3920:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"3897:27:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68041,"id":68046,"nodeType":"Return","src":"3890:34:120"}]},"baseFunctions":[65304],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3831:16:120","parameters":{"id":68038,"nodeType":"ParameterList","parameters":[],"src":"3847:2:120"},"returnParameters":{"id":68041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68048,"src":"3871:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3871:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3870:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68059,"nodeType":"FunctionDefinition","src":"3937:113:120","nodes":[],"body":{"id":68058,"nodeType":"Block","src":"3994:56:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68053,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4011:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4011:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4021:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"4011:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4034:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69556,"src":"4011:32:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":68052,"id":68057,"nodeType":"Return","src":"4004:39:120"}]},"baseFunctions":[65309],"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"3946:16:120","parameters":{"id":68049,"nodeType":"ParameterList","parameters":[],"src":"3962:2:120"},"returnParameters":{"id":68052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68059,"src":"3986:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":68050,"name":"uint48","nodeType":"ElementaryTypeName","src":"3986:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3985:8:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68070,"nodeType":"FunctionDefinition","src":"4056:125:120","nodes":[],"body":{"id":68069,"nodeType":"Block","src":"4122:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68064,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4139:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4139:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4149:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"4139:30:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69545_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4170:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69542,"src":"4139:35:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68063,"id":68068,"nodeType":"Return","src":"4132:42:120"}]},"baseFunctions":[65314],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"4065:24:120","parameters":{"id":68060,"nodeType":"ParameterList","parameters":[],"src":"4089:2:120"},"returnParameters":{"id":68063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68070,"src":"4113:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68061,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4113:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4112:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68081,"nodeType":"FunctionDefinition","src":"4187:106:120","nodes":[],"body":{"id":68080,"nodeType":"Block","src":"4239:54:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68075,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4256:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4256:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4266:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"4256:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69507,"src":"4256:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68074,"id":68079,"nodeType":"Return","src":"4249:37:120"}]},"baseFunctions":[65319],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"4196:10:120","parameters":{"id":68071,"nodeType":"ParameterList","parameters":[],"src":"4206:2:120"},"returnParameters":{"id":68074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68081,"src":"4230:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68072,"name":"address","nodeType":"ElementaryTypeName","src":"4230:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4229:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68092,"nodeType":"FunctionDefinition","src":"4299:116:120","nodes":[],"body":{"id":68091,"nodeType":"Block","src":"4356:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68086,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4373:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4373:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4383:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"4373:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4397:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69509,"src":"4373:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68085,"id":68090,"nodeType":"Return","src":"4366:42:120"}]},"baseFunctions":[65324],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"4308:15:120","parameters":{"id":68082,"nodeType":"ParameterList","parameters":[],"src":"4323:2:120"},"returnParameters":{"id":68085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68092,"src":"4347:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68083,"name":"address","nodeType":"ElementaryTypeName","src":"4347:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4346:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68103,"nodeType":"FunctionDefinition","src":"4421:112:120","nodes":[],"body":{"id":68102,"nodeType":"Block","src":"4474:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68097,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4491:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4491:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4501:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"4491:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4515:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69511,"src":"4491:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68096,"id":68101,"nodeType":"Return","src":"4484:42:120"}]},"baseFunctions":[65329],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"4430:11:120","parameters":{"id":68093,"nodeType":"ParameterList","parameters":[],"src":"4441:2:120"},"returnParameters":{"id":68096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68103,"src":"4465:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68094,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4464:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68149,"nodeType":"FunctionDefinition","src":"4539:375:120","nodes":[],"body":{"id":68148,"nodeType":"Block","src":"4621:293:120","nodes":[],"statements":[{"assignments":[68115],"declarations":[{"constant":false,"id":68115,"mutability":"mutable","name":"_currentValidators","nameLocation":"4655:18:120","nodeType":"VariableDeclaration","scope":68148,"src":"4631:42:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68114,"nodeType":"UserDefinedTypeName","pathNode":{"id":68113,"name":"Gear.Validators","nameLocations":["4631:4:120","4636:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69505,"src":"4631:15:120"},"referencedDeclaration":69505,"src":"4631:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68121,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68118,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"4702:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4702:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68116,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"4676:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4681:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"4676:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4631:81:120"},{"body":{"id":68144,"nodeType":"Block","src":"4772:114:120","statements":[{"condition":{"id":68139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4790:39:120","subExpression":{"baseExpression":{"expression":{"id":68133,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68115,"src":"4791:18:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4810:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69499,"src":"4791:22:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68138,"indexExpression":{"baseExpression":{"id":68135,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68106,"src":"4814:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68137,"indexExpression":{"id":68136,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68123,"src":"4826:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4814:14:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4791:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68143,"nodeType":"IfStatement","src":"4786:90:120","trueBody":{"id":68142,"nodeType":"Block","src":"4831:45:120","statements":[{"expression":{"hexValue":"66616c7365","id":68140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4856:5:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":68110,"id":68141,"nodeType":"Return","src":"4849:12:120"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68123,"src":"4743:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68127,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68106,"src":"4747:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4759:6:120","memberName":"length","nodeType":"MemberAccess","src":"4747:18:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4743:22:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68145,"initializationExpression":{"assignments":[68123],"declarations":[{"constant":false,"id":68123,"mutability":"mutable","name":"i","nameLocation":"4736:1:120","nodeType":"VariableDeclaration","scope":68145,"src":"4728:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68122,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68125,"initialValue":{"hexValue":"30","id":68124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4740:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4728:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4767:3:120","subExpression":{"id":68130,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68123,"src":"4767:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68132,"nodeType":"ExpressionStatement","src":"4767:3:120"},"nodeType":"ForStatement","src":"4723:163:120"},{"expression":{"hexValue":"74727565","id":68146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4903:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":68110,"id":68147,"nodeType":"Return","src":"4896:11:120"}]},"baseFunctions":[65337],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"4548:13:120","parameters":{"id":68107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68106,"mutability":"mutable","name":"_validators","nameLocation":"4581:11:120","nodeType":"VariableDeclaration","scope":68149,"src":"4562:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68104,"name":"address","nodeType":"ElementaryTypeName","src":"4562:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68105,"nodeType":"ArrayTypeName","src":"4562:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4561:32:120"},"returnParameters":{"id":68110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68149,"src":"4615:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68108,"name":"bool","nodeType":"ElementaryTypeName","src":"4615:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4614:6:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68166,"nodeType":"FunctionDefinition","src":"4920:144:120","nodes":[],"body":{"id":68165,"nodeType":"Block","src":"4988:76:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68158,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5031:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5031:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68156,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5005:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5010:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"5005:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5005:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5042:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69499,"src":"5005:40:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68163,"indexExpression":{"id":68162,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68151,"src":"5046:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5005:52:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":68155,"id":68164,"nodeType":"Return","src":"4998:59:120"}]},"baseFunctions":[65344],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"4929:11:120","parameters":{"id":68152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68151,"mutability":"mutable","name":"_validator","nameLocation":"4949:10:120","nodeType":"VariableDeclaration","scope":68166,"src":"4941:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68150,"name":"address","nodeType":"ElementaryTypeName","src":"4941:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4940:20:120"},"returnParameters":{"id":68155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68166,"src":"4982:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68153,"name":"bool","nodeType":"ElementaryTypeName","src":"4982:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4981:6:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68177,"nodeType":"FunctionDefinition","src":"5070:146:120","nodes":[],"body":{"id":68176,"nodeType":"Block","src":"5137:79:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68171,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5154:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5154:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5164:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"5154:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5183:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"5154:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":68170,"id":68175,"nodeType":"Return","src":"5147:62:120"}]},"baseFunctions":[65349],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"5079:26:120","parameters":{"id":68167,"nodeType":"ParameterList","parameters":[],"src":"5105:2:120"},"returnParameters":{"id":68170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68177,"src":"5129:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":68168,"name":"uint16","nodeType":"ElementaryTypeName","src":"5129:6:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5128:8:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68191,"nodeType":"FunctionDefinition","src":"5222:126:120","nodes":[],"body":{"id":68190,"nodeType":"Block","src":"5283:65:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68185,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5326:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5326:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68183,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5300:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5305:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"5300:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5300:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5337:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"5300:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":68182,"id":68189,"nodeType":"Return","src":"5293:48:120"}]},"baseFunctions":[65355],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5231:10:120","parameters":{"id":68178,"nodeType":"ParameterList","parameters":[],"src":"5241:2:120"},"returnParameters":{"id":68182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68191,"src":"5265:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68179,"name":"address","nodeType":"ElementaryTypeName","src":"5265:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68180,"nodeType":"ArrayTypeName","src":"5265:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5264:18:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68205,"nodeType":"FunctionDefinition","src":"5354:129:120","nodes":[],"body":{"id":68204,"nodeType":"Block","src":"5411:72:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68198,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5454:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5454:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68196,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5428:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5433:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"5428:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5428:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5465:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"5428:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5470:6:120","memberName":"length","nodeType":"MemberAccess","src":"5428:48:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68195,"id":68203,"nodeType":"Return","src":"5421:55:120"}]},"baseFunctions":[65360],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5363:15:120","parameters":{"id":68192,"nodeType":"ParameterList","parameters":[],"src":"5378:2:120"},"returnParameters":{"id":68195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68205,"src":"5402:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68193,"name":"uint256","nodeType":"ElementaryTypeName","src":"5402:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5401:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68232,"nodeType":"FunctionDefinition","src":"5489:284:120","nodes":[],"body":{"id":68231,"nodeType":"Block","src":"5550:223:120","nodes":[],"statements":[{"assignments":[68214],"declarations":[{"constant":false,"id":68214,"mutability":"mutable","name":"router","nameLocation":"5584:6:120","nodeType":"VariableDeclaration","scope":68231,"src":"5560:30:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68213,"nodeType":"UserDefinedTypeName","pathNode":{"id":68212,"name":"IRouter.Storage","nameLocations":["5560:7:120","5568:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"5560:15:120"},"referencedDeclaration":65258,"src":"5560:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68217,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68215,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5593:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5593:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5560:42:120"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":68222,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68214,"src":"5683:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68220,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5657:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5662:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"5657:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5657:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5691:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"5657:38:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5696:6:120","memberName":"length","nodeType":"MemberAccess","src":"5657:45:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":68226,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68214,"src":"5704:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5711:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65245,"src":"5704:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69619_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5730:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"5704:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":68218,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"5619:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5624:19:120","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":70060,"src":"5619:24:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint256,uint16) pure returns (uint256)"}},"id":68229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5619:147:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68209,"id":68230,"nodeType":"Return","src":"5612:154:120"}]},"baseFunctions":[65365],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"5498:19:120","parameters":{"id":68206,"nodeType":"ParameterList","parameters":[],"src":"5517:2:120"},"returnParameters":{"id":68209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68232,"src":"5541:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5541:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5540:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68243,"nodeType":"FunctionDefinition","src":"5779:130:120","nodes":[],"body":{"id":68242,"nodeType":"Block","src":"5860:49:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68238,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"5877:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5877:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5887:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65249,"src":"5877:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":68237,"id":68241,"nodeType":"Return","src":"5870:32:120"}]},"baseFunctions":[65371],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"5788:15:120","parameters":{"id":68233,"nodeType":"ParameterList","parameters":[],"src":"5803:2:120"},"returnParameters":{"id":68237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68243,"src":"5827:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":68235,"nodeType":"UserDefinedTypeName","pathNode":{"id":68234,"name":"Gear.ComputationSettings","nameLocations":["5827:4:120","5832:19:120"],"nodeType":"IdentifierPath","referencedDeclaration":69550,"src":"5827:24:120"},"referencedDeclaration":69550,"src":"5827:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69550_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"5826:33:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68259,"nodeType":"FunctionDefinition","src":"5915:134:120","nodes":[],"body":{"id":68258,"nodeType":"Block","src":"5988:61:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68251,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"6005:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6005:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6015:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"6005:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6028:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"6005:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68256,"indexExpression":{"id":68255,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68245,"src":"6034:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6005:37:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"functionReturnParameters":68250,"id":68257,"nodeType":"Return","src":"5998:44:120"}]},"baseFunctions":[65379],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"5924:9:120","parameters":{"id":68246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68245,"mutability":"mutable","name":"_codeId","nameLocation":"5942:7:120","nodeType":"VariableDeclaration","scope":68259,"src":"5934:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5934:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:17:120"},"returnParameters":{"id":68250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68259,"src":"5972:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"},"typeName":{"id":68248,"nodeType":"UserDefinedTypeName","pathNode":{"id":68247,"name":"Gear.CodeState","nameLocations":["5972:4:120","5977:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69540,"src":"5972:14:120"},"referencedDeclaration":69540,"src":"5972:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"5971:16:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68317,"nodeType":"FunctionDefinition","src":"6055:378:120","nodes":[],"body":{"id":68316,"nodeType":"Block","src":"6152:281:120","nodes":[],"statements":[{"assignments":[68271],"declarations":[{"constant":false,"id":68271,"mutability":"mutable","name":"router","nameLocation":"6178:6:120","nodeType":"VariableDeclaration","scope":68316,"src":"6162:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68270,"nodeType":"UserDefinedTypeName","pathNode":{"id":68269,"name":"Storage","nameLocations":["6162:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"6162:7:120"},"referencedDeclaration":65258,"src":"6162:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68274,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68272,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"6187:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6187:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6162:34:120"},{"assignments":[68280],"declarations":[{"constant":false,"id":68280,"mutability":"mutable","name":"res","nameLocation":"6231:3:120","nodeType":"VariableDeclaration","scope":68316,"src":"6207:27:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68278,"nodeType":"UserDefinedTypeName","pathNode":{"id":68277,"name":"Gear.CodeState","nameLocations":["6207:4:120","6212:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69540,"src":"6207:14:120"},"referencedDeclaration":69540,"src":"6207:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68279,"nodeType":"ArrayTypeName","src":"6207:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":68288,"initialValue":{"arguments":[{"expression":{"id":68285,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68262,"src":"6258:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6268:6:120","memberName":"length","nodeType":"MemberAccess","src":"6258:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6237:20:120","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":68282,"nodeType":"UserDefinedTypeName","pathNode":{"id":68281,"name":"Gear.CodeState","nameLocations":["6241:4:120","6246:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69540,"src":"6241:14:120"},"referencedDeclaration":69540,"src":"6241:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68283,"nodeType":"ArrayTypeName","src":"6241:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":68287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:38:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6207:68:120"},{"body":{"id":68312,"nodeType":"Block","src":"6333:73:120","statements":[{"expression":{"id":68310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68300,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68280,"src":"6347:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":68302,"indexExpression":{"id":68301,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68290,"src":"6351:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6347:6:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68303,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68271,"src":"6356:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6363:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"6356:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6376:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"6356:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68309,"indexExpression":{"baseExpression":{"id":68306,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68262,"src":"6382:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68308,"indexExpression":{"id":68307,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68290,"src":"6392:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6382:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6356:39:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"6347:48:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68311,"nodeType":"ExpressionStatement","src":"6347:48:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68290,"src":"6306:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68294,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68262,"src":"6310:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:6:120","memberName":"length","nodeType":"MemberAccess","src":"6310:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6306:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68313,"initializationExpression":{"assignments":[68290],"declarations":[{"constant":false,"id":68290,"mutability":"mutable","name":"i","nameLocation":"6299:1:120","nodeType":"VariableDeclaration","scope":68313,"src":"6291:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68289,"name":"uint256","nodeType":"ElementaryTypeName","src":"6291:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68292,"initialValue":{"hexValue":"30","id":68291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6303:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6291:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6328:3:120","subExpression":{"id":68297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68290,"src":"6328:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68299,"nodeType":"ExpressionStatement","src":"6328:3:120"},"nodeType":"ForStatement","src":"6286:120:120"},{"expression":{"id":68314,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68280,"src":"6423:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":68268,"id":68315,"nodeType":"Return","src":"6416:10:120"}]},"baseFunctions":[65389],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"6064:11:120","parameters":{"id":68263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68262,"mutability":"mutable","name":"_codesIds","nameLocation":"6095:9:120","nodeType":"VariableDeclaration","scope":68317,"src":"6076:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6076:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68261,"nodeType":"ArrayTypeName","src":"6076:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6075:30:120"},"returnParameters":{"id":68268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68317,"src":"6127:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68265,"nodeType":"UserDefinedTypeName","pathNode":{"id":68264,"name":"Gear.CodeState","nameLocations":["6127:4:120","6132:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69540,"src":"6127:14:120"},"referencedDeclaration":69540,"src":"6127:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68266,"nodeType":"ArrayTypeName","src":"6127:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69540_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"6126:25:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68332,"nodeType":"FunctionDefinition","src":"6439:140:120","nodes":[],"body":{"id":68331,"nodeType":"Block","src":"6512:67:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68324,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"6529:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6529:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6539:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"6529:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6552:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69578,"src":"6529:31:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68329,"indexExpression":{"id":68328,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68319,"src":"6561:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6529:43:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68323,"id":68330,"nodeType":"Return","src":"6522:50:120"}]},"baseFunctions":[65396],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"6448:13:120","parameters":{"id":68320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68319,"mutability":"mutable","name":"_programId","nameLocation":"6470:10:120","nodeType":"VariableDeclaration","scope":68332,"src":"6462:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68318,"name":"address","nodeType":"ElementaryTypeName","src":"6462:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6461:20:120"},"returnParameters":{"id":68323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68332,"src":"6503:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6503:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6502:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68387,"nodeType":"FunctionDefinition","src":"6585:376:120","nodes":[],"body":{"id":68386,"nodeType":"Block","src":"6682:279:120","nodes":[],"statements":[{"assignments":[68343],"declarations":[{"constant":false,"id":68343,"mutability":"mutable","name":"router","nameLocation":"6708:6:120","nodeType":"VariableDeclaration","scope":68386,"src":"6692:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68342,"nodeType":"UserDefinedTypeName","pathNode":{"id":68341,"name":"Storage","nameLocations":["6692:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"6692:7:120"},"referencedDeclaration":65258,"src":"6692:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68346,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68344,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"6717:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6717:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6692:34:120"},{"assignments":[68351],"declarations":[{"constant":false,"id":68351,"mutability":"mutable","name":"res","nameLocation":"6754:3:120","nodeType":"VariableDeclaration","scope":68386,"src":"6737:20:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6737:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68350,"nodeType":"ArrayTypeName","src":"6737:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":68358,"initialValue":{"arguments":[{"expression":{"id":68355,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68335,"src":"6774:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6787:6:120","memberName":"length","nodeType":"MemberAccess","src":"6774:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6760:13:120","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":68352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6764:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68353,"nodeType":"ArrayTypeName","src":"6764:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":68357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:34:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6737:57:120"},{"body":{"id":68382,"nodeType":"Block","src":"6855:79:120","statements":[{"expression":{"id":68380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68370,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68351,"src":"6869:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":68372,"indexExpression":{"id":68371,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68360,"src":"6873:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6869:6:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68373,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68343,"src":"6878:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6885:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"6878:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6898:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69578,"src":"6878:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68379,"indexExpression":{"baseExpression":{"id":68376,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68335,"src":"6907:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68378,"indexExpression":{"id":68377,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68360,"src":"6920:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6907:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6878:45:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6869:54:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68381,"nodeType":"ExpressionStatement","src":"6869:54:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68360,"src":"6825:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68364,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68335,"src":"6829:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6842:6:120","memberName":"length","nodeType":"MemberAccess","src":"6829:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6825:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68383,"initializationExpression":{"assignments":[68360],"declarations":[{"constant":false,"id":68360,"mutability":"mutable","name":"i","nameLocation":"6818:1:120","nodeType":"VariableDeclaration","scope":68383,"src":"6810:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68359,"name":"uint256","nodeType":"ElementaryTypeName","src":"6810:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68362,"initialValue":{"hexValue":"30","id":68361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6822:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6810:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6850:3:120","subExpression":{"id":68367,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68360,"src":"6850:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68369,"nodeType":"ExpressionStatement","src":"6850:3:120"},"nodeType":"ForStatement","src":"6805:129:120"},{"expression":{"id":68384,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68351,"src":"6951:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":68340,"id":68385,"nodeType":"Return","src":"6944:10:120"}]},"baseFunctions":[65405],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"6594:15:120","parameters":{"id":68336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68335,"mutability":"mutable","name":"_programsIds","nameLocation":"6629:12:120","nodeType":"VariableDeclaration","scope":68387,"src":"6610:31:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68333,"name":"address","nodeType":"ElementaryTypeName","src":"6610:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68334,"nodeType":"ArrayTypeName","src":"6610:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6609:33:120"},"returnParameters":{"id":68340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68387,"src":"6664:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6664:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68338,"nodeType":"ArrayTypeName","src":"6664:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6663:18:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68398,"nodeType":"FunctionDefinition","src":"6967:115:120","nodes":[],"body":{"id":68397,"nodeType":"Block","src":"7022:60:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68392,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"7039:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7039:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7049:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"7039:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7062:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69580,"src":"7039:36:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68391,"id":68396,"nodeType":"Return","src":"7032:43:120"}]},"baseFunctions":[65410],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"6976:13:120","parameters":{"id":68388,"nodeType":"ParameterList","parameters":[],"src":"6989:2:120"},"returnParameters":{"id":68391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68398,"src":"7013:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68389,"name":"uint256","nodeType":"ElementaryTypeName","src":"7013:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7012:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68409,"nodeType":"FunctionDefinition","src":"7088:127:120","nodes":[],"body":{"id":68408,"nodeType":"Block","src":"7149:66:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68403,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"7166:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7166:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7176:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"7166:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7189:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69582,"src":"7166:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68402,"id":68407,"nodeType":"Return","src":"7159:49:120"}]},"baseFunctions":[65415],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"7097:19:120","parameters":{"id":68399,"nodeType":"ParameterList","parameters":[],"src":"7116:2:120"},"returnParameters":{"id":68402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68409,"src":"7140:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68400,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7139:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68424,"nodeType":"FunctionDefinition","src":"7241:116:120","nodes":[],"body":{"id":68423,"nodeType":"Block","src":"7298:59:120","nodes":[],"statements":[{"expression":{"id":68421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68416,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"7308:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7308:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7318:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"7308:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7332:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69507,"src":"7308:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68420,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68411,"src":"7341:9:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7308:42:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68422,"nodeType":"ExpressionStatement","src":"7308:42:120"}]},"baseFunctions":[65420],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":68414,"kind":"modifierInvocation","modifierName":{"id":68413,"name":"onlyOwner","nameLocations":["7288:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"7288:9:120"},"nodeType":"ModifierInvocation","src":"7288:9:120"}],"name":"setMirror","nameLocation":"7250:9:120","parameters":{"id":68412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68411,"mutability":"mutable","name":"newMirror","nameLocation":"7268:9:120","nodeType":"VariableDeclaration","scope":68424,"src":"7260:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68410,"name":"address","nodeType":"ElementaryTypeName","src":"7260:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7259:19:120"},"returnParameters":{"id":68415,"nodeType":"ParameterList","parameters":[],"src":"7298:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68476,"nodeType":"FunctionDefinition","src":"7379:398:120","nodes":[],"body":{"id":68475,"nodeType":"Block","src":"7417:360:120","nodes":[],"statements":[{"assignments":[68429],"declarations":[{"constant":false,"id":68429,"mutability":"mutable","name":"router","nameLocation":"7443:6:120","nodeType":"VariableDeclaration","scope":68475,"src":"7427:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68428,"nodeType":"UserDefinedTypeName","pathNode":{"id":68427,"name":"Storage","nameLocations":["7427:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"7427:7:120"},"referencedDeclaration":65258,"src":"7427:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68432,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68430,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"7452:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7452:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7427:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68434,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68429,"src":"7480:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7487:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"7480:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68436,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7500:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"7480:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":68439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7516:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7508:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7508:7:120","typeDescriptions":{}}},"id":68440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7508:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7480:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":68442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7520:26:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":68433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7472:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7472:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68444,"nodeType":"ExpressionStatement","src":"7472:75:120"},{"assignments":[68446],"declarations":[{"constant":false,"id":68446,"mutability":"mutable","name":"genesisHash","nameLocation":"7566:11:120","nodeType":"VariableDeclaration","scope":68475,"src":"7558:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7558:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68452,"initialValue":{"arguments":[{"expression":{"expression":{"id":68448,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68429,"src":"7590:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7597:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"7590:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7610:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69554,"src":"7590:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68447,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"7580:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7580:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7558:59:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68454,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68446,"src":"7636:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7659:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7651:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7651:7:120","typeDescriptions":{}}},"id":68458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7651:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7636:25:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":68460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7663:31:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":68453,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7628:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7628:67:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68462,"nodeType":"ExpressionStatement","src":"7628:67:120"},{"expression":{"id":68473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68463,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68429,"src":"7706:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7713:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"7706:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7726:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"7706:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":68469,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68429,"src":"7743:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7750:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"7743:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7763:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69554,"src":"7743:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68468,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"7733:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7733:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7706:64:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68474,"nodeType":"ExpressionStatement","src":"7706:64:120"}]},"baseFunctions":[65423],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"7388:17:120","parameters":{"id":68425,"nodeType":"ParameterList","parameters":[],"src":"7405:2:120"},"returnParameters":{"id":68426,"nodeType":"ParameterList","parameters":[],"src":"7417:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68545,"nodeType":"FunctionDefinition","src":"7783:637:120","nodes":[],"body":{"id":68544,"nodeType":"Block","src":"7861:559:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":68492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68484,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68480,"src":"7879:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7894:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7879:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":68488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7908:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68487,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"7899:8:120","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7899:11:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7899:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7879:36:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":68493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7917:21:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":68483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7871:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7871:68:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68495,"nodeType":"ExpressionStatement","src":"7871:68:120"},{"assignments":[68498],"declarations":[{"constant":false,"id":68498,"mutability":"mutable","name":"router","nameLocation":"7966:6:120","nodeType":"VariableDeclaration","scope":68544,"src":"7950:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68497,"nodeType":"UserDefinedTypeName","pathNode":{"id":68496,"name":"Storage","nameLocations":["7950:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"7950:7:120"},"referencedDeclaration":65258,"src":"7950:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68501,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68499,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"7975:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7975:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7950:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68503,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68498,"src":"8002:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8009:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"8002:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8022:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"8002:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8038:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8030:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8030:7:120","typeDescriptions":{}}},"id":68509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8030:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8002:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8042:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68502,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7994:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7994:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68513,"nodeType":"ExpressionStatement","src":"7994:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"},"id":68523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68515,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68498,"src":"8133:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8140:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"8133:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8153:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"8133:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68519,"indexExpression":{"id":68518,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68478,"src":"8159:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8133:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68520,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"8171:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8176:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69540,"src":"8171:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69540_$","typeString":"type(enum Gear.CodeState)"}},"id":68522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8186:7:120","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":69537,"src":"8171:22:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"8133:60:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":68524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8207:53:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":68514,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8112:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8112:158:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68526,"nodeType":"ExpressionStatement","src":"8112:158:120"},{"expression":{"id":68537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68527,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68498,"src":"8281:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8288:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"8281:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8301:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"8281:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68533,"indexExpression":{"id":68530,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68478,"src":"8307:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8281:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68534,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"8318:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8323:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69540,"src":"8318:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69540_$","typeString":"type(enum Gear.CodeState)"}},"id":68536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8333:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69538,"src":"8318:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"8281:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68538,"nodeType":"ExpressionStatement","src":"8281:71:120"},{"eventCall":{"arguments":[{"id":68540,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68478,"src":"8392:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68541,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68480,"src":"8401:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68539,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65277,"src":"8368:23:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":68542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8368:45:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68543,"nodeType":"EmitStatement","src":"8363:50:120"}]},"baseFunctions":[65431],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"7792:21:120","parameters":{"id":68481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68478,"mutability":"mutable","name":"_codeId","nameLocation":"7822:7:120","nodeType":"VariableDeclaration","scope":68545,"src":"7814:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7814:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68480,"mutability":"mutable","name":"_blobTxHash","nameLocation":"7839:11:120","nodeType":"VariableDeclaration","scope":68545,"src":"7831:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7831:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7813:38:120"},"returnParameters":{"id":68482,"nodeType":"ParameterList","parameters":[],"src":"7861:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68576,"nodeType":"FunctionDefinition","src":"8426:231:120","nodes":[],"body":{"id":68575,"nodeType":"Block","src":"8508:149:120","nodes":[],"statements":[{"assignments":[68555],"declarations":[{"constant":false,"id":68555,"mutability":"mutable","name":"mirror","nameLocation":"8526:6:120","nodeType":"VariableDeclaration","scope":68575,"src":"8518:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68554,"name":"address","nodeType":"ElementaryTypeName","src":"8518:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68560,"initialValue":{"arguments":[{"id":68557,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68547,"src":"8550:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68558,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68549,"src":"8559:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68556,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69031,"src":"8535:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8535:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8518:47:120"},{"expression":{"arguments":[{"expression":{"id":68565,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8603:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8607:6:120","memberName":"sender","nodeType":"MemberAccess","src":"8603:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":68569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8623:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8615:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68567,"name":"address","nodeType":"ElementaryTypeName","src":"8615:7:120","typeDescriptions":{}}},"id":68570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8615:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68562,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68555,"src":"8584:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68561,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"8576:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":68563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8576:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65178","typeString":"contract IMirror"}},"id":68564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8592:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65169,"src":"8576:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8576:50:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68572,"nodeType":"ExpressionStatement","src":"8576:50:120"},{"expression":{"id":68573,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68555,"src":"8644:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68553,"id":68574,"nodeType":"Return","src":"8637:13:120"}]},"baseFunctions":[65441],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"8435:13:120","parameters":{"id":68550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68547,"mutability":"mutable","name":"_codeId","nameLocation":"8457:7:120","nodeType":"VariableDeclaration","scope":68576,"src":"8449:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68546,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8449:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68549,"mutability":"mutable","name":"_salt","nameLocation":"8474:5:120","nodeType":"VariableDeclaration","scope":68576,"src":"8466:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8466:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8448:32:120"},"returnParameters":{"id":68553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68576,"src":"8499:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68551,"name":"address","nodeType":"ElementaryTypeName","src":"8499:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8498:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68620,"nodeType":"FunctionDefinition","src":"8663:390:120","nodes":[],"body":{"id":68619,"nodeType":"Block","src":"8798:255:120","nodes":[],"statements":[{"assignments":[68588],"declarations":[{"constant":false,"id":68588,"mutability":"mutable","name":"mirror","nameLocation":"8816:6:120","nodeType":"VariableDeclaration","scope":68619,"src":"8808:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68587,"name":"address","nodeType":"ElementaryTypeName","src":"8808:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68593,"initialValue":{"arguments":[{"id":68590,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68580,"src":"8840:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68591,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68582,"src":"8849:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68589,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69031,"src":"8825:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8825:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8808:47:120"},{"assignments":[68595],"declarations":[{"constant":false,"id":68595,"mutability":"mutable","name":"decoder","nameLocation":"8873:7:120","nodeType":"VariableDeclaration","scope":68619,"src":"8865:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68594,"name":"address","nodeType":"ElementaryTypeName","src":"8865:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68607,"initialValue":{"arguments":[{"id":68597,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68578,"src":"8898:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68601,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68580,"src":"8939:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68602,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68582,"src":"8948:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68599,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8922:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8926:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"8922:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8922:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68598,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8912:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8912:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68605,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68588,"src":"8957:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":68596,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69060,"src":"8883:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) returns (address)"}},"id":68606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:81:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8865:99:120"},{"expression":{"arguments":[{"expression":{"id":68612,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9002:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9006:6:120","memberName":"sender","nodeType":"MemberAccess","src":"9002:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68614,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68595,"src":"9014:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68609,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68588,"src":"8983:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68608,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"8975:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":68610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8975:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65178","typeString":"contract IMirror"}},"id":68611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65169,"src":"8975:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8975:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68616,"nodeType":"ExpressionStatement","src":"8975:47:120"},{"expression":{"id":68617,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68588,"src":"9040:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68586,"id":68618,"nodeType":"Return","src":"9033:13:120"}]},"baseFunctions":[65453],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"8672:24:120","parameters":{"id":68583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68578,"mutability":"mutable","name":"_decoderImpl","nameLocation":"8705:12:120","nodeType":"VariableDeclaration","scope":68620,"src":"8697:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68577,"name":"address","nodeType":"ElementaryTypeName","src":"8697:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68580,"mutability":"mutable","name":"_codeId","nameLocation":"8727:7:120","nodeType":"VariableDeclaration","scope":68620,"src":"8719:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8719:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68582,"mutability":"mutable","name":"_salt","nameLocation":"8744:5:120","nodeType":"VariableDeclaration","scope":68620,"src":"8736:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68581,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8736:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8696:54:120"},"returnParameters":{"id":68586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68620,"src":"8785:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68584,"name":"address","nodeType":"ElementaryTypeName","src":"8785:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8784:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68738,"nodeType":"FunctionDefinition","src":"9133:1250:120","nodes":[],"body":{"id":68737,"nodeType":"Block","src":"9244:1139:120","nodes":[],"statements":[{"assignments":[68632],"declarations":[{"constant":false,"id":68632,"mutability":"mutable","name":"router","nameLocation":"9270:6:120","nodeType":"VariableDeclaration","scope":68737,"src":"9254:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68631,"nodeType":"UserDefinedTypeName","pathNode":{"id":68630,"name":"Storage","nameLocations":["9254:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"9254:7:120"},"referencedDeclaration":65258,"src":"9254:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68635,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68633,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"9279:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9279:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9254:34:120"},{"assignments":[68637],"declarations":[{"constant":false,"id":68637,"mutability":"mutable","name":"currentEraIndex","nameLocation":"9307:15:120","nodeType":"VariableDeclaration","scope":68737,"src":"9299:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68636,"name":"uint256","nodeType":"ElementaryTypeName","src":"9299:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68649,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68638,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9326:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9332:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"9326:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68640,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9344:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9351:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"9344:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9364:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69556,"src":"9344:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9326:47:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":68644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9325:49:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":68645,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9377:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9384:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"9377:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9394:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"9377:20:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9325:72:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9299:98:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68651,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68624,"src":"9416:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9427:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69517,"src":"9416:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68653,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68637,"src":"9439:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":68654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9457:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9439:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:42:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6d6d69746d656e742065726120696e646578206973206e6f74206e6578742065726120696e646578","id":68657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9460:44:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_162890466e3da7889495cad8b992d317e467631b8d4abd8dc4464c15dd41b759","typeString":"literal_string \"commitment era index is not next era index\""},"value":"commitment era index is not next era index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_162890466e3da7889495cad8b992d317e467631b8d4abd8dc4464c15dd41b759","typeString":"literal_string \"commitment era index is not next era index\""}],"id":68650,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9408:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9408:97:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68659,"nodeType":"ExpressionStatement","src":"9408:97:120"},{"assignments":[68661],"declarations":[{"constant":false,"id":68661,"mutability":"mutable","name":"nextEraStart","nameLocation":"9524:12:120","nodeType":"VariableDeclaration","scope":68737,"src":"9516:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68660,"name":"uint256","nodeType":"ElementaryTypeName","src":"9516:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68672,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68662,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9539:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9546:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"9539:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9559:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69556,"src":"9539:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68665,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9571:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9578:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"9571:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9588:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"9571:20:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":68668,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68624,"src":"9594:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9605:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69517,"src":"9594:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9571:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9539:74:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9516:97:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68674,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9631:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9637:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"9631:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68676,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68661,"src":"9650:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68677,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9665:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9672:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65253,"src":"9665:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69610_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9682:8:120","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":69609,"src":"9665:25:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9650:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9631:59:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206973206e6f74207965742073746172746564","id":68682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9692:29:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef3e2748c631aa0d71d8afc854c277a3e771005dd496ece9dad00c587d5c5eaa","typeString":"literal_string \"election is not yet started\""},"value":"election is not yet started"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef3e2748c631aa0d71d8afc854c277a3e771005dd496ece9dad00c587d5c5eaa","typeString":"literal_string \"election is not yet started\""}],"id":68673,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9623:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9623:99:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68684,"nodeType":"ExpressionStatement","src":"9623:99:120"},{"assignments":[68689],"declarations":[{"constant":false,"id":68689,"mutability":"mutable","name":"_validators","nameLocation":"9804:11:120","nodeType":"VariableDeclaration","scope":68737,"src":"9780:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68688,"nodeType":"UserDefinedTypeName","pathNode":{"id":68687,"name":"Gear.Validators","nameLocations":["9780:4:120","9785:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69505,"src":"9780:15:120"},"referencedDeclaration":69505,"src":"9780:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68694,"initialValue":{"arguments":[{"id":68692,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"9845:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68690,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"9818:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9823:21:120","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":69970,"src":"9818:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69505_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9818:34:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9780:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68696,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68689,"src":"9870:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9882:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69504,"src":"9870:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68698,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9901:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9907:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"9901:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9870:46:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f6f6b73206c696b652076616c696461746f727320666f72206e657874206572612061726520616c726561647920736574","id":68701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9918:52:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_b284ea0c51a926e5b8ea00c07f1ff766c11519c493036a65a767443fdf3f1780","typeString":"literal_string \"looks like validators for next era are already set\""},"value":"looks like validators for next era are already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b284ea0c51a926e5b8ea00c07f1ff766c11519c493036a65a767443fdf3f1780","typeString":"literal_string \"looks like validators for next era are already set\""}],"id":68695,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9862:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9862:109:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68703,"nodeType":"ExpressionStatement","src":"9862:109:120"},{"assignments":[68705],"declarations":[{"constant":false,"id":68705,"mutability":"mutable","name":"commitmentHash","nameLocation":"9990:14:120","nodeType":"VariableDeclaration","scope":68737,"src":"9982:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9982:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68710,"initialValue":{"arguments":[{"id":68708,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68624,"src":"10037:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":68706,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"10007:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10012:24:120","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69645,"src":"10007:29:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$69518_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":68709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10007:41:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9982:66:120"},{"expression":{"arguments":[{"arguments":[{"id":68714,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68632,"src":"10103:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":68718,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68705,"src":"10138:14:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68716,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10121:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10125:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"10121:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10121:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68715,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10111:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10111:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68721,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68627,"src":"10156:10:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68712,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"10079:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10084:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69922,"src":"10079:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10079:88:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e657874206572612076616c696461746f7273207369676e61747572657320766572696669636174696f6e206661696c6564","id":68723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10181:52:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_349cc9c1a1e1cddede1f7780f29c462d7f3b361b9dfecea0303aaa7d870183b1","typeString":"literal_string \"next era validators signatures verification failed\""},"value":"next era validators signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_349cc9c1a1e1cddede1f7780f29c462d7f3b361b9dfecea0303aaa7d870183b1","typeString":"literal_string \"next era validators signatures verification failed\""}],"id":68711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10058:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10058:185:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68725,"nodeType":"ExpressionStatement","src":"10058:185:120"},{"expression":{"arguments":[{"id":68727,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68689,"src":"10271:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":68728,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68624,"src":"10284:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10295:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69515,"src":"10284:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":68730,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68661,"src":"10307:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68726,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"src":"10254:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69505_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10254:66:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68732,"nodeType":"ExpressionStatement","src":"10254:66:120"},{"eventCall":{"arguments":[{"id":68734,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68661,"src":"10363:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68733,"name":"NextEraValidatorsCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65282,"src":"10336:26:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":68735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10336:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68736,"nodeType":"EmitStatement","src":"10331:45:120"}]},"baseFunctions":[65485],"documentation":{"id":68621,"nodeType":"StructuredDocumentation","src":"9087:41:120","text":"@dev Set validators for the next era."},"functionSelector":"aaf0fe6a","implemented":true,"kind":"function","modifiers":[],"name":"commitValidators","nameLocation":"9142:16:120","parameters":{"id":68628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68624,"mutability":"mutable","name":"commitment","nameLocation":"9194:10:120","nodeType":"VariableDeclaration","scope":68738,"src":"9159:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":68623,"nodeType":"UserDefinedTypeName","pathNode":{"id":68622,"name":"Gear.ValidatorsCommitment","nameLocations":["9159:4:120","9164:20:120"],"nodeType":"IdentifierPath","referencedDeclaration":69518,"src":"9159:25:120"},"referencedDeclaration":69518,"src":"9159:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69518_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"},{"constant":false,"id":68627,"mutability":"mutable","name":"signatures","nameLocation":"9223:10:120","nodeType":"VariableDeclaration","scope":68738,"src":"9206:27:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68625,"name":"bytes","nodeType":"ElementaryTypeName","src":"9206:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68626,"nodeType":"ArrayTypeName","src":"9206:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9158:76:120"},"returnParameters":{"id":68629,"nodeType":"ParameterList","parameters":[],"src":"9244:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68870,"nodeType":"FunctionDefinition","src":"10389:1336:120","nodes":[],"body":{"id":68869,"nodeType":"Block","src":"10498:1227:120","nodes":[],"statements":[{"assignments":[68750],"declarations":[{"constant":false,"id":68750,"mutability":"mutable","name":"router","nameLocation":"10524:6:120","nodeType":"VariableDeclaration","scope":68869,"src":"10508:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68749,"nodeType":"UserDefinedTypeName","pathNode":{"id":68748,"name":"Storage","nameLocations":["10508:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"10508:7:120"},"referencedDeclaration":65258,"src":"10508:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68753,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68751,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"10533:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10533:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10508:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68755,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"10560:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10567:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"10560:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10580:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"10560:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10596:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10588:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68758,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10588:7:120","typeDescriptions":{}}},"id":68761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10560:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10600:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10552:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10552:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68765,"nodeType":"ExpressionStatement","src":"10552:107:120"},{"assignments":[68767],"declarations":[{"constant":false,"id":68767,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"10683:21:120","nodeType":"VariableDeclaration","scope":68869,"src":"10670:34:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68766,"name":"bytes","nodeType":"ElementaryTypeName","src":"10670:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68768,"nodeType":"VariableDeclarationStatement","src":"10670:34:120"},{"body":{"id":68855,"nodeType":"Block","src":"10769:784:120","statements":[{"assignments":[68784],"declarations":[{"constant":false,"id":68784,"mutability":"mutable","name":"codeCommitment","nameLocation":"10812:14:120","nodeType":"VariableDeclaration","scope":68855,"src":"10783:43:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":68783,"nodeType":"UserDefinedTypeName","pathNode":{"id":68782,"name":"Gear.CodeCommitment","nameLocations":["10783:4:120","10788:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69536,"src":"10783:19:120"},"referencedDeclaration":69536,"src":"10783:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":68788,"initialValue":{"baseExpression":{"id":68785,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68742,"src":"10829:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69536_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68787,"indexExpression":{"id":68786,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68770,"src":"10846:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10829:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"10783:65:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"},"id":68799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68790,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"10888:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10895:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"10888:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10908:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"10888:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68795,"indexExpression":{"expression":{"id":68793,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"10914:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10929:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69533,"src":"10914:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10888:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68796,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"10936:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10941:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69540,"src":"10936:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69540_$","typeString":"type(enum Gear.CodeState)"}},"id":68798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10951:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69538,"src":"10936:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"10888:82:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":68800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10988:55:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":68789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10863:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10863:194:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68802,"nodeType":"ExpressionStatement","src":"10863:194:120"},{"condition":{"expression":{"id":68803,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11076:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11091:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69535,"src":"11076:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":68834,"nodeType":"Block","src":"11267:84:120","statements":[{"expression":{"id":68832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11285:51:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":68826,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"11292:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11299:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"11292:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11312:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"11292:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68831,"indexExpression":{"expression":{"id":68829,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11318:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11333:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69533,"src":"11318:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11292:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68833,"nodeType":"ExpressionStatement","src":"11285:51:120"}]},"id":68835,"nodeType":"IfStatement","src":"11072:279:120","trueBody":{"id":68825,"nodeType":"Block","src":"11098:163:120","statements":[{"expression":{"id":68816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68805,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"11116:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11123:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"11116:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11136:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"11116:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68812,"indexExpression":{"expression":{"id":68808,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11142:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11157:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69533,"src":"11142:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11116:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68813,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"11163:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11168:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69540,"src":"11163:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69540_$","typeString":"type(enum Gear.CodeState)"}},"id":68815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11178:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69539,"src":"11163:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"11116:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"id":68817,"nodeType":"ExpressionStatement","src":"11116:71:120"},{"expression":{"id":68823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11205:41:120","subExpression":{"expression":{"expression":{"id":68818,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"11205:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11212:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"11205:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11225:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69582,"src":"11205:39:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68824,"nodeType":"ExpressionStatement","src":"11205:41:120"}]}},{"eventCall":{"arguments":[{"expression":{"id":68837,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11387:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11402:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69533,"src":"11387:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68839,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11406:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11421:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69535,"src":"11406:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":68836,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65270,"src":"11370:16:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":68841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11370:57:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68842,"nodeType":"EmitStatement","src":"11365:62:120"},{"expression":{"id":68853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68843,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68767,"src":"11442:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68847,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68767,"src":"11479:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68850,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68784,"src":"11526:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$69536_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":68848,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"11502:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11507:18:120","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69735,"src":"11502:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$69536_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":68851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11502:39:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11466:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68844,"name":"bytes","nodeType":"ElementaryTypeName","src":"11466:5:120","typeDescriptions":{}}},"id":68846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11472:6:120","memberName":"concat","nodeType":"MemberAccess","src":"11466:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11466:76:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11442:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68854,"nodeType":"ExpressionStatement","src":"11442:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68773,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68770,"src":"10735:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68774,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68742,"src":"10739:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69536_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10756:6:120","memberName":"length","nodeType":"MemberAccess","src":"10739:23:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10735:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68856,"initializationExpression":{"assignments":[68770],"declarations":[{"constant":false,"id":68770,"mutability":"mutable","name":"i","nameLocation":"10728:1:120","nodeType":"VariableDeclaration","scope":68856,"src":"10720:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68769,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68772,"initialValue":{"hexValue":"30","id":68771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10732:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10720:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10764:3:120","subExpression":{"id":68777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68770,"src":"10764:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68779,"nodeType":"ExpressionStatement","src":"10764:3:120"},"nodeType":"ForStatement","src":"10715:838:120"},{"expression":{"arguments":[{"arguments":[{"id":68860,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68750,"src":"11608:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68862,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68767,"src":"11626:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68861,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11616:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11616:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68864,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68745,"src":"11650:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68858,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"11584:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11589:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69922,"src":"11584:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11584:78:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":68866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11676:32:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":68857,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11563:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11563:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68868,"nodeType":"ExpressionStatement","src":"11563:155:120"}]},"baseFunctions":[65464],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"10398:11:120","parameters":{"id":68746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68742,"mutability":"mutable","name":"_codeCommitments","nameLocation":"10441:16:120","nodeType":"VariableDeclaration","scope":68870,"src":"10410:47:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69536_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":68740,"nodeType":"UserDefinedTypeName","pathNode":{"id":68739,"name":"Gear.CodeCommitment","nameLocations":["10410:4:120","10415:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69536,"src":"10410:19:120"},"referencedDeclaration":69536,"src":"10410:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69536_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":68741,"nodeType":"ArrayTypeName","src":"10410:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69536_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68745,"mutability":"mutable","name":"_signatures","nameLocation":"10476:11:120","nodeType":"VariableDeclaration","scope":68870,"src":"10459:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68743,"name":"bytes","nodeType":"ElementaryTypeName","src":"10459:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68744,"nodeType":"ArrayTypeName","src":"10459:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"10409:79:120"},"returnParameters":{"id":68747,"nodeType":"ParameterList","parameters":[],"src":"10498:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68950,"nodeType":"FunctionDefinition","src":"11731:798:120","nodes":[],"body":{"id":68949,"nodeType":"Block","src":"11876:653:120","nodes":[],"statements":[{"assignments":[68884],"declarations":[{"constant":false,"id":68884,"mutability":"mutable","name":"router","nameLocation":"11902:6:120","nodeType":"VariableDeclaration","scope":68949,"src":"11886:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68883,"nodeType":"UserDefinedTypeName","pathNode":{"id":68882,"name":"Storage","nameLocations":["11886:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"11886:7:120"},"referencedDeclaration":65258,"src":"11886:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68887,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68885,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"11911:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11911:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11886:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68889,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68884,"src":"11938:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11945:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"11938:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11958:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"11938:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11974:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11966:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11966:7:120","typeDescriptions":{}}},"id":68895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11938:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11978:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68888,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11930:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11930:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68899,"nodeType":"ExpressionStatement","src":"11930:107:120"},{"assignments":[68901],"declarations":[{"constant":false,"id":68901,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"12061:22:120","nodeType":"VariableDeclaration","scope":68949,"src":"12048:35:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68900,"name":"bytes","nodeType":"ElementaryTypeName","src":"12048:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68902,"nodeType":"VariableDeclarationStatement","src":"12048:35:120"},{"body":{"id":68935,"nodeType":"Block","src":"12149:207:120","statements":[{"assignments":[68918],"declarations":[{"constant":false,"id":68918,"mutability":"mutable","name":"blockCommitment","nameLocation":"12193:15:120","nodeType":"VariableDeclaration","scope":68935,"src":"12163:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":68917,"nodeType":"UserDefinedTypeName","pathNode":{"id":68916,"name":"Gear.BlockCommitment","nameLocations":["12163:4:120","12168:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69531,"src":"12163:20:120"},"referencedDeclaration":69531,"src":"12163:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":68922,"initialValue":{"baseExpression":{"id":68919,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68874,"src":"12211:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69531_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68921,"indexExpression":{"id":68920,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68904,"src":"12229:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12211:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"12163:68:120"},{"expression":{"id":68933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68923,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68901,"src":"12245:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68927,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68901,"src":"12283:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68929,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68884,"src":"12320:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":68930,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68918,"src":"12328:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":68928,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69129,"src":"12307:12:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65258_storage_ptr_$_t_struct$_BlockCommitment_$69531_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":68931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12307:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12270:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68924,"name":"bytes","nodeType":"ElementaryTypeName","src":"12270:5:120","typeDescriptions":{}}},"id":68926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12276:6:120","memberName":"concat","nodeType":"MemberAccess","src":"12270:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12270:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12245:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68934,"nodeType":"ExpressionStatement","src":"12245:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68904,"src":"12114:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68908,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68874,"src":"12118:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69531_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12136:6:120","memberName":"length","nodeType":"MemberAccess","src":"12118:24:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12114:28:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68936,"initializationExpression":{"assignments":[68904],"declarations":[{"constant":false,"id":68904,"mutability":"mutable","name":"i","nameLocation":"12107:1:120","nodeType":"VariableDeclaration","scope":68936,"src":"12099:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68903,"name":"uint256","nodeType":"ElementaryTypeName","src":"12099:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68906,"initialValue":{"hexValue":"30","id":68905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12099:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12144:3:120","subExpression":{"id":68911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68904,"src":"12144:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68913,"nodeType":"ExpressionStatement","src":"12144:3:120"},"nodeType":"ForStatement","src":"12094:262:120"},{"expression":{"arguments":[{"arguments":[{"id":68940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68884,"src":"12411:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68942,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68901,"src":"12429:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68941,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12419:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12419:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68944,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68877,"src":"12454:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68938,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"12387:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12392:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69922,"src":"12387:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12387:79:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":68946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12480:32:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":68937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12366:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12366:156:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68948,"nodeType":"ExpressionStatement","src":"12366:156:120"}]},"baseFunctions":[65475],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":68880,"kind":"modifierInvocation","modifierName":{"id":68879,"name":"nonReentrant","nameLocations":["11859:12:120"],"nodeType":"IdentifierPath","referencedDeclaration":44262,"src":"11859:12:120"},"nodeType":"ModifierInvocation","src":"11859:12:120"}],"name":"commitBlocks","nameLocation":"11740:12:120","parameters":{"id":68878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68874,"mutability":"mutable","name":"_blockCommitments","nameLocation":"11785:17:120","nodeType":"VariableDeclaration","scope":68950,"src":"11753:49:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69531_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":68872,"nodeType":"UserDefinedTypeName","pathNode":{"id":68871,"name":"Gear.BlockCommitment","nameLocations":["11753:4:120","11758:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69531,"src":"11753:20:120"},"referencedDeclaration":69531,"src":"11753:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":68873,"nodeType":"ArrayTypeName","src":"11753:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69531_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68877,"mutability":"mutable","name":"_signatures","nameLocation":"11821:11:120","nodeType":"VariableDeclaration","scope":68950,"src":"11804:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68875,"name":"bytes","nodeType":"ElementaryTypeName","src":"11804:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68876,"nodeType":"ArrayTypeName","src":"11804:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"11752:81:120"},"returnParameters":{"id":68881,"nodeType":"ParameterList","parameters":[],"src":"11876:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69031,"nodeType":"FunctionDefinition","src":"12571:887:120","nodes":[],"body":{"id":69030,"nodeType":"Block","src":"12653:805:120","nodes":[],"statements":[{"assignments":[68961],"declarations":[{"constant":false,"id":68961,"mutability":"mutable","name":"router","nameLocation":"12679:6:120","nodeType":"VariableDeclaration","scope":69030,"src":"12663:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68960,"nodeType":"UserDefinedTypeName","pathNode":{"id":68959,"name":"Storage","nameLocations":["12663:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"12663:7:120"},"referencedDeclaration":65258,"src":"12663:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68964,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68962,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69307,"src":"12688:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65258_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12688:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12663:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68966,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"12715:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12722:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65233,"src":"12715:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69557_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12735:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69552,"src":"12715:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12751:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12743:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12743:7:120","typeDescriptions":{}}},"id":68972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12743:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12715:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12755:58:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12707:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12707:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68976,"nodeType":"ExpressionStatement","src":"12707:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"},"id":68986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68978,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"12846:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12853:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"12846:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12866:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69574,"src":"12846:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69540_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68982,"indexExpression":{"id":68981,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"12872:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12846:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68983,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"12884:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":68984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12889:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69540,"src":"12884:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69540_$","typeString":"type(enum Gear.CodeState)"}},"id":68985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12899:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69539,"src":"12884:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69540","typeString":"enum Gear.CodeState"}},"src":"12846:62:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":68987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12922:48:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":68977,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12825:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12825:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68989,"nodeType":"ExpressionStatement","src":"12825:155:120"},{"assignments":[68991],"declarations":[{"constant":false,"id":68991,"mutability":"mutable","name":"actorId","nameLocation":"13149:7:120","nodeType":"VariableDeclaration","scope":69030,"src":"13141:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68990,"name":"address","nodeType":"ElementaryTypeName","src":"13141:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69005,"initialValue":{"arguments":[{"expression":{"expression":{"id":68994,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"13197:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13204:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"13197:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13218:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69509,"src":"13197:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":69000,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"13258:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69001,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68954,"src":"13267:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68998,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13241:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13245:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"13241:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13241:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68997,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13231:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13231:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68992,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"13171:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":68993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13178:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"13171:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13171:104:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13141:134:120"},{"expression":{"id":69014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":69006,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"13286:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13293:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"13286:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13306:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69578,"src":"13286:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69012,"indexExpression":{"id":69009,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68991,"src":"13315:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13286:37:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69013,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"13326:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13286:47:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69015,"nodeType":"ExpressionStatement","src":"13286:47:120"},{"expression":{"id":69021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13343:35:120","subExpression":{"expression":{"expression":{"id":69016,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"13343:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69019,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13350:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"13343:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13363:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69580,"src":"13343:33:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69022,"nodeType":"ExpressionStatement","src":"13343:35:120"},{"eventCall":{"arguments":[{"id":69024,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68991,"src":"13409:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69025,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"13418:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69023,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65296,"src":"13394:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":69026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13394:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69027,"nodeType":"EmitStatement","src":"13389:37:120"},{"expression":{"id":69028,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68991,"src":"13444:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68958,"id":69029,"nodeType":"Return","src":"13437:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"12580:14:120","parameters":{"id":68955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68952,"mutability":"mutable","name":"_codeId","nameLocation":"12603:7:120","nodeType":"VariableDeclaration","scope":69031,"src":"12595:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12595:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68954,"mutability":"mutable","name":"_salt","nameLocation":"12620:5:120","nodeType":"VariableDeclaration","scope":69031,"src":"12612:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12612:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12594:32:120"},"returnParameters":{"id":68958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69031,"src":"12644:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68956,"name":"address","nodeType":"ElementaryTypeName","src":"12644:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12643:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69060,"nodeType":"FunctionDefinition","src":"13464:270:120","nodes":[],"body":{"id":69059,"nodeType":"Block","src":"13571:163:120","nodes":[],"statements":[{"assignments":[69043],"declarations":[{"constant":false,"id":69043,"mutability":"mutable","name":"decoder","nameLocation":"13589:7:120","nodeType":"VariableDeclaration","scope":69059,"src":"13581:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69042,"name":"address","nodeType":"ElementaryTypeName","src":"13581:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69049,"initialValue":{"arguments":[{"id":69046,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69033,"src":"13625:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69047,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69035,"src":"13642:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69044,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"13599:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13606:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"13599:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13599:49:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13581:67:120"},{"expression":{"arguments":[{"id":69054,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69037,"src":"13694:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":69051,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69043,"src":"13674:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69050,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"13659:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65215_$","typeString":"type(contract IMirrorDecoder)"}},"id":69052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13659:23:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$65215","typeString":"contract IMirrorDecoder"}},"id":69053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13683:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65185,"src":"13659:34:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":69055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13659:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69056,"nodeType":"ExpressionStatement","src":"13659:43:120"},{"expression":{"id":69057,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69043,"src":"13720:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69041,"id":69058,"nodeType":"Return","src":"13713:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"13473:14:120","parameters":{"id":69038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69033,"mutability":"mutable","name":"_implementation","nameLocation":"13496:15:120","nodeType":"VariableDeclaration","scope":69060,"src":"13488:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69032,"name":"address","nodeType":"ElementaryTypeName","src":"13488:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69035,"mutability":"mutable","name":"_salt","nameLocation":"13521:5:120","nodeType":"VariableDeclaration","scope":69060,"src":"13513:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13513:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69037,"mutability":"mutable","name":"_mirror","nameLocation":"13536:7:120","nodeType":"VariableDeclaration","scope":69060,"src":"13528:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69036,"name":"address","nodeType":"ElementaryTypeName","src":"13528:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13487:57:120"},"returnParameters":{"id":69041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69060,"src":"13562:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69039,"name":"address","nodeType":"ElementaryTypeName","src":"13562:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13561:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69129,"nodeType":"FunctionDefinition","src":"13740:1094:120","nodes":[],"body":{"id":69128,"nodeType":"Block","src":"13880:954:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69072,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69063,"src":"13911:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13918:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"13911:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69545_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13939:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69542,"src":"13911:32:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":69075,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"13947:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13964:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69524,"src":"13947:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13911:75:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":69078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14000:39:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":69071,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13890:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13890:159:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69080,"nodeType":"ExpressionStatement","src":"13890:159:120"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":69084,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14092:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14109:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69526,"src":"14092:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69082,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"14068:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":69083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14073:18:120","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":69716,"src":"14068:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":69086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14068:58:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":69087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14128:40:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":69081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14060:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14060:109:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69089,"nodeType":"ExpressionStatement","src":"14060:109:120"},{"expression":{"id":69100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69090,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69063,"src":"14309:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14316:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65237,"src":"14309:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69545_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":69095,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14363:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14380:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69520,"src":"14363:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69097,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14386:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14403:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69522,"src":"14386:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":69093,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"14339:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":69094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14344:18:120","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":69545,"src":"14339:23:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$69545_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":69099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14339:74:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69545_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"14309:104:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69545_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69101,"nodeType":"ExpressionStatement","src":"14309:104:120"},{"assignments":[69103],"declarations":[{"constant":false,"id":69103,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"14432:21:120","nodeType":"VariableDeclaration","scope":69128,"src":"14424:29:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14424:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69109,"initialValue":{"arguments":[{"id":69105,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69063,"src":"14475:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":69106,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14483:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14500:11:120","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":69530,"src":"14483:28:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":69104,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69214,"src":"14456:18:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65258_storage_ptr_$_t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":69108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14456:56:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14424:88:120"},{"eventCall":{"arguments":[{"expression":{"id":69111,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14543:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14560:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69520,"src":"14543:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69110,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65263,"src":"14528:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":69113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14528:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69114,"nodeType":"EmitStatement","src":"14523:42:120"},{"expression":{"arguments":[{"expression":{"id":69117,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14621:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14638:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69520,"src":"14621:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69119,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14656:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14673:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69522,"src":"14656:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":69121,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14696:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14713:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69524,"src":"14696:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69123,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69066,"src":"14749:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14766:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69526,"src":"14749:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69125,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69103,"src":"14796:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69115,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70080,"src":"14583:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70080_$","typeString":"type(library Gear)"}},"id":69116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14588:19:120","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69672,"src":"14583:24:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":69126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14583:244:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69070,"id":69127,"nodeType":"Return","src":"14576:251:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"13749:12:120","parameters":{"id":69067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69063,"mutability":"mutable","name":"router","nameLocation":"13778:6:120","nodeType":"VariableDeclaration","scope":69129,"src":"13762:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69062,"nodeType":"UserDefinedTypeName","pathNode":{"id":69061,"name":"Storage","nameLocations":["13762:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"13762:7:120"},"referencedDeclaration":65258,"src":"13762:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69066,"mutability":"mutable","name":"_blockCommitment","nameLocation":"13816:16:120","nodeType":"VariableDeclaration","scope":69129,"src":"13786:46:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69065,"nodeType":"UserDefinedTypeName","pathNode":{"id":69064,"name":"Gear.BlockCommitment","nameLocations":["13786:4:120","13791:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69531,"src":"13786:20:120"},"referencedDeclaration":69531,"src":"13786:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69531_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"13761:72:120"},"returnParameters":{"id":69070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69129,"src":"13867:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13867:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13866:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69214,"nodeType":"FunctionDefinition","src":"14840:839:120","nodes":[],"body":{"id":69213,"nodeType":"Block","src":"14984:695:120","nodes":[],"statements":[{"assignments":[69142],"declarations":[{"constant":false,"id":69142,"mutability":"mutable","name":"transitionsHashes","nameLocation":"15007:17:120","nodeType":"VariableDeclaration","scope":69213,"src":"14994:30:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69141,"name":"bytes","nodeType":"ElementaryTypeName","src":"14994:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":69143,"nodeType":"VariableDeclarationStatement","src":"14994:30:120"},{"body":{"id":69207,"nodeType":"Block","src":"15085:542:120","statements":[{"assignments":[69159],"declarations":[{"constant":false,"id":69159,"mutability":"mutable","name":"transition","nameLocation":"15129:10:120","nodeType":"VariableDeclaration","scope":69207,"src":"15099:40:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":69158,"nodeType":"UserDefinedTypeName","pathNode":{"id":69157,"name":"Gear.StateTransition","nameLocations":["15099:4:120","15104:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69605,"src":"15099:20:120"},"referencedDeclaration":69605,"src":"15099:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":69163,"initialValue":{"baseExpression":{"id":69160,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69136,"src":"15142:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69162,"indexExpression":{"id":69161,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69145,"src":"15155:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15142:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"15099:58:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69165,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69132,"src":"15197:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15204:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65257,"src":"15197:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69583_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15217:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69578,"src":"15197:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69170,"indexExpression":{"expression":{"id":69168,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69159,"src":"15226:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15237:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"15226:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15197:48:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":69171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15249:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15197:53:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":69173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15252:49:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":69164,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15172:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15172:143:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69175,"nodeType":"ExpressionStatement","src":"15172:143:120"},{"expression":{"arguments":[{"expression":{"id":69182,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69159,"src":"15386:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15397:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"15386:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":69184,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69159,"src":"15406:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15417:14:120","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69596,"src":"15406:25:120","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"expression":{"id":69177,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69132,"src":"15343:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15350:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65241,"src":"15343:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69512_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15364:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69511,"src":"15343:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69176,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"15330:12:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65497_$","typeString":"type(contract IWrappedVara)"}},"id":69180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15330:46:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65497","typeString":"contract IWrappedVara"}},"id":69181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15377:8:120","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"15330:55:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":69186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15330:102:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69187,"nodeType":"ExpressionStatement","src":"15330:102:120"},{"assignments":[69189],"declarations":[{"constant":false,"id":69189,"mutability":"mutable","name":"transitionHash","nameLocation":"15455:14:120","nodeType":"VariableDeclaration","scope":69207,"src":"15447:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69188,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15447:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69197,"initialValue":{"arguments":[{"id":69195,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69159,"src":"15523:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":69191,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69159,"src":"15480:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15491:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"15480:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69190,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"15472:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":69193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15472:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65178","typeString":"contract IMirror"}},"id":69194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15500:22:120","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":65177,"src":"15472:50:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$69605_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":69196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15472:62:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"15447:87:120"},{"expression":{"id":69205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69198,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69142,"src":"15549:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69202,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69142,"src":"15582:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":69203,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69189,"src":"15601:14:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15569:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69199,"name":"bytes","nodeType":"ElementaryTypeName","src":"15569:5:120","typeDescriptions":{}}},"id":69201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15575:6:120","memberName":"concat","nodeType":"MemberAccess","src":"15569:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15569:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15549:67:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69206,"nodeType":"ExpressionStatement","src":"15549:67:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69145,"src":"15055:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69149,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69136,"src":"15059:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15072:6:120","memberName":"length","nodeType":"MemberAccess","src":"15059:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15055:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69208,"initializationExpression":{"assignments":[69145],"declarations":[{"constant":false,"id":69145,"mutability":"mutable","name":"i","nameLocation":"15048:1:120","nodeType":"VariableDeclaration","scope":69208,"src":"15040:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69144,"name":"uint256","nodeType":"ElementaryTypeName","src":"15040:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69147,"initialValue":{"hexValue":"30","id":69146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15052:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15040:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15080:3:120","subExpression":{"id":69152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69145,"src":"15080:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69154,"nodeType":"ExpressionStatement","src":"15080:3:120"},"nodeType":"ForStatement","src":"15035:592:120"},{"expression":{"arguments":[{"id":69210,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69142,"src":"15654:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69209,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15644:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15644:28:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69140,"id":69212,"nodeType":"Return","src":"15637:35:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"14849:18:120","parameters":{"id":69137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69132,"mutability":"mutable","name":"router","nameLocation":"14884:6:120","nodeType":"VariableDeclaration","scope":69214,"src":"14868:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69131,"nodeType":"UserDefinedTypeName","pathNode":{"id":69130,"name":"Storage","nameLocations":["14868:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"14868:7:120"},"referencedDeclaration":65258,"src":"14868:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69136,"mutability":"mutable","name":"_transitions","nameLocation":"14924:12:120","nodeType":"VariableDeclaration","scope":69214,"src":"14892:44:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":69134,"nodeType":"UserDefinedTypeName","pathNode":{"id":69133,"name":"Gear.StateTransition","nameLocations":["14892:4:120","14897:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69605,"src":"14892:20:120"},"referencedDeclaration":69605,"src":"14892:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69605_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":69135,"nodeType":"ArrayTypeName","src":"14892:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69605_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"14867:70:120"},"returnParameters":{"id":69140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69214,"src":"14971:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14971:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14970:9:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69294,"nodeType":"FunctionDefinition","src":"15685:618:120","nodes":[],"body":{"id":69293,"nodeType":"Block","src":"15846:457:120","nodes":[],"statements":[{"body":{"id":69252,"nodeType":"Block","src":"15910:114:120","statements":[{"assignments":[69238],"declarations":[{"constant":false,"id":69238,"mutability":"mutable","name":"_validator","nameLocation":"15932:10:120","nodeType":"VariableDeclaration","scope":69252,"src":"15924:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69237,"name":"address","nodeType":"ElementaryTypeName","src":"15924:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69243,"initialValue":{"baseExpression":{"expression":{"id":69239,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"15945:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15957:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"15945:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69242,"indexExpression":{"id":69241,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69226,"src":"15962:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15945:19:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15924:40:120"},{"expression":{"id":69250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69244,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"15978:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15990:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69499,"src":"15978:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69248,"indexExpression":{"id":69246,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69238,"src":"15994:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15978:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":69249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16008:5:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15978:35:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69251,"nodeType":"ExpressionStatement","src":"15978:35:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69226,"src":"15876:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":69230,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"15880:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15892:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"15880:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15897:6:120","memberName":"length","nodeType":"MemberAccess","src":"15880:23:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15876:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69253,"initializationExpression":{"assignments":[69226],"declarations":[{"constant":false,"id":69226,"mutability":"mutable","name":"i","nameLocation":"15869:1:120","nodeType":"VariableDeclaration","scope":69253,"src":"15861:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69225,"name":"uint256","nodeType":"ElementaryTypeName","src":"15861:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69228,"initialValue":{"hexValue":"30","id":69227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15873:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15861:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15905:3:120","subExpression":{"id":69234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69226,"src":"15905:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69236,"nodeType":"ExpressionStatement","src":"15905:3:120"},"nodeType":"ForStatement","src":"15856:168:120"},{"body":{"id":69279,"nodeType":"Block","src":"16085:111:120","statements":[{"assignments":[69266],"declarations":[{"constant":false,"id":69266,"mutability":"mutable","name":"_validator","nameLocation":"16107:10:120","nodeType":"VariableDeclaration","scope":69279,"src":"16099:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69265,"name":"address","nodeType":"ElementaryTypeName","src":"16099:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69270,"initialValue":{"baseExpression":{"id":69267,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69220,"src":"16120:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69269,"indexExpression":{"id":69268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69255,"src":"16135:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16120:17:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16099:38:120"},{"expression":{"id":69277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69271,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"16151:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16163:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69499,"src":"16151:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69275,"indexExpression":{"id":69273,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69266,"src":"16167:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16151:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":69276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16181:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16151:34:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69278,"nodeType":"ExpressionStatement","src":"16151:34:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69255,"src":"16053:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69259,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69220,"src":"16057:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16072:6:120","memberName":"length","nodeType":"MemberAccess","src":"16057:21:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16053:25:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69280,"initializationExpression":{"assignments":[69255],"declarations":[{"constant":false,"id":69255,"mutability":"mutable","name":"i","nameLocation":"16046:1:120","nodeType":"VariableDeclaration","scope":69280,"src":"16038:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69254,"name":"uint256","nodeType":"ElementaryTypeName","src":"16038:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69257,"initialValue":{"hexValue":"30","id":69256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16050:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16038:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16080:3:120","subExpression":{"id":69262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69255,"src":"16080:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69264,"nodeType":"ExpressionStatement","src":"16080:3:120"},"nodeType":"ForStatement","src":"16033:163:120"},{"expression":{"id":69285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69281,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"16205:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16217:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69502,"src":"16205:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69284,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69220,"src":"16224:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"16205:33:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69286,"nodeType":"ExpressionStatement","src":"16205:33:120"},{"expression":{"id":69291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69287,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69217,"src":"16248:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16260:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69504,"src":"16248:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69290,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69222,"src":"16279:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16248:48:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69292,"nodeType":"ExpressionStatement","src":"16248:48:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"15694:16:120","parameters":{"id":69223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69217,"mutability":"mutable","name":"_validators","nameLocation":"15744:11:120","nodeType":"VariableDeclaration","scope":69294,"src":"15720:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":69216,"nodeType":"UserDefinedTypeName","pathNode":{"id":69215,"name":"Gear.Validators","nameLocations":["15720:4:120","15725:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69505,"src":"15720:15:120"},"referencedDeclaration":69505,"src":"15720:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69505_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":69220,"mutability":"mutable","name":"_newValidators","nameLocation":"15782:14:120","nodeType":"VariableDeclaration","scope":69294,"src":"15765:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":69218,"name":"address","nodeType":"ElementaryTypeName","src":"15765:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69219,"nodeType":"ArrayTypeName","src":"15765:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":69222,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"15814:17:120","nodeType":"VariableDeclaration","scope":69294,"src":"15806:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69221,"name":"uint256","nodeType":"ElementaryTypeName","src":"15806:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15710:127:120"},"returnParameters":{"id":69224,"nodeType":"ParameterList","parameters":[],"src":"15846:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69307,"nodeType":"FunctionDefinition","src":"16309:192:120","nodes":[],"body":{"id":69306,"nodeType":"Block","src":"16374:127:120","nodes":[],"statements":[{"assignments":[69301],"declarations":[{"constant":false,"id":69301,"mutability":"mutable","name":"slot","nameLocation":"16392:4:120","nodeType":"VariableDeclaration","scope":69306,"src":"16384:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16384:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69304,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69302,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69319,"src":"16399:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":69303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16399:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16384:32:120"},{"AST":{"nativeSrc":"16452:43:120","nodeType":"YulBlock","src":"16452:43:120","statements":[{"nativeSrc":"16466:19:120","nodeType":"YulAssignment","src":"16466:19:120","value":{"name":"slot","nativeSrc":"16481:4:120","nodeType":"YulIdentifier","src":"16481:4:120"},"variableNames":[{"name":"router.slot","nativeSrc":"16466:11:120","nodeType":"YulIdentifier","src":"16466:11:120"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":69298,"isOffset":false,"isSlot":true,"src":"16466:11:120","suffix":"slot","valueSize":1},{"declaration":69301,"isOffset":false,"isSlot":false,"src":"16481:4:120","valueSize":1}],"flags":["memory-safe"],"id":69305,"nodeType":"InlineAssembly","src":"16427:68:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"16318:7:120","parameters":{"id":69295,"nodeType":"ParameterList","parameters":[],"src":"16325:2:120"},"returnParameters":{"id":69299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69298,"mutability":"mutable","name":"router","nameLocation":"16366:6:120","nodeType":"VariableDeclaration","scope":69307,"src":"16350:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69297,"nodeType":"UserDefinedTypeName","pathNode":{"id":69296,"name":"Storage","nameLocations":["16350:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65258,"src":"16350:7:120"},"referencedDeclaration":65258,"src":"16350:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"16349:24:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69319,"nodeType":"FunctionDefinition","src":"16507:128:120","nodes":[],"body":{"id":69318,"nodeType":"Block","src":"16565:70:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":69314,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67840,"src":"16609:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69312,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"16582:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16594:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"16582:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16582:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16623:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"16582:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69311,"id":69317,"nodeType":"Return","src":"16575:53:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"16516:15:120","parameters":{"id":69308,"nodeType":"ParameterList","parameters":[],"src":"16531:2:120"},"returnParameters":{"id":69311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69319,"src":"16556:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16556:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16555:9:120"},"scope":69365,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69364,"nodeType":"FunctionDefinition","src":"16641:252:120","nodes":[],"body":{"id":69363,"nodeType":"Block","src":"16709:184:120","nodes":[],"statements":[{"assignments":[69327],"declarations":[{"constant":false,"id":69327,"mutability":"mutable","name":"slot","nameLocation":"16727:4:120","nodeType":"VariableDeclaration","scope":69363,"src":"16719:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16719:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69353,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":69336,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69321,"src":"16779:9:120","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16773:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69334,"name":"bytes","nodeType":"ElementaryTypeName","src":"16773:5:120","typeDescriptions":{}}},"id":69337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16773:16:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69333,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16763:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16763:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16755:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69331,"name":"uint256","nodeType":"ElementaryTypeName","src":"16755:7:120","typeDescriptions":{}}},"id":69339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16755:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":69340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16794:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16755:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":69329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16744:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16748:6:120","memberName":"encode","nodeType":"MemberAccess","src":"16744:10:120","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16744:52:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69328,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16734:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16734:63:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":69351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16800:23:120","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":69348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16817:4:120","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":69347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16809:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69346,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:120","typeDescriptions":{}}},"id":69349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16809:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16801:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16801:7:120","typeDescriptions":{}}},"id":69350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16801:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16734:89:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16719:104:120"},{"expression":{"id":69361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":69357,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67840,"src":"16860:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69354,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"16833:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16845:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"16833:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16833:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16874:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"16833:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69360,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69327,"src":"16882:4:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16833:53:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69362,"nodeType":"ExpressionStatement","src":"16833:53:120"}]},"implemented":true,"kind":"function","modifiers":[{"id":69324,"kind":"modifierInvocation","modifierName":{"id":69323,"name":"onlyOwner","nameLocations":["16699:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"16699:9:120"},"nodeType":"ModifierInvocation","src":"16699:9:120"}],"name":"_setStorageSlot","nameLocation":"16650:15:120","parameters":{"id":69322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69321,"mutability":"mutable","name":"namespace","nameLocation":"16680:9:120","nodeType":"VariableDeclaration","scope":69364,"src":"16666:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69320,"name":"string","nodeType":"ElementaryTypeName","src":"16666:6:120","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16665:25:120"},"returnParameters":{"id":69325,"nodeType":"ParameterList","parameters":[],"src":"16709:0:120"},"scope":69365,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67832,"name":"IRouter","nameLocations":["709:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65486,"src":"709:7:120"},"id":67833,"nodeType":"InheritanceSpecifier","src":"709:7:120"},{"baseName":{"id":67834,"name":"OwnableUpgradeable","nameLocations":["718:18:120"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"718:18:120"},"id":67835,"nodeType":"InheritanceSpecifier","src":"718:18:120"},{"baseName":{"id":67836,"name":"ReentrancyGuardTransient","nameLocations":["738:24:120"],"nodeType":"IdentifierPath","referencedDeclaration":44307,"src":"738:24:120"},"id":67837,"nodeType":"InheritanceSpecifier","src":"738:24:120"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69365,44307,40332,41480,40586,65486],"name":"Router","nameLocation":"699:6:120","scope":69366,"usedErrors":[40168,40173,40349,40352,44174,44180,44251,44961,44966,44971],"usedEvents":[40179,40357,65263,65270,65277,65282,65289,65296,65299]}],"license":"UNLICENSED"},"id":120} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitExecuteSlash","inputs":[{"name":"commitment","type":"tuple","internalType":"struct Gear.ExecuteSlashCommitment","components":[{"name":"eraIndex","type":"uint256","internalType":"uint256"},{"name":"slashIdentifiers","type":"tuple[]","internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitRequestSlash","inputs":[{"name":"commitment","type":"tuple","internalType":"struct Gear.RequestSlashCommitment","components":[{"name":"eraIndex","type":"uint256","internalType":"uint256"},{"name":"slashes","type":"tuple[]","internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitValidators","inputs":[{"name":"commitment","type":"tuple","internalType":"struct Gear.ValidatorsCommitment","components":[{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"eraIndex","type":"uint256","internalType":"uint256"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"genesisTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_middleware","type":"address","internalType":"address"},{"name":"_eraDuration","type":"uint256","internalType":"uint256"},{"name":"_electionDuration","type":"uint256","internalType":"uint256"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"middleware","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ExecuteSlashCommitmentProcessed","inputs":[{"name":"commitmentHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"slashId","type":"tuple[]","indexed":false,"internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"NextEraValidatorsCommitted","inputs":[{"name":"startTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RequestSlashCommitmentProcessed","inputs":[{"name":"commitmentHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"slashData","type":"tuple[]","indexed":false,"internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080806040523460aa575f5160206139085f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b60405161385990816100af8239f35b6001600160401b0319166001600160401b039081175f5160206139085f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e71461286a5750806301b1d1561461212c5780631c149d8a14611fd357806328e24b3d14611fa95780633d43b41814611f5757806345c955a114611cd7578063527de0f914611c7657806365ecfea214611c3d5780636c2eb35014611940578063715018a6146118d757806382bdeaad146117bf57806384d22a4f1461175657806388f50cf01461171d5780638b1edf1e146116565780638da5cb5b146116215780638f381dbe146115db5780639067088e1461159257806396a2ddfa14611564578063977179d51461106f578063aaf0fe6a14610d44578063baaf020114610c47578063c13911e814610c03578063c9f16a1114610bd5578063ca1e781914610b54578063cacf66ab14610b1c578063e2f3792414610697578063e6fabc091461065e578063e7006a741461053d578063e97d3eb31461030a578063ed612f8c146102d4578063edc872251461028b578063efd81abc14610259578063f2fde38b1461022c578063f4f20ac0146101f35763facd743b1461019e575f80fd5b346101f05760203660031901126101f0576101b76128da565b6101ce5f5160206137e45f395f51905f525461333d565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346101f05760203660031901126101f0576102566102496128da565b610251613191565b612fb3565b80f35b50346101f057806003193601126101f057602061ffff60085f5160206137e45f395f51905f5254015416604051908152f35b50346101f057806003193601126101f05760206102cc5f5160206137e45f395f51905f525461ffff600860016102c08461333d565b0154920154169061348a565b604051908152f35b50346101f057806003193601126101f057602060016103005f5160206137e45f395f51905f525461333d565b0154604051908152f35b50346101f05760403660031901126101f057600435906001600160401b0382116101f057366023830112156101f0578160040135916001600160401b038311610539573660248460061b83010111610539576024356001600160401b038111610535579061037d84923690600401612894565b935f5160206137e45f395f51905f52549261039a84541515612963565b606095829360128601975b87861015610518578560061b84016024810135918287528a60205260ff6040882054166003811015610504576001036104a157600192610454604461048194016103ee81612f98565b1561048957828a528d60205260408a20600260ff1982541617905560158c016104178154612fa5565b90555b61042381612f98565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612f98565b6040519060208201928352151560f81b604082015260218152610478604182612a1f565b51902090612a40565b9501946103a5565b828a528d60205260408a2060ff19815416905561041a565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926102569288610530936020815191012090613037565b612a6f565b8280fd5b5080fd5b50346101f05760603660031901126101f0576105576128da565b6024359061059f6044359161056c83856131c4565b93604051936020850191825260408501526040845261058c606085612a1f565b92519092206001600160a01b03926136de565b16803b156105355760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156106535761063e575b5050813b15610535576040519063485cc95560e01b82523360048301526024820152828160448183865af180156106335761061e575b602082604051908152f35b610629838092612a1f565b6105395781610613565b6040513d85823e3d90fd5b8161064891612a1f565b61053557825f6105dd565b6040513d84823e3d90fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101f0576106a636612904565b5f5160206137e45f395f51905f52939193549365ffffffffffff600186015460201c169361070e6107066106da8742612abb565b966107006106ed60108b0154809a612adc565b8535996106fb828c14612afa565b612b46565b90612b59565b421015612b66565b6040813603126109ad5760405194610725866129d5565b8552602081019081356001600160401b038111610b185781019636601f89011215610b185787359761075689612bb2565b986107646040519a8b612a1f565b808a526020808b019160051b83010191368311610b14576020819a96959899979a01915b838310610a165750505050876020840152606092845b8951861015610899576107b1868b612d49565b5198895194604060208c01519b01519860609584965b8b51881015610818576001906108106107e08a8f612d49565b51916108026020858060a01b0385511694015160405194859360208501613503565b03601f198101835282612a1f565b9701966107c7565b6020949a9b508491975098603a92986001969d979e61088a959b848151910120906040519784899551918291018787015e8401926bffffffffffffffffffffffff199060601b168584015265ffffffffffff60d01b9060d01b166034830152848201520301601a810184520182612a1f565b9601949790969593929561079e565b888488856108f38c878b6020815191012090519060405190602082019283526040820152604081526108cc606082612a1f565b519020956040516020810190888252602081526108ea604082612a1f565b51902084613037565b156109b1576007015484906001600160a01b0316610912811515612bf8565b61091c8484612e44565b823b156109ad576109469284928360405180968195829463029c425360e21b845260048401612e8c565b03925af1801561065357610998575b50507ff30508a098ff6e1e1f6a40c8df7c0d7f84a7a50f74507a1cec3b4967073338ac9161098291612e44565b9061099260405192839283612e8c565b0390a280f35b816109a291612a1f565b6109ad578385610955565b8380fd5b60405162461bcd60e51b815260206004820152603760248201527f7265717565737420736c61736820636f6d6d69746d656e74207369676e6174756044820152761c995cc81d995c9a599a58d85d1a5bdb8819985a5b1959604a1b6064820152608490fd5b829a97999895969a356001600160401b038111610b105782016060601f198236030112610b105760405190610a4a82612a04565b610a56602082016128f0565b8252610a6460408201612e79565b60208301526060810135906001600160401b038211610b0c5790602091010136601f82011215610b08578035610a9981612bb2565b91610aa76040519384612a1f565b81835260208084019260061b82010190368211610b0457602001915b818310610aea57505050918160209360408594015281520192019199959497989699610788565b6020604091610af93686612bc9565b815201920191610ac3565b8e80fd5b8b80fd5b8c80fd5b8a80fd5b8880fd5b8580fd5b50346101f057806003193601126101f057602065ffffffffffff60015f5160206137e45f395f51905f52540154821c16604051908152f35b50346101f057806003193601126101f057610b876001610b815f5160206137e45f395f51905f525461333d565b01612cd4565b90604051918291602083016020845282518091526020604085019301915b818110610bb3575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610ba5565b50346101f057806003193601126101f057602060025f5160206137e45f395f51905f52540154604051908152f35b50346101f05760203660031901126101f05760ff604060209260125f5160206137e45f395f51905f52540160043582528452205416610c456040518092612956565bf35b50346101f05760203660031901126101f0576004356001600160401b03811161053957610c78903690600401612894565b905f5160206137e45f395f51905f525490610c9283612bb2565b91610ca06040519384612a1f565b838352610cac84612bb2565b602084019490601f19013686376013869201915b818110610d0b57868587604051928392602084019060208552518091526040840192915b818110610cf2575050500390f35b8251845285945060209384019390920191600101610ce4565b80610d21610d1c6001938588612d25565b612d75565b828060a01b03165f528360205260405f2054610d3d8288612d49565b5201610cc0565b50346101f057610d5336612904565b92915f5160206137e45f395f51905f52549165ffffffffffff600184015460201c1694610d808642612abb565b610d8f60108601548092612adc565b966020850135976001810180911161105b5788036110035761070088610db493612b46565b91610dc3601186015484612abb565b4210610fbe57610dd285613470565b944260028701541015610f5e57604085360312610f5a5760405197610df6896129d5565b85356001600160401b038111610b1457860136601f82011215610b14576020610e26839236908381359101612df0565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f3b575050506020828c610e6593610e8a9a9b9c9d9e52038084520182612a1f565b5190206040516020810191825260208152610e81604082612a1f565b51902090613037565b15610edb57610ed1817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ecb610ec486602097612e44565b3691612df0565b90613357565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e3f565b8680fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b88526011600452602488fd5b50346101f0576101003660031901126101f05761108a6128da565b6024356001600160a01b0381169190829003610535576044356001600160a01b03811692908390036109ad576064356001600160a01b0381169190829003611560576084356001600160a01b0381169290839003610b185760c43560a43560e4356001600160401b038111610b1457611107903690600401612894565b9590935f5160206138045f395f51905f52549760ff8960401c1615986001600160401b03811680159081611558575b600114908161154e575b159081611545575b506115365767ffffffffffffffff1981166001175f5160206138045f395f51905f525561118791908a61150a575b5061117f613619565b610251613619565b42156114b457831561145e57838311156113fd5760409889516111aa8b82612a1f565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526111de613191565b5190205f1981019081116113e9578a519060208201908152602082526112048c83612a1f565b60ff19915190201696875f5160206137e45f395f51905f52556112256132f8565b8051895560018901908c69ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff1916171790558a51608081018181106001600160401b038211176113d5578c5281815260208101839052808c018490526060018490526004880180546001600160a01b03199081166001600160a01b03938416179091556005890180548216938316939093179092556006880180548316938216939093179092556007870180549091169190921617905560088401805461ffff1916611a0a17905561137b9493926009926113749261130c612d5d565b506509184e72a00060208b51611321816129d5565b639502f90081520152600f860180546001600160c01b0319166d09184e72a000000000009502f9001790558951829060209061135c816129d5565b83815201526010860155601185015542943691612df0565b9101613357565b611383575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206138045f395f51905f5254165f5160206138045f395f51905f52555160018152a180f35b634e487b7160e01b8e52604160045260248efd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f5160206138045f395f51905f52555f611176565b63f92ee8a960e01b8c5260048cfd5b9050155f611148565b303b159150611140565b8b9150611136565b8480fd5b50346101f057806003193601126101f057602060145f5160206137e45f395f51905f52540154604051908152f35b50346101f05760203660031901126101f0576115ac6128da565b60135f5160206137e45f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101f05760203660031901126101f057600435906001600160401b0382116101f05760206116176116113660048601612894565b90612d89565b6040519015158152f35b50346101f057806003193601126101f0575f5160206137c45f395f51905f52546040516001600160a01b039091168152602090f35b50346101f057806003193601126101f0575f5160206137e45f395f51905f525480546116d85763ffffffff60018201541640908115611693575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101f057806003193601126101f05761176f612d5d565b506040600f5f5160206137e45f395f51905f5254016001600160801b03825191611798836129d5565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101f05760203660031901126101f0576004356001600160401b038111610539576117f0903690600401612894565b905f5160206137e45f395f51905f52549061180a83612bb2565b916118186040519384612a1f565b83835261182484612bb2565b602084019490601f19013686376012869201915b81811061188d57868587604051928392602084019060208552518091526040840192915b81811061186a575050500390f35b919350916020808261187f6001948851612956565b01940191019184939261185c565b611898818386612d25565b3587528260205260ff6040882054166118b18287612d49565b60038210156118c35752600101611838565b634e487b7160e01b89526021600452602489fd5b50346101f057806003193601126101f0576118f0613191565b5f5160206137c45f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101f057806003193601126101f057611959613191565b5f5160206138045f395f51905f525460ff8160401c168015611c29575b611c1a57680100000000000000029068ffffffffffffffffff1916175f5160206138045f395f51905f52555f5160206137e45f395f51905f525460409081516119bf8382612a1f565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526119f3613191565b5190205f198101908111611c0657916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d293825190848201908152848252611a3d8483612a1f565b60ff19915190201690815f5160206137e45f395f51905f5255611a5e6132f8565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff191617179055600481016004830190808203611ba2575b505061ffff600882015416600883019061ffff19825416179055611ae46001611ad08361333d565b01611adb4291612cd4565b60098501613357565b600f8101600f830190808203611b50575b5050601081016010830191818303611b3a575b5050505060ff60401b195f5160206138045f395f51905f5254165f5160206138045f395f51905f52555160028152a180f35b601192839254905501549101555f808080611b08565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611af5565b5481546001600160a01b03199081166001600160a01b03928316179092556005838101549085018054841691831691909117905560068084015490850180548416918316919091179055600780840154908501805490931691161790555f80611aa8565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015611976565b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600501546040516001600160a01b039091168152602090f35b50346101f057611c97611c88366128c4565b6001600160a01b0392916131c4565b16803b156105395760405163485cc95560e01b815233600482015260248101839052828160448183865af180156106335761061e57602082604051908152f35b5034611ed457611ce636612904565b90925f5160206137e45f395f51905f52549365ffffffffffff600186015460201c1693611d196107066106da8742612abb565b604081360312611ed45760405194611d30866129d5565b8552602081019081356001600160401b038111611ed45781019636601f89011215611ed457873597611d6189612bb2565b98611d6f6040519a8b612a1f565b808a526020808b019160061b83010191368311611ed457602001905b828210611f3d575050508760208801526060955f965b8951881015611dc257600190611dba6107e08a8d612d49565b970196611da1565b9088611df1926020815191012090519060405190602082019283526040820152604081526108cc606082612a1f565b15611ed857600701546001600160a01b0316611e0e811515612bf8565b611e188383612c44565b823b15611ed457611e42925f928360405180968195829463af96299560e01b845260048401612c99565b03925af18015611ec957611e8d575b507f150b95dd488144ed3bb7967b3e9962e6b17de4b8d7c44ba639a4dd46ba1acd1f91611e7d91612c44565b9061099260405192839283612c99565b611e7d91945091611ebf5f7f150b95dd488144ed3bb7967b3e9962e6b17de4b8d7c44ba639a4dd46ba1acd1f94612a1f565b5f94915091611e51565b6040513d5f823e3d90fd5b5f80fd5b60405162461bcd60e51b815260206004820152603760248201527f6578656375746520736c61736820636f6d6d69746d656e74207369676e6174756044820152761c995cc81d995c9a599a58d85d1a5bdb8819985a5b1959604a1b6064820152608490fd5b6020604091611f4c3685612bc9565b815201910190611d8b565b34611ed4576020366003190112611ed457611f706128da565b611f78613191565b5f5160206137e45f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b34611ed4575f366003190112611ed45760205f5160206137e45f395f51905f525454604051908152f35b34611ed457611fe1366128c4565b908115801590612122575b156120e75760125f5160206137e45f395f51905f525461200e81541515612963565b0190805f528160205260ff60405f20541660038110156120d357612072577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f491515611fec565b34611ed4576040366003190112611ed4576004356001600160401b038111611ed45761215c903690600401612894565b6024356001600160401b038111611ed45761217b903690600401612894565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61285b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206137e45f395f51905f5254916121e383541515612963565b60605f915b8583101561281f578260051b840135609e1985360301811215611ed45784019060028601546040830135036127cc5761222460608301356134ac565b156127785794939695929190602061223d818301613024565b65ffffffffffff60405191612251836129d5565b843583521691829101528135600287015565ffffffffffff196003870154161760038601556122836080820182612e44565b9690946060995f925b898410156126d5578360051b88013560be1989360301811215611ed45788019b6122b58d612d75565b6001600160a01b03165f90815260138b016020526040902054156126785760068a01548d906001600160a01b031660606122ee83612d75565b92019182356001600160801b038116809103611ed45760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af18015611ec957612642575b506001600160a01b036123528f612d75565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b03906123bf906001600160a01b03612390866128f0565b166024870152602085013560448701526001600160a01b036123b4604087016128f0565b1660648701526134ef565b16608484015236829003601e190190608083013582811215611ed457830190602082359201946001600160401b038311611ed4576060830236038613611ed457826101049260c060a4840152520193905f905b8082106125f8575050509e9f939495969798999a9b9c9d9e60a082013590811215611ed4570190813560208301926001600160401b038211611ed4578160051b918236038513611ed4578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b8285106124ff575050505050505091815f8160209503925af1908115611ec9575f916124cd575b506124bc90600192612a40565b9b9a9998979695940192919061228c565b90506020813d82116124f7575b816124e760209383612a1f565b81010312611ed4575160016124af565b3d91506124da565b9193959750919395601f19838203018752873585811215611ed457820160208101358252906001600160a01b03612538604084016128f0565b1660208201526060820135603e193684900301811215611ed45782602091010191602083359301906001600160401b038411611ed4578336038213611ed4578360c092836040860152818486015260e08501375f60e085850101526001600160801b036125a7608083016134ef565b16606084015260a0810135608084015201359163ffffffff60e01b8316809303611ed45760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492612488565b90919460608060019288358152838060a01b0361261760208b016128f0565b1660208201526001600160801b0361263160408b016134ef565b166040820152019601920190612412565b6020813d8211612670575b8161265a60209383612a1f565b81010312611ed457518015158114612340575f80fd5b3d915061264d565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b965096975097939860019391509161276f9260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a161272660208201613024565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261047860a682612a1f565b919601916121e8565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610530908786612836946020815191012090613037565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b34611ed4575f366003190112611ed45760209060155f5160206137e45f395f51905f525401548152f35b9181601f84011215611ed4578235916001600160401b038311611ed4576020808501948460051b010111611ed457565b6040906003190112611ed4576004359060243590565b600435906001600160a01b0382168203611ed457565b35906001600160a01b0382168203611ed457565b906040600319830112611ed4576004356001600160401b038111611ed45760408184036003190112611ed45760040191602435906001600160401b038211611ed45761295291600401612894565b9091565b9060038210156120d35752565b1561296a57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b038211176129f057604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176129f057604052565b90601f801991011681019081106001600160401b038211176129f057604052565b602080612a6d928195946040519682889351918291018585015e8201908382015203018085520183612a1f565b565b15612a7657565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b91908203918211612ac857565b634e487b7160e01b5f52601160045260245ffd5b8115612ae6570490565b634e487b7160e01b5f52601260045260245ffd5b15612b0157565b60405162461bcd60e51b815260206004820152601f60248201527f636f6d6d69746d656e742065726120696e64657820697320696e76616c6964006044820152606490fd5b81810292918115918404141715612ac857565b91908201809211612ac857565b15612b6d57565b60405162461bcd60e51b815260206004820152601f60248201527f63757272656e742065726120686173206e6f74207374617274656420796574006044820152606490fd5b6001600160401b0381116129f05760051b60200190565b9190826040910312611ed457604051612be1816129d5565b6020808294612bef816128f0565b84520135910152565b15612bff57565b60405162461bcd60e51b815260206004820152601a60248201527f4d6964646c65776172652061646472657373206e6f74207365740000000000006044820152606490fd5b903590601e1981360301821215611ed457018035906001600160401b038211611ed457602001918160061b36038313611ed457565b60209081906001600160a01b03612c8f826128f0565b1684520135910152565b60208082528101839052604001915f5b818110612cb65750505090565b90919260408082612cc960019488612c79565b019401929101612ca9565b90604051918281549182825260208201905f5260205f20925f5b818110612d03575050612a6d92500383612a1f565b84546001600160a01b0316835260019485019487945060209093019201612cee565b9190811015612d355760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015612d355760209160051b010190565b60405190612d6a826129d5565b5f6020838281520152565b356001600160a01b0381168103611ed45790565b612da05f5160206137e45f395f51905f525461333d565b905f5b838110612db35750505050600190565b612dc1610d1c828685612d25565b6001600160a01b03165f9081526020849052604090205460ff1615612de857600101612da3565b505050505f90565b929190612dfc81612bb2565b93612e0a6040519586612a1f565b602085838152019160051b8101928311611ed457905b828210612e2c57505050565b60208091612e39846128f0565b815201910190612e20565b903590601e1981360301821215611ed457018035906001600160401b038211611ed457602001918160051b36038313611ed457565b359065ffffffffffff82168203611ed457565b9180602084016020855252604083019260408260051b82010193835f92605e1982360301905b858510612ec3575050505050505090565b90919293949596603f19828203018552873583811215611ed457606082019085016001600160a01b03612ef5826128f0565b16835265ffffffffffff612f0b60208301612e79565b1660208401526040810135601e1982360301811215611ed4570190602082359201926001600160401b038311611ed4578260061b36038413611ed4578260809260606040840152520191905f905b808210612f7a57505050602080600192990195019501939594929190612eb2565b90919260408082612f8d60019488612c79565b019401920190612f59565b358015158103611ed45790565b5f198114612ac85760010190565b6001600160a01b03168015613011575f5160206137c45f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff81168103611ed45790565b91909161305b6130468261333d565b9161ffff60086001850154920154169061348a565b92604051906020820190815260208252613076604083612a1f565b6130b2603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282612a1f565b5190205f925f5b86811015613186578060051b820135601e1983360301811215611ed45782018035906001600160401b038211611ed45760208101908236038213611ed4576040519061310f601f8501601f191660200183612a1f565b8382526020843692010111611ed4575f6020846131419561313895838601378301015285613644565b9092919261367e565b6001600160a01b03165f9081526020859052604090205460ff16613168575b6001016130b9565b9361317290612fa5565b938585036131605750505050505050600190565b505050505050505f90565b5f5160206137c45f395f51905f52546001600160a01b031633036131b157565b63118cdaa760e01b5f523360045260245ffd5b5f5160206137e45f395f51905f5254916131e083541515612963565b815f526012830160205260ff60405f20541660038110156120d35760020361329c5761323e60149160018060a01b03600586015416906040516020810191868352604082015260408152613235606082612a1f565b519020906136de565b9260018060a01b0384165f52601381016020528260405f2055016132628154612fa5565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161330681612a04565b828152826020820152015260405161331d81612a04565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b61334681613532565b1561335157600c0190565b60090190565b905f5b60018301908154811015613397575f91825260208083208201546001600160a01b031683528490526040909120805460ff1916905560010161335a565b50505f5b81518110156133dc576001906001600160a01b036133b98285612d49565b5116828060a01b03165f528360205260405f208260ff198254161790550161339b565b50600182018151916001600160401b0383116129f0576801000000000000000083116129f057815483835580841061344a575b50602001905f5260205f205f5b83811061342d575050505060020155565b82516001600160a01b03168183015560209092019160010161341c565b825f528360205f2091820191015b818110613465575061340f565b5f8155600101613458565b61347981613532565b156134845760090190565b600c0190565b61ffff613498921690612b46565b61270f8101809111612ac857612710900490565b905f194301438111612ac857805b6134c5575b505f9150565b80408381036134d657506001925050565b156134ea578015612ac8575f1901806134ba565b6134bf565b35906001600160801b0382168203611ed457565b60209060349492805192839101825e01916bffffffffffffffffffffffff199060601b16825260148201520190565b600e600b8201549101548082146135d557808210914210908115904210159181906135ce575b1561356d578261356757505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081613558565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f5160206138045f395f51905f525460401c161561363557565b631afcd79f60e31b5f5260045ffd5b81519190604183036136745761366d9250602082015190606060408401519301515f1a90613741565b9192909190565b50505f9160029190565b60048110156120d35780613690575050565b600181036136a75763f645eedf60e01b5f5260045ffd5b600281036136c2575063fce698f760e01b5f5260045260245ffd5b6003146136cc5750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561373257565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116137b8579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611ec9575f516001600160a01b038116156137ae57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ca190e66e4c20e74e5016824adb475fc4df8f4045aa91c537e538417fa9265e764736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"737:19225:121:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;737:19225:121;;7985:34:25;7981:146;;-1:-1:-1;737:19225:121;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;737:19225:121;-1:-1:-1;;;;;737:19225:121;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;8087:29:25;;737:19225:121;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;737:19225:121;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e71461286a5750806301b1d1561461212c5780631c149d8a14611fd357806328e24b3d14611fa95780633d43b41814611f5757806345c955a114611cd7578063527de0f914611c7657806365ecfea214611c3d5780636c2eb35014611940578063715018a6146118d757806382bdeaad146117bf57806384d22a4f1461175657806388f50cf01461171d5780638b1edf1e146116565780638da5cb5b146116215780638f381dbe146115db5780639067088e1461159257806396a2ddfa14611564578063977179d51461106f578063aaf0fe6a14610d44578063baaf020114610c47578063c13911e814610c03578063c9f16a1114610bd5578063ca1e781914610b54578063cacf66ab14610b1c578063e2f3792414610697578063e6fabc091461065e578063e7006a741461053d578063e97d3eb31461030a578063ed612f8c146102d4578063edc872251461028b578063efd81abc14610259578063f2fde38b1461022c578063f4f20ac0146101f35763facd743b1461019e575f80fd5b346101f05760203660031901126101f0576101b76128da565b6101ce5f5160206137e45f395f51905f525461333d565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346101f05760203660031901126101f0576102566102496128da565b610251613191565b612fb3565b80f35b50346101f057806003193601126101f057602061ffff60085f5160206137e45f395f51905f5254015416604051908152f35b50346101f057806003193601126101f05760206102cc5f5160206137e45f395f51905f525461ffff600860016102c08461333d565b0154920154169061348a565b604051908152f35b50346101f057806003193601126101f057602060016103005f5160206137e45f395f51905f525461333d565b0154604051908152f35b50346101f05760403660031901126101f057600435906001600160401b0382116101f057366023830112156101f0578160040135916001600160401b038311610539573660248460061b83010111610539576024356001600160401b038111610535579061037d84923690600401612894565b935f5160206137e45f395f51905f52549261039a84541515612963565b606095829360128601975b87861015610518578560061b84016024810135918287528a60205260ff6040882054166003811015610504576001036104a157600192610454604461048194016103ee81612f98565b1561048957828a528d60205260408a20600260ff1982541617905560158c016104178154612fa5565b90555b61042381612f98565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612f98565b6040519060208201928352151560f81b604082015260218152610478604182612a1f565b51902090612a40565b9501946103a5565b828a528d60205260408a2060ff19815416905561041a565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926102569288610530936020815191012090613037565b612a6f565b8280fd5b5080fd5b50346101f05760603660031901126101f0576105576128da565b6024359061059f6044359161056c83856131c4565b93604051936020850191825260408501526040845261058c606085612a1f565b92519092206001600160a01b03926136de565b16803b156105355760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156106535761063e575b5050813b15610535576040519063485cc95560e01b82523360048301526024820152828160448183865af180156106335761061e575b602082604051908152f35b610629838092612a1f565b6105395781610613565b6040513d85823e3d90fd5b8161064891612a1f565b61053557825f6105dd565b6040513d84823e3d90fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101f0576106a636612904565b5f5160206137e45f395f51905f52939193549365ffffffffffff600186015460201c169361070e6107066106da8742612abb565b966107006106ed60108b0154809a612adc565b8535996106fb828c14612afa565b612b46565b90612b59565b421015612b66565b6040813603126109ad5760405194610725866129d5565b8552602081019081356001600160401b038111610b185781019636601f89011215610b185787359761075689612bb2565b986107646040519a8b612a1f565b808a526020808b019160051b83010191368311610b14576020819a96959899979a01915b838310610a165750505050876020840152606092845b8951861015610899576107b1868b612d49565b5198895194604060208c01519b01519860609584965b8b51881015610818576001906108106107e08a8f612d49565b51916108026020858060a01b0385511694015160405194859360208501613503565b03601f198101835282612a1f565b9701966107c7565b6020949a9b508491975098603a92986001969d979e61088a959b848151910120906040519784899551918291018787015e8401926bffffffffffffffffffffffff199060601b168584015265ffffffffffff60d01b9060d01b166034830152848201520301601a810184520182612a1f565b9601949790969593929561079e565b888488856108f38c878b6020815191012090519060405190602082019283526040820152604081526108cc606082612a1f565b519020956040516020810190888252602081526108ea604082612a1f565b51902084613037565b156109b1576007015484906001600160a01b0316610912811515612bf8565b61091c8484612e44565b823b156109ad576109469284928360405180968195829463029c425360e21b845260048401612e8c565b03925af1801561065357610998575b50507ff30508a098ff6e1e1f6a40c8df7c0d7f84a7a50f74507a1cec3b4967073338ac9161098291612e44565b9061099260405192839283612e8c565b0390a280f35b816109a291612a1f565b6109ad578385610955565b8380fd5b60405162461bcd60e51b815260206004820152603760248201527f7265717565737420736c61736820636f6d6d69746d656e74207369676e6174756044820152761c995cc81d995c9a599a58d85d1a5bdb8819985a5b1959604a1b6064820152608490fd5b829a97999895969a356001600160401b038111610b105782016060601f198236030112610b105760405190610a4a82612a04565b610a56602082016128f0565b8252610a6460408201612e79565b60208301526060810135906001600160401b038211610b0c5790602091010136601f82011215610b08578035610a9981612bb2565b91610aa76040519384612a1f565b81835260208084019260061b82010190368211610b0457602001915b818310610aea57505050918160209360408594015281520192019199959497989699610788565b6020604091610af93686612bc9565b815201920191610ac3565b8e80fd5b8b80fd5b8c80fd5b8a80fd5b8880fd5b8580fd5b50346101f057806003193601126101f057602065ffffffffffff60015f5160206137e45f395f51905f52540154821c16604051908152f35b50346101f057806003193601126101f057610b876001610b815f5160206137e45f395f51905f525461333d565b01612cd4565b90604051918291602083016020845282518091526020604085019301915b818110610bb3575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610ba5565b50346101f057806003193601126101f057602060025f5160206137e45f395f51905f52540154604051908152f35b50346101f05760203660031901126101f05760ff604060209260125f5160206137e45f395f51905f52540160043582528452205416610c456040518092612956565bf35b50346101f05760203660031901126101f0576004356001600160401b03811161053957610c78903690600401612894565b905f5160206137e45f395f51905f525490610c9283612bb2565b91610ca06040519384612a1f565b838352610cac84612bb2565b602084019490601f19013686376013869201915b818110610d0b57868587604051928392602084019060208552518091526040840192915b818110610cf2575050500390f35b8251845285945060209384019390920191600101610ce4565b80610d21610d1c6001938588612d25565b612d75565b828060a01b03165f528360205260405f2054610d3d8288612d49565b5201610cc0565b50346101f057610d5336612904565b92915f5160206137e45f395f51905f52549165ffffffffffff600184015460201c1694610d808642612abb565b610d8f60108601548092612adc565b966020850135976001810180911161105b5788036110035761070088610db493612b46565b91610dc3601186015484612abb565b4210610fbe57610dd285613470565b944260028701541015610f5e57604085360312610f5a5760405197610df6896129d5565b85356001600160401b038111610b1457860136601f82011215610b14576020610e26839236908381359101612df0565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f3b575050506020828c610e6593610e8a9a9b9c9d9e52038084520182612a1f565b5190206040516020810191825260208152610e81604082612a1f565b51902090613037565b15610edb57610ed1817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ecb610ec486602097612e44565b3691612df0565b90613357565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e3f565b8680fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b88526011600452602488fd5b50346101f0576101003660031901126101f05761108a6128da565b6024356001600160a01b0381169190829003610535576044356001600160a01b03811692908390036109ad576064356001600160a01b0381169190829003611560576084356001600160a01b0381169290839003610b185760c43560a43560e4356001600160401b038111610b1457611107903690600401612894565b9590935f5160206138045f395f51905f52549760ff8960401c1615986001600160401b03811680159081611558575b600114908161154e575b159081611545575b506115365767ffffffffffffffff1981166001175f5160206138045f395f51905f525561118791908a61150a575b5061117f613619565b610251613619565b42156114b457831561145e57838311156113fd5760409889516111aa8b82612a1f565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526111de613191565b5190205f1981019081116113e9578a519060208201908152602082526112048c83612a1f565b60ff19915190201696875f5160206137e45f395f51905f52556112256132f8565b8051895560018901908c69ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff1916171790558a51608081018181106001600160401b038211176113d5578c5281815260208101839052808c018490526060018490526004880180546001600160a01b03199081166001600160a01b03938416179091556005890180548216938316939093179092556006880180548316938216939093179092556007870180549091169190921617905560088401805461ffff1916611a0a17905561137b9493926009926113749261130c612d5d565b506509184e72a00060208b51611321816129d5565b639502f90081520152600f860180546001600160c01b0319166d09184e72a000000000009502f9001790558951829060209061135c816129d5565b83815201526010860155601185015542943691612df0565b9101613357565b611383575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206138045f395f51905f5254165f5160206138045f395f51905f52555160018152a180f35b634e487b7160e01b8e52604160045260248efd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f5160206138045f395f51905f52555f611176565b63f92ee8a960e01b8c5260048cfd5b9050155f611148565b303b159150611140565b8b9150611136565b8480fd5b50346101f057806003193601126101f057602060145f5160206137e45f395f51905f52540154604051908152f35b50346101f05760203660031901126101f0576115ac6128da565b60135f5160206137e45f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101f05760203660031901126101f057600435906001600160401b0382116101f05760206116176116113660048601612894565b90612d89565b6040519015158152f35b50346101f057806003193601126101f0575f5160206137c45f395f51905f52546040516001600160a01b039091168152602090f35b50346101f057806003193601126101f0575f5160206137e45f395f51905f525480546116d85763ffffffff60018201541640908115611693575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101f057806003193601126101f05761176f612d5d565b506040600f5f5160206137e45f395f51905f5254016001600160801b03825191611798836129d5565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101f05760203660031901126101f0576004356001600160401b038111610539576117f0903690600401612894565b905f5160206137e45f395f51905f52549061180a83612bb2565b916118186040519384612a1f565b83835261182484612bb2565b602084019490601f19013686376012869201915b81811061188d57868587604051928392602084019060208552518091526040840192915b81811061186a575050500390f35b919350916020808261187f6001948851612956565b01940191019184939261185c565b611898818386612d25565b3587528260205260ff6040882054166118b18287612d49565b60038210156118c35752600101611838565b634e487b7160e01b89526021600452602489fd5b50346101f057806003193601126101f0576118f0613191565b5f5160206137c45f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101f057806003193601126101f057611959613191565b5f5160206138045f395f51905f525460ff8160401c168015611c29575b611c1a57680100000000000000029068ffffffffffffffffff1916175f5160206138045f395f51905f52555f5160206137e45f395f51905f525460409081516119bf8382612a1f565b6017815260208101907f726f757465722e73746f726167652e526f75746572563200000000000000000082526119f3613191565b5190205f198101908111611c0657916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d293825190848201908152848252611a3d8483612a1f565b60ff19915190201690815f5160206137e45f395f51905f5255611a5e6132f8565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff191617179055600481016004830190808203611ba2575b505061ffff600882015416600883019061ffff19825416179055611ae46001611ad08361333d565b01611adb4291612cd4565b60098501613357565b600f8101600f830190808203611b50575b5050601081016010830191818303611b3a575b5050505060ff60401b195f5160206138045f395f51905f5254165f5160206138045f395f51905f52555160028152a180f35b601192839254905501549101555f808080611b08565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611af5565b5481546001600160a01b03199081166001600160a01b03928316179092556005838101549085018054841691831691909117905560068084015490850180548416918316919091179055600780840154908501805490931691161790555f80611aa8565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015611976565b50346101f057806003193601126101f0575f5160206137e45f395f51905f5254600501546040516001600160a01b039091168152602090f35b50346101f057611c97611c88366128c4565b6001600160a01b0392916131c4565b16803b156105395760405163485cc95560e01b815233600482015260248101839052828160448183865af180156106335761061e57602082604051908152f35b5034611ed457611ce636612904565b90925f5160206137e45f395f51905f52549365ffffffffffff600186015460201c1693611d196107066106da8742612abb565b604081360312611ed45760405194611d30866129d5565b8552602081019081356001600160401b038111611ed45781019636601f89011215611ed457873597611d6189612bb2565b98611d6f6040519a8b612a1f565b808a526020808b019160061b83010191368311611ed457602001905b828210611f3d575050508760208801526060955f965b8951881015611dc257600190611dba6107e08a8d612d49565b970196611da1565b9088611df1926020815191012090519060405190602082019283526040820152604081526108cc606082612a1f565b15611ed857600701546001600160a01b0316611e0e811515612bf8565b611e188383612c44565b823b15611ed457611e42925f928360405180968195829463af96299560e01b845260048401612c99565b03925af18015611ec957611e8d575b507f150b95dd488144ed3bb7967b3e9962e6b17de4b8d7c44ba639a4dd46ba1acd1f91611e7d91612c44565b9061099260405192839283612c99565b611e7d91945091611ebf5f7f150b95dd488144ed3bb7967b3e9962e6b17de4b8d7c44ba639a4dd46ba1acd1f94612a1f565b5f94915091611e51565b6040513d5f823e3d90fd5b5f80fd5b60405162461bcd60e51b815260206004820152603760248201527f6578656375746520736c61736820636f6d6d69746d656e74207369676e6174756044820152761c995cc81d995c9a599a58d85d1a5bdb8819985a5b1959604a1b6064820152608490fd5b6020604091611f4c3685612bc9565b815201910190611d8b565b34611ed4576020366003190112611ed457611f706128da565b611f78613191565b5f5160206137e45f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b34611ed4575f366003190112611ed45760205f5160206137e45f395f51905f525454604051908152f35b34611ed457611fe1366128c4565b908115801590612122575b156120e75760125f5160206137e45f395f51905f525461200e81541515612963565b0190805f528160205260ff60405f20541660038110156120d357612072577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f491515611fec565b34611ed4576040366003190112611ed4576004356001600160401b038111611ed45761215c903690600401612894565b6024356001600160401b038111611ed45761217b903690600401612894565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61285b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206137e45f395f51905f5254916121e383541515612963565b60605f915b8583101561281f578260051b840135609e1985360301811215611ed45784019060028601546040830135036127cc5761222460608301356134ac565b156127785794939695929190602061223d818301613024565b65ffffffffffff60405191612251836129d5565b843583521691829101528135600287015565ffffffffffff196003870154161760038601556122836080820182612e44565b9690946060995f925b898410156126d5578360051b88013560be1989360301811215611ed45788019b6122b58d612d75565b6001600160a01b03165f90815260138b016020526040902054156126785760068a01548d906001600160a01b031660606122ee83612d75565b92019182356001600160801b038116809103611ed45760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af18015611ec957612642575b506001600160a01b036123528f612d75565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b03906123bf906001600160a01b03612390866128f0565b166024870152602085013560448701526001600160a01b036123b4604087016128f0565b1660648701526134ef565b16608484015236829003601e190190608083013582811215611ed457830190602082359201946001600160401b038311611ed4576060830236038613611ed457826101049260c060a4840152520193905f905b8082106125f8575050509e9f939495969798999a9b9c9d9e60a082013590811215611ed4570190813560208301926001600160401b038211611ed4578160051b918236038513611ed4578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b8285106124ff575050505050505091815f8160209503925af1908115611ec9575f916124cd575b506124bc90600192612a40565b9b9a9998979695940192919061228c565b90506020813d82116124f7575b816124e760209383612a1f565b81010312611ed4575160016124af565b3d91506124da565b9193959750919395601f19838203018752873585811215611ed457820160208101358252906001600160a01b03612538604084016128f0565b1660208201526060820135603e193684900301811215611ed45782602091010191602083359301906001600160401b038411611ed4578336038213611ed4578360c092836040860152818486015260e08501375f60e085850101526001600160801b036125a7608083016134ef565b16606084015260a0810135608084015201359163ffffffff60e01b8316809303611ed45760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492612488565b90919460608060019288358152838060a01b0361261760208b016128f0565b1660208201526001600160801b0361263160408b016134ef565b166040820152019601920190612412565b6020813d8211612670575b8161265a60209383612a1f565b81010312611ed457518015158114612340575f80fd5b3d915061264d565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b965096975097939860019391509161276f9260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a161272660208201613024565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261047860a682612a1f565b919601916121e8565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610530908786612836946020815191012090613037565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b34611ed4575f366003190112611ed45760209060155f5160206137e45f395f51905f525401548152f35b9181601f84011215611ed4578235916001600160401b038311611ed4576020808501948460051b010111611ed457565b6040906003190112611ed4576004359060243590565b600435906001600160a01b0382168203611ed457565b35906001600160a01b0382168203611ed457565b906040600319830112611ed4576004356001600160401b038111611ed45760408184036003190112611ed45760040191602435906001600160401b038211611ed45761295291600401612894565b9091565b9060038210156120d35752565b1561296a57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b038211176129f057604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176129f057604052565b90601f801991011681019081106001600160401b038211176129f057604052565b602080612a6d928195946040519682889351918291018585015e8201908382015203018085520183612a1f565b565b15612a7657565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b91908203918211612ac857565b634e487b7160e01b5f52601160045260245ffd5b8115612ae6570490565b634e487b7160e01b5f52601260045260245ffd5b15612b0157565b60405162461bcd60e51b815260206004820152601f60248201527f636f6d6d69746d656e742065726120696e64657820697320696e76616c6964006044820152606490fd5b81810292918115918404141715612ac857565b91908201809211612ac857565b15612b6d57565b60405162461bcd60e51b815260206004820152601f60248201527f63757272656e742065726120686173206e6f74207374617274656420796574006044820152606490fd5b6001600160401b0381116129f05760051b60200190565b9190826040910312611ed457604051612be1816129d5565b6020808294612bef816128f0565b84520135910152565b15612bff57565b60405162461bcd60e51b815260206004820152601a60248201527f4d6964646c65776172652061646472657373206e6f74207365740000000000006044820152606490fd5b903590601e1981360301821215611ed457018035906001600160401b038211611ed457602001918160061b36038313611ed457565b60209081906001600160a01b03612c8f826128f0565b1684520135910152565b60208082528101839052604001915f5b818110612cb65750505090565b90919260408082612cc960019488612c79565b019401929101612ca9565b90604051918281549182825260208201905f5260205f20925f5b818110612d03575050612a6d92500383612a1f565b84546001600160a01b0316835260019485019487945060209093019201612cee565b9190811015612d355760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015612d355760209160051b010190565b60405190612d6a826129d5565b5f6020838281520152565b356001600160a01b0381168103611ed45790565b612da05f5160206137e45f395f51905f525461333d565b905f5b838110612db35750505050600190565b612dc1610d1c828685612d25565b6001600160a01b03165f9081526020849052604090205460ff1615612de857600101612da3565b505050505f90565b929190612dfc81612bb2565b93612e0a6040519586612a1f565b602085838152019160051b8101928311611ed457905b828210612e2c57505050565b60208091612e39846128f0565b815201910190612e20565b903590601e1981360301821215611ed457018035906001600160401b038211611ed457602001918160051b36038313611ed457565b359065ffffffffffff82168203611ed457565b9180602084016020855252604083019260408260051b82010193835f92605e1982360301905b858510612ec3575050505050505090565b90919293949596603f19828203018552873583811215611ed457606082019085016001600160a01b03612ef5826128f0565b16835265ffffffffffff612f0b60208301612e79565b1660208401526040810135601e1982360301811215611ed4570190602082359201926001600160401b038311611ed4578260061b36038413611ed4578260809260606040840152520191905f905b808210612f7a57505050602080600192990195019501939594929190612eb2565b90919260408082612f8d60019488612c79565b019401920190612f59565b358015158103611ed45790565b5f198114612ac85760010190565b6001600160a01b03168015613011575f5160206137c45f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff81168103611ed45790565b91909161305b6130468261333d565b9161ffff60086001850154920154169061348a565b92604051906020820190815260208252613076604083612a1f565b6130b2603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282612a1f565b5190205f925f5b86811015613186578060051b820135601e1983360301811215611ed45782018035906001600160401b038211611ed45760208101908236038213611ed4576040519061310f601f8501601f191660200183612a1f565b8382526020843692010111611ed4575f6020846131419561313895838601378301015285613644565b9092919261367e565b6001600160a01b03165f9081526020859052604090205460ff16613168575b6001016130b9565b9361317290612fa5565b938585036131605750505050505050600190565b505050505050505f90565b5f5160206137c45f395f51905f52546001600160a01b031633036131b157565b63118cdaa760e01b5f523360045260245ffd5b5f5160206137e45f395f51905f5254916131e083541515612963565b815f526012830160205260ff60405f20541660038110156120d35760020361329c5761323e60149160018060a01b03600586015416906040516020810191868352604082015260408152613235606082612a1f565b519020906136de565b9260018060a01b0384165f52601381016020528260405f2055016132628154612fa5565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161330681612a04565b828152826020820152015260405161331d81612a04565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b61334681613532565b1561335157600c0190565b60090190565b905f5b60018301908154811015613397575f91825260208083208201546001600160a01b031683528490526040909120805460ff1916905560010161335a565b50505f5b81518110156133dc576001906001600160a01b036133b98285612d49565b5116828060a01b03165f528360205260405f208260ff198254161790550161339b565b50600182018151916001600160401b0383116129f0576801000000000000000083116129f057815483835580841061344a575b50602001905f5260205f205f5b83811061342d575050505060020155565b82516001600160a01b03168183015560209092019160010161341c565b825f528360205f2091820191015b818110613465575061340f565b5f8155600101613458565b61347981613532565b156134845760090190565b600c0190565b61ffff613498921690612b46565b61270f8101809111612ac857612710900490565b905f194301438111612ac857805b6134c5575b505f9150565b80408381036134d657506001925050565b156134ea578015612ac8575f1901806134ba565b6134bf565b35906001600160801b0382168203611ed457565b60209060349492805192839101825e01916bffffffffffffffffffffffff199060601b16825260148201520190565b600e600b8201549101548082146135d557808210914210908115904210159181906135ce575b1561356d578261356757505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081613558565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f5160206138045f395f51905f525460401c161561363557565b631afcd79f60e31b5f5260045ffd5b81519190604183036136745761366d9250602082015190606060408401519301515f1a90613741565b9192909190565b50505f9160029190565b60048110156120d35780613690575050565b600181036136a75763f645eedf60e01b5f5260045ffd5b600281036136c2575063fce698f760e01b5f5260045260245ffd5b6003146136cc5750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561373257565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116137b8579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611ec9575f516001600160a01b038116156137ae57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ca190e66e4c20e74e5016824adb475fc4df8f4045aa91c537e538417fa9265e764736f6c634300081c0033","sourceMap":"737:19225:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;:::i;:::-;5210:36;-1:-1:-1;;;;;;;;;;;737:19225:121;5210:36;:::i;:::-;:52;737:19225;;;;;;-1:-1:-1;737:19225:121;;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;4697:34;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;2357:1:24;737:19225:121;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;737:19225:121;;;;;;;;;;;;;;;;;5359:28;-1:-1:-1;;;;;;;;;;;737:19225:121;5359:28;737:19225;;;;;;;;;;;;;;;;;;;;;;5824:147;-1:-1:-1;;;;;;;;;;;737:19225:121;;5909:25;5862:38;:33;;;:::i;:::-;:38;737:19225;5909:25;;737:19225;;5824:147;;:::i;:::-;737:19225;;;;;;;;;;;;;;;;;;;;5633:41;:36;-1:-1:-1;;;;;;;;;;;737:19225:121;5633:36;:::i;:::-;:41;737:19225;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;737:19225:121;;10757:107;737:19225;;10765:38;;10757:107;:::i;:::-;737:19225;10925:13;;11093:19;;;;10920:838;10969:3;10940:27;;;;;;737:19225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11093:82;737:19225;;;11281:20;7388::123;11281::121;11671:76;11281:20;;;;;:::i;:::-;;;;737:19225;;;;;;;;;11368:24;737:19225;;;;;;;;11410:39;;;:41;737:19225;;11410:41;:::i;:::-;737:19225;;11277:279;11611:20;;;:::i;:::-;737:19225;;11575:57;737:19225;;;;;;11575:57;7388:20:123;:::i;:::-;737:19225:121;;7352:57:123;737:19225:121;7352:57:123;;737:19225:121;;;;;;;;;;;;7352:57:123;;;;;;:::i;:::-;737:19225:121;7342:68:123;;11671:76:121;;:::i;:::-;10969:3;737:19225;10925:13;;;11277:279;737:19225;;;;;;;;;;;;;;;;11277:279;;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;10940:27;;;11768:155;10940:27;;11789:78;10940:27;737:19225;;;;;11821:32;11789:78;;:::i;:::-;11768:155;:::i;737:19225::-;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;:::i;:::-;;;;2908:43:37;737:19225:121;;9030:30;;;;;:::i;:::-;737:19225;;;9127:32;737:19225;9127:32;;737:19225;;;;;;;;9127:32;;;737:19225;9127:32;;:::i;:::-;737:19225;;9117:43;;;-1:-1:-1;;;;;737:19225:121;2908:43:37;:::i;:::-;737:19225:121;16726:43;;;;;737:19225;;-1:-1:-1;;;16726:43:121;;-1:-1:-1;;;;;737:19225:121;;;;16726:43;;737:19225;;;;;;;;;;;16726:43;;;;;;;;;737:19225;9180:47;;;;;;;737:19225;;;;;;9180:47;;9207:10;737:19225;9180:47;;737:19225;;;;;9180:47;;737:19225;9180:47;;;;;;;;;;;737:19225;;;;;;;;;9180:47;;;;;;:::i;:::-;737:19225;;9180:47;;;;737:19225;;;;;;;;;16726:43;;;;;:::i;:::-;737:19225;;16726:43;;;;;737:19225;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;4345:23;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;12967:29;737:19225;12967:29;;;737:19225;;;;12949:15;13306:71;13226:70;12949:47;:15;;:47;:::i;:::-;13000:16;13258:38;12948:72;13000:16;;;737:19225;12948:72;;;:::i;:::-;737:19225;;13073:38;13065:82;13073:38;;;13065:82;:::i;:::-;13258:38;:::i;:::-;13226:70;;:::i;:::-;12949:15;13314:27;;13306:71;:::i;:::-;737:19225;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:13:123;;4650:3;737:19225:121;;4630:18:123;;;;;4706:10;;;;:::i;:::-;;737:19225:121;;;4812:8:123;737:19225:121;;4812:8:123;;737:19225:121;4842:12:123;;;5248:26;737:19225:121;5289:13:123;;5284:208;5323:3;737:19225:121;;5304:17:123;;;;;12967:29:121;5384:9:123;5423:58;5384:9;;;;:::i;:::-;;737:19225:121;5423:58:123;737:19225:121;;;;;;;;;5468:12:123;;625:4;737:19225:121;;5423:58:123;;;737:19225:121;5423:58:123;;;:::i;:::-;;737:19225:121;;5423:58:123;;;;;;:::i;:::-;5323:3;737:19225:121;5289:13:123;;;5304:17;737:19225:121;5304:17:123;;;;;;;;;737:19225:121;5304:17:123;;12967:29:121;5304:17:123;;;;4763:93;5304:17;;737:19225:121;;;;;5508:24:123;737:19225:121;;;;;;;;;;;;4763:93:123;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4763:93:123;;737:19225:121;4763:93:123;;;;;;;:::i;:::-;4650:3;737:19225:121;4615:13:123;;;;;;;;;;4630:18;;;;;13518:88:121;4630:18:123;;;737:19225:121;;;;;4883:25:123;625:4;;737:19225:121;;;3649:50:123;737:19225:121;3649:50:123;;737:19225:121;;;;;;;;3649:50:123;;;737:19225:121;3649:50:123;;:::i;:::-;737:19225:121;3639:61:123;;737:19225:121;;;;13560:32;;737:19225;;;;;13560:32;;;737:19225;13560:32;;:::i;:::-;737:19225;13550:43;;13518:88;;:::i;:::-;737:19225;;;13762:31;;737:19225;;;-1:-1:-1;;;;;737:19225:121;13803:70;13811:31;;;13803:70;:::i;:::-;14047:18;;;;:::i;:::-;14015:51;;;;;;737:19225;;;;;;;;;;;;;;;14015:51;;737:19225;14015:51;;;:::i;:::-;;;;;;;;;;;4610:257:123;14130:18:121;;14082:67;14130:18;;;;:::i;:::-;737:19225;14082:67;737:19225;;14082:67;;;;;:::i;:::-;;;;737:19225;;14015:51;;;;;:::i;:::-;737:19225;;14015:51;;;;737:19225;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4100:32;-1:-1:-1;;;;;;;;;;;737:19225:121;4100:32;737:19225;;;;;;;;;;;;;;;;;;;;;;;;5505:41;:36;-1:-1:-1;;;;;;;;;;;737:19225:121;5505:36;:::i;:::-;:41;737:19225;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;-1:-1:-1;737:19225:121;;;;;;;;;5505:41;737:19225;;;;;;;;;;;;;;;;;4228:30;-1:-1:-1;;;;;;;;;;;737:19225:121;4228:30;737:19225;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;;6210:22;-1:-1:-1;;;;;;;;;;;737:19225:121;6210:22;737:19225;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;737:19225:121;;;;7083:28;7015:13;7083:28;;7010:129;7030:23;;;;;;737:19225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:19225:121;;;;;;;;;7083:28;737:19225;;;7055:3;7112:15;;;7083:28;7112:15;;;;:::i;:::-;;:::i;:::-;737:19225;;;;;;-1:-1:-1;737:19225:121;;;;;-1:-1:-1;737:19225:121;;7074:54;;;;:::i;:::-;625:4:123;737:19225:121;7015:13;;737:19225;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;737:19225:121;9549:29;737:19225;9549:29;;;737:19225;;;;9531:15;:47;:15;;:47;:::i;:::-;9530:72;9582:16;;;737:19225;9530:72;;;:::i;:::-;9621:19;737:19225;9621:19;;737:19225;;9549:29;737:19225;;;;;;;9621:42;;737:19225;;9776:42;;9744:74;9776:42;;:::i;9744:74::-;9870:25;9855:40;9870:25;;;737:19225;9855:40;;:::i;:::-;9531:15;9836:59;737:19225;;10023:34;;;:::i;:::-;9531:15;;10075:28;;;737:19225;10075:46;737:19225;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6416:60:123;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;6416:60:123;737:19225:121;10284:88;737:19225;;;;;;6416:60:123;;;;;;;:::i;:::-;737:19225:121;6406:71:123;;737:19225:121;;;10326:32;;737:19225;;;;10326:32;;;737:19225;10326:32;;:::i;:::-;737:19225;10316:43;;10284:88;;:::i;:::-;737:19225;;;10459:66;10489:21;10541:40;10489:21;625:4:123;10489:21:121;;737:19225;10489:21;;:::i;:::-;737:19225;625:4:123;;:::i;:::-;10459:66:121;;:::i;:::-;737:19225;;;;;10541:40;737:19225;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;9549:29;737:19225;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;:::i;:::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;;4301:16:25;737:19225:121;-1:-1:-1;;;;;737:19225:121;;4726:16:25;;:34;;;;737:19225:121;;4790:16:25;:50;;;;737:19225:121;4855:13:25;:30;;;;737:19225:121;4851:91:25;;;-1:-1:-1;;737:19225:121;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;6961:1:25;;737:19225:121;;4979:67:25;;737:19225:121;6893:76:25;;;:::i;:::-;;;:::i;6961:1::-;1588:15:121;:19;737:19225;;1670:21;;737:19225;;1754:32;;;737:19225;;;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;737:19225:121;19830:27;;-1:-1:-1;;737:19225:121;;;;;;;;;19811:52;737:19225;19811:52;;737:19225;;;;19811:52;;;;;;:::i;:::-;737:19225;;;;19801:63;;:89;737:19225;;-1:-1:-1;;;;;;;;;;;737:19225:121;1972:17;;:::i;:::-;737:19225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;2022:66;;737:19225;;;2022:66;;;737:19225;;;;2022:66;737:19225;;;;1999:20;;737:19225;;-1:-1:-1;;;;;;737:19225:121;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:25;;;737:19225;;-1:-1:-1;;737:19225:121;;;;;2382:85;;737:19225;;2399:37;;625:4:123;;737:19225:121;;:::i;:::-;;722:18:123;737:19225:121;;;;;;:::i;:::-;495:13:123;737:19225:121;;7529:60:123;737:19225:121;2196:22;;;737:19225;;-1:-1:-1;;;;;;737:19225:121;;;;;;;;;;;;;;:::i;:::-;625:4:123;;;2283:47:121;625:4:123;2264:16:121;;;737:19225;625:4:123;;;737:19225:121;1588:15;737:19225;;625:4:123;;:::i;:::-;2399:37:121;;2382:85;:::i;:::-;5066:101:25;;737:19225:121;;;5066:101:25;737:19225:121;5142:14:25;737:19225:121;-1:-1:-1;;;737:19225:121;-1:-1:-1;;;;;;;;;;;737:19225:121;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;5142:14:25;737:19225:121;;;-1:-1:-1;;;737:19225:121;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;4979:67:25;-1:-1:-1;;737:19225:121;;;-1:-1:-1;;;;;;;;;;;737:19225:121;4979:67:25;;;4851:91;-1:-1:-1;;;4908:23:25;;737:19225:121;6498:23:25;4908;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;737:19225:121;;;;;;;;;;;;;;;;;;7244:36;-1:-1:-1;;;;;;;;;;;737:19225:121;7244:36;737:19225;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;:::i;:::-;6734:31;-1:-1:-1;;;;;;;;;;;737:19225:121;6734:31;:43;737:19225;;;;;;-1:-1:-1;737:19225:121;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;7795:26;;;737:19225;;7785:37;7841:25;;;737:19225;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;4580:35;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6082:25;-1:-1:-1;;;;;;;;;;;737:19225:121;6082:25;-1:-1:-1;;;;;737:19225:121;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;737:19225:121;;;;6561:19;6496:13;6561:19;;6491:120;6511:20;;;;;;737:19225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;6533:3;6587:12;;;;;:::i;:::-;737:19225;;;;;;;;;;;;6552:48;;;;:::i;:::-;737:19225;;;;;;;;;6496:13;;737:19225;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;737:19225:121;;-1:-1:-1;;;;;;737:19225:121;;;;;;;-1:-1:-1;;;;;737:19225:121;3975:40:24;737:19225:121;;3975:40:24;737:19225:121;;;;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;6431:44:25;;;;737:19225:121;6427:105:25;;737:19225:121;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;737:19225:121;19830:27;;-1:-1:-1;;737:19225:121;;;;;;;;;;6656:20:25;737:19225:121;;;19811:52;;;;737:19225;;;19811:52;;;;;;;:::i;:::-;737:19225;;;;19801:63;;:89;737:19225;;-1:-1:-1;;;;;;;;;;;737:19225:121;2762:17;;:::i;:::-;737:19225;;;;6593:4:25;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:23;;737:19225;2905:23;;737:19225;;;;;;;3101:28;;737:19225;3101:28;;;737:19225;;3101:28;3031;;737:19225;;;;;;;;;3439:140;6593:4:25;3511:36:121;;;:::i;:::-;:41;737:19225;3554:15;737:19225;;:::i;:::-;3469:40;;;3439:140;:::i;:::-;3676:25;;;;3648;;737:19225;;;;;;;3781:19;;;;;;3759;;737:19225;;;;;;;;;;;-1:-1:-1;;;737:19225:121;-1:-1:-1;;;;;;;;;;;737:19225:121;;-1:-1:-1;;;;;;;;;;;737:19225:121;;2535:1;737:19225;;6656:20:25;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;-1:-1:-1;;;;;737:19225:121;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;-1:-1:-1;;;;;;;737:19225:121;;;;;;;-1:-1:-1;;;;;;;737:19225:121;;;;;;;;;;;;;-1:-1:-1;;;;;;737:19225:121;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;-1:-1:-1;;;737:19225:121;;;;;;;;6427:105:25;-1:-1:-1;;;6498:23:25;;737:19225:121;6498:23:25;;6431:44;737:19225:121;2535:1;-1:-1:-1;;;;;737:19225:121;;6450:25:25;;6431:44;;737:19225:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;4462:35;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;8740:30;737:19225;;;:::i;:::-;-1:-1:-1;;;;;737:19225:121;;8740:30;:::i;:::-;737:19225;8781:50;;;;;737:19225;;-1:-1:-1;;;8781:50:121;;8808:10;737:19225;8781:50;;737:19225;;;;;;;;;8781:50;737:19225;;8781:50;;;;;;;;;737:19225;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;737:19225:121;14389:29;737:19225;14389:29;;;737:19225;;;;14371:15;14728:71;14648:70;14371:47;:15;;:47;:::i;14728:71::-;737:19225;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5972:13:123;737:19225:121;5967:253:123;6016:3;737:19225:121;;5987:27:123;;;;;14389:29:121;6083:19:123;6137:72;6083:19;;;;:::i;6137:72::-;6016:3;737:19225:121;5972:13:123;;;5987:27;;;14940:88:121;5987:27:123;737:19225:121;;;;;6236:29:123;625:4;;737:19225:121;;;4197:59:123;737:19225:121;4197:59:123;;737:19225:121;;;;;;;;4197:59:123;;;737:19225:121;4197:59:123;;:::i;14940:88:121:-;737:19225;;;15184:31;;737:19225;-1:-1:-1;;;;;737:19225:121;15225:70;15233:31;;;15225:70;:::i;:::-;15469:27;;;;:::i;:::-;15437:60;;;;;;737:19225;;;;;;;;;;;;;;;15437:60;;737:19225;15437:60;;;:::i;:::-;;;;;;;;;;;5967:253:123;15561:27:121;15513:76;15561:27;;;;:::i;:::-;737:19225;15513:76;737:19225;;15513:76;;;;;:::i;15437:60::-;15561:27;15437:60;;;;;737:19225;15513:76;15437:60;;:::i;:::-;737:19225;15437:60;;;;;;;737:19225;;;;;;;;;15437:60;737:19225;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;737:19225:121;;7513:23;737:19225;;-1:-1:-1;;;;;;737:19225:121;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;;;;;;;;;;;;:::i;:::-;8084:16;;;;;:36;;;737:19225;;;;8338:19;-1:-1:-1;;;;;;;;;;;737:19225:121;8199:107;737:19225;;8207:38;;8199:107;:::i;:::-;8338:19;737:19225;;;;;;;;;;;;;;;;;;;;;8573:45;737:19225;;;;;;;;;;;8523:34;737:19225;;;;;;;;;;;;;;;;;8573:45;737:19225;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;8084:36;8104:11;737:19225;8104:11;:16;;8084:36;;737:19225;;;;;;-1:-1:-1;;737:19225:121;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;:::i;:::-;3321:69:57;;637:66:54;3321:69:57;1413:93:54;;1624:4;637:66;3550:68:57;-1:-1:-1;;;;;;;;;;;737:19225:121;;12135:107;737:19225;;12143:38;;12135:107;:::i;:::-;737:19225;;12299:262;12349:3;12319:28;;;;;;737:19225;;;;;;;;;;;;;;;;;;;16978:27;;;;737:19225;;17014:39;;737:19225;16978:75;737:19225;;17135:58;737:19225;17159:33;;737:19225;17135:58;:::i;:::-;737:19225;;;17453:26;;;;;;;737:19225;17453:26;;;;;:::i;:::-;737:19225;;;;;;;:::i;:::-;;;625:4:123;;737:19225:121;17406:74;;;;737:19225;;;16978:27;;;737:19225;;;;;;;;;;;;;17550:28;;;;;;:::i;:::-;18061:30;;;737:19225;18107:13;737:19225;18102:592;18147:3;18122:23;;;;;;737:19225;;;;;;;;;;;;;;;;;;;18293:18;;;;:::i;:::-;-1:-1:-1;;;;;737:19225:121;;;;;18264:28;;;737:19225;;;;;;18264:53;737:19225;;18410:32;;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;18453:18;737:19225;18453:18;:::i;:::-;18473:25;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;-1:-1:-1;;;18397:102:121;;-1:-1:-1;;;;;737:19225:121;;;;18397:102;;737:19225;;;;;;;;;;18397:102;;737:19225;;;;18397:102;;;;;;;;18147:3;-1:-1:-1;;;;;;18547:18:121;737:19225;18547:18;:::i;:::-;737:19225;;-1:-1:-1;;;18539:62:121;;737:19225;;18539:62;;737:19225;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;-1:-1:-1;;;;;737:19225:121;;;:::i;:::-;;;;;;;;;;18397:102;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;737:19225:121;;17550:28;737:19225;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;;;;18539:62;;;;;;;;;737:19225;18539:62;737:19225;18539:62;;;;;;;;;;737:19225;18539:62;;;737:19225;18636:47;;;1624:4:54;18636:47:121;;:::i;:::-;18147:3;18107:13;;;;;;;737:19225;;18107:13;;;;18539:62;;;737:19225;18539:62;;;;;;;;;737:19225;18539:62;;;:::i;:::-;;;737:19225;;;;;1624:4:54;18539:62:121;;;;;-1:-1:-1;18539:62:121;;737:19225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;17550:28;737:19225;;;:::i;:::-;;;;;;;;;;17550:28;737:19225;;;;;;;;;;;;;;;;;;;;;1624:4:54;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1624:4:54;737:19225:121;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;:::i;:::-;;;;;;;;;;;;;;18397:102;737:19225;18397:102;;;;;;;;;737:19225;18397:102;;;:::i;:::-;;;737:19225;;;;;;;;;;18397:102;737:19225;;;;18397:102;;;-1:-1:-1;18397:102:121;;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;18397:102;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;18122:23;;;;;;;;;1624:4:54;18122:23:121;;;;12475:75;18122:23;737:19225;;;;;18711:28;737:19225;17595:37;737:19225;;;;;;;17595:37;17723:26;737:19225;17453:26;;17723;:::i;:::-;737:19225;;;;6758:98:123;737:19225:121;6758:98:123;;737:19225:121;;;;;;;;;;;;;;;;;17014:39;;737:19225;;;;;17159:33;737:19225;;;;;;;;;;6758:98:123;;;;;;:::i;12475:75:121:-;12304:13;;737:19225;;12304:13;;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;18397:102;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;18397:102;737:19225;;;-1:-1:-1;;;737:19225:121;;;;;;;12319:28;12592:79;12319:28;;;12571:156;12319:28;737:19225;;;;;12624:33;12592:79;;:::i;12571:156::-;737:19225;637:66:54;3550:68:57;737:19225:121;1413:93:54;1465:30;;;737:19225:121;1465:30:54;737:19225:121;;1465:30:54;737:19225:121;;;;;;-1:-1:-1;;737:19225:121;;;;;;7371:42;-1:-1:-1;;;;;;;;;;;737:19225:121;7371:42;737:19225;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;737:19225:121;;;;;;:::o;:::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;:::o;:::-;;;-1:-1:-1;;737:19225:121;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;-1:-1:-1;;737:19225:121;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;:::o;:::-;;;;-1:-1:-1;737:19225:121;;;;;-1:-1:-1;737:19225:121;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;;;;737:19225:121;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:19225:121;;-1:-1:-1;737:19225:121;;-1:-1:-1;737:19225:121;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;737:19225:121;;;;;;;:::o;:::-;;-1:-1:-1;;;;;737:19225:121;;;;;;;:::o;4744:375::-;4881:36;-1:-1:-1;;;;;;;;;;;737:19225:121;4881:36;:::i;:::-;4933:13;737:19225;4948:22;;;;;;5101:11;;;;737:19225;4744:375;:::o;4972:3::-;5019:14;;;;;;:::i;:::-;-1:-1:-1;;;;;737:19225:121;-1:-1:-1;737:19225:121;;;;;;;;;;;;;4995:39;4991:90;;737:19225;;4933:13;;4991:90;5054:12;;;;737:19225;5054:12;:::o;625:4:123:-;;;;;;;:::i;:::-;737:19225:121;;;;;;;:::i;:::-;625:4:123;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;737:19225:121;;;;;:::i;:::-;625:4:123;;;;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;737:19225:121;;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;737:19225:121;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;737:19225:121;;-1:-1:-1;;;;;;737:19225:121;;;;;;;-1:-1:-1;;;;;737:19225:121;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;737:19225:121;;3509:1:24;3534:31;737:19225:121;;;;;;;;;;:::o;8630:897:123:-;;;;8909:97;8838:28;;;:::i;:::-;8929:15;737:19225:121;8953:25:123;8929:15;;;737:19225:121;8953:25:123;;737:19225:121;;8909:97:123;;:::i;:::-;737:19225:121;;;9081:27:123;;;;737:19225:121;;;9081:27:123;;;;737:19225:121;9081:27:123;;:::i;:::-;2831:45:59;737:19225:121;;;2831:45:59;;9081:27:123;2831:45:59;;737:19225:121;;;;;;9043:4:123;737:19225:121;;;;;;;;;;;;;;;;;;;;2831:45:59;;737:19225:121;;2831:45:59;;;;;;:::i;:::-;737:19225:121;2821:56:59;;737:19225:121;9162:13:123;737:19225:121;9201:3:123;9177:22;;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;9081:27:123;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;737:19225:121;9081:27:123;737:19225:121;;;:::i;:::-;;;;9081:27:123;737:19225:121;;;;;;;;;9081:27:123;737:19225:121;3927:8:58;737:19225:121;3871:27:58;737:19225:121;;;;;;;;;3871:27:58;;:::i;:::-;3927:8;;;;;:::i;:::-;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;9337:151:123;;9201:3;8929:15;737:19225:121;9162:13:123;;9337:151;9390:17;;;;:::i;:::-;:30;;;;9337:151;9386:88;9444:11;;;;;;;8929:15;9444:11;:::o;9177:22::-;;;;;;;;737:19225:121;8630:897:123;:::o;2658:162:24:-;-1:-1:-1;;;;;;;;;;;737:19225:121;-1:-1:-1;;;;;737:19225:121;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;737:19225:121;;-1:-1:-1;2763:40:24;15638:887:121;-1:-1:-1;;;;;;;;;;;737:19225:121;;15774:107;737:19225;;15782:38;;15774:107;:::i;:::-;737:19225;-1:-1:-1;737:19225:121;15913:19;;;737:19225;;;;-1:-1:-1;737:19225:121;;;;;;;;;15951:24;15913:62;737:19225;;2908:43:37;16410:33:121;737:19225;;;;;;16264:32;;;737:19225;;;;;;16308:32;;737:19225;;;;;;;;;16308:32;;;;;;:::i;:::-;737:19225;16298:43;;2908::37;;:::i;:::-;16353:37:121;737:19225;;;;;;;-1:-1:-1;737:19225:121;16353:28;;;737:19225;;;;-1:-1:-1;737:19225:121;;16410:33;:35;737:19225;;16410:35;:::i;:::-;737:19225;;;;-1:-1:-1;;;;;737:19225:121;;;;16461:32;;737:19225;;16461:32;15638:887;:::o;737:19225::-;;;-1:-1:-1;;;737:19225:121;;;;;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;7985:169:123;-1:-1:-1;737:19225:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;625:4:123;;737:19225:121;8108:12:123;737:19225:121;;8072:75:123;;737:19225:121;;8130:15:123;737:19225:121;;8072:75:123;;737:19225:121;7985:169:123;:::o;9533:318::-;9652:47;;;:::i;:::-;;;;9722:37;;9715:44;:::o;9648:197::-;9797:37;;9790:44;:::o;18752:618:121:-;;18940:1;18972:3;737:19225;18947:16;;737:19225;;;18943:27;;;;;18940:1;737:19225;;;;;;;;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;-1:-1:-1;;737:19225:121;;;;;18928:13;;18943:27;;;18940:1;19147:3;737:19225;;19120:25;;;;;737:19225;;-1:-1:-1;;;;;19187:17:121;737:19225;19187:17;;:::i;:::-;737:19225;;;;;;;;-1:-1:-1;737:19225:121;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;;19105:13;;19120:25;;737:19225;19272:16;;737:19225;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;;;;19100:163;737:19225;;;;18940:1;737:19225;;18940:1;737:19225;18940:1;737:19225;;;;;;19315:28;;;;;;737:19225;18752:618::o;737:19225::-;;;-1:-1:-1;;;;;737:19225:121;;;;;;;;;;;;;;;;18940:1;737:19225;;;18940:1;737:19225;;;;;;;;;;;;;;;;18940:1;737:19225;;;;;;9857:319:123;9977:47;;;:::i;:::-;;;;10047:37;;10040:44;:::o;9973:197::-;10122:37;;10115:44;:::o;11309:285::-;737:19225:121;11524:47:123;11309:285;737:19225:121;11524:47:123;;:::i;:::-;11574:4;737:19225:121;;;;;;;11582:5:123;737:19225:121;;11309:285:123;:::o;6879:340::-;;737:19225:121;;6977:12:123;737:19225:121;6977:12:123;737:19225:121;;;;6960:230:123;6995:5;;;6960:230;-1:-1:-1;737:19225:121;;-1:-1:-1;6879:340:123:o;7002:3::-;7035:12;;7065:11;;;;;-1:-1:-1;6992:1:123;;-1:-1:-1;;7096:11:123:o;7061:119::-;7132:8;7128:52;;737:19225:121;;;;-1:-1:-1;;737:19225:121;;6965:28:123;;7128:52;7160:5;;737:19225:121;;;-1:-1:-1;;;;;737:19225:121;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10399:904:123:-;10649:54;10571;;;737:19225:121;10649:54:123;;737:19225:121;10777:10:123;;;737:19225:121;;10853:9:123;;;10532:15;;-1:-1:-1;10885:9:123;;;10532:15;;-1:-1:-1;10917:9:123;11029:14;;;;;10399:904;737:19225:121;;;11266:30:123;;;11259:37;;10399:904;:::o;11266:30::-;11281:14;;10399:904;-1:-1:-1;10399:904:123:o;737:19225:121:-;;;-1:-1:-1;;;737:19225:121;;;10649:37:123;737:19225:121;;;;;;;;;;;;;-1:-1:-1;;;737:19225:121;;;;;;;11029:14:123;;;;;737:19225:121;;;;;;;;;;10649:37:123;737:19225:121;;;;;;;;;;;;;;7084:141:25;737:19225:121;-1:-1:-1;;;;;;;;;;;737:19225:121;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;2129:778:58;737:19225:121;;;2129:778:58;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:58;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;7280:532::-;737:19225:121;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;737:19225:121;7462:38:58;;737:19225:121;;7523:23:58;;;7375:20;7523:23;737:19225:121;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;737:19225:121;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;737:19225:121;;;7375:20:58;7763:32;3384:974:37;3673:585;3384:974;3673:585;;;;;;;-1:-1:-1;3673:585:37;;;;;;;;-1:-1:-1;3673:585:37;737:19225:121;-1:-1:-1;;;;;737:19225:121;;4271:22:37;4267:85;;3384:974::o;4267:85::-;4316:25;;;-1:-1:-1;4316:25:37;;-1:-1:-1;4316:25:37;5203:1551:58;;;6283:66;6270:79;;6266:164;;737:19225:121;;;;;;-1:-1:-1;737:19225:121;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;737:19225:121;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"01b1d156","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","commitExecuteSlash((uint256,(address,uint256)[]),bytes[])":"45c955a1","commitRequestSlash((uint256,(address,uint48,(address,uint256)[])[]),bytes[])":"e2f37924","commitValidators((address[],uint256),bytes[])":"aaf0fe6a","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32)":"527de0f9","createProgramWithDecoder(address,bytes32,bytes32)":"e7006a74","genesisBlockHash()":"28e24b3d","genesisTimestamp()":"cacf66ab","initialize(address,address,address,address,address,uint256,uint256,address[])":"977179d5","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","middleware()":"f4f20ac0","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitmentHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"slashId\",\"type\":\"tuple[]\"}],\"name\":\"ExecuteSlashCommitmentProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTimestamp\",\"type\":\"uint256\"}],\"name\":\"NextEraValidatorsCommitted\",\"type\":\"event\"},{\"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\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitmentHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"slashData\",\"type\":\"tuple[]\"}],\"name\":\"RequestSlashCommitmentProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"slashIdentifiers\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.ExecuteSlashCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitExecuteSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"slashes\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.RequestSlashCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitRequestSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_middleware\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_eraDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_electionDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"ExecuteSlashCommitmentProcessed(bytes32,(address,uint256)[])\":{\"details\":\"Emitted when a slash request is executed by the middleware.\",\"params\":{\"slashId\":\"An array of SlashIdentifier structures containing details of the slash execution.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"NextEraValidatorsCommitted(uint256)\":{\"details\":\"This is an *informational* and *request* event, signaling that validators has been set for the next era.\",\"params\":{\"startTimestamp\":\"timestamp when the new era starts.\"}},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"RequestSlashCommitmentProcessed(bytes32,(address,uint48,(address,uint256)[])[])\":{\"details\":\"Emitted when a slash request is processed by the middleware.\",\"params\":{\"slashData\":\"An array of SlashData structures containing details of the slash request.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"}},\"kind\":\"dev\",\"methods\":{\"commitValidators((address[],uint256),bytes[])\":{\"details\":\"Set validators for the next era.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"NextEraValidatorsCommitted(uint256)\":{\"notice\":\"Emitted when validators for the next era has been set.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79\",\"dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889\",\"dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5\",\"dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"lib/symbiotic-core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/symbiotic-core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"lib/symbiotic-core/src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/symbiotic-core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56\",\"dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d\",\"dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3\",\"dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Middleware.sol\":{\"keccak256\":\"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61\",\"dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th\"]},\"src/Router.sol\":{\"keccak256\":\"0xac310f8bb2d6efaee9dcb81624e0ed2d1a6e3efa82cae82cc40087af60fcccde\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://98472baba6c48a64de9724f8e1b917fff3b53e5ab8e0250a66ff7f291905c3e7\",\"dweb:/ipfs/QmNjieLL5PJt7bSTqSjTYDvZkhZvhjhzdXDaBfBuzNKvuX\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52\",\"dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3\",\"dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"commitmentHash","type":"bytes32","indexed":true},{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"slashId","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"indexed":false}],"type":"event","name":"ExecuteSlashCommitmentProcessed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"startTimestamp","type":"uint256","indexed":false}],"type":"event","name":"NextEraValidatorsCommitted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"commitmentHash","type":"bytes32","indexed":true},{"internalType":"struct IMiddleware.SlashData[]","name":"slashData","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}],"indexed":false}],"type":"event","name":"RequestSlashCommitmentProcessed","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct Gear.CodeCommitment[]","name":"_codeCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"struct Gear.ExecuteSlashCommitment","name":"commitment","type":"tuple","components":[{"internalType":"uint256","name":"eraIndex","type":"uint256"},{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"slashIdentifiers","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitExecuteSlash"},{"inputs":[{"internalType":"struct Gear.RequestSlashCommitment","name":"commitment","type":"tuple","components":[{"internalType":"uint256","name":"eraIndex","type":"uint256"},{"internalType":"struct IMiddleware.SlashData[]","name":"slashes","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitRequestSlash"},{"inputs":[{"internalType":"struct Gear.ValidatorsCommitment","name":"commitment","type":"tuple","components":[{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"eraIndex","type":"uint256"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address","name":"_middleware","type":"address"},{"internalType":"uint256","name":"_eraDuration","type":"uint256"},{"internalType":"uint256","name":"_electionDuration","type":"uint256"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"commitValidators((address[],uint256),bytes[])":{"details":"Set validators for the next era."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae","urls":["bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0","dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x534bf5c25d6003a8ce50b400d20fa460c03169ad7baa90d47a912917c36dfe2b","urls":["bzz-raw://cc0cc39c40ea23d3c46e8517e19ebdd877719d3159fa032f2a91802cdd205c79","dweb:/ipfs/QmSoNh7HTkD4TJcBkBKSGSPMMpLUZKE7s9f2G6mjdaJywg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0x9303ef5a2beb555e52ce56598de205ce07ca8988fc67d073687c06cb8fc973d1","urls":["bzz-raw://8b2e48fb42844c25e6cb38e7cfa1d91dcdc054613fd10f608833dbc677acf889","dweb:/ipfs/QmT4HQxbgpWA3fZnK4dY3eXHNCoyBvpvzNq5k7eSt5mR5t"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9","urls":["bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5","dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x1d103797341c8f5269ec5f514c6a63898e4c86a688976a987a35105d987039e4","urls":["bzz-raw://8dfc0a248e940d436769c8ec4af7bc6d0cbb68aa822d6911626fd9ec58c49f56","dweb:/ipfs/QmZrQPYqvXseAL8PyNbvoJCqZ91tx7Ykano24E13A3KHfB"],"license":"UNLICENSED"},"src/IMirror.sol":{"keccak256":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0xdc8493f52a809ac9470823d4c13f329845a10aa90a73bddd791137f3bd8849ac","urls":["bzz-raw://fb625d21f8554f1a973a4ace5b5db4cc696b71605592a22eab44576d020ff70d","dweb:/ipfs/Qma98jtpbJ4zYoBHwsCCUtgkeEVZsPFYUZiGwnPSpKsdqx"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x54c9d34f2933a80e42ba97befcbdbdbeb65d250260a61952c06b253294b6ee5a","urls":["bzz-raw://9e56b9ddf881f8c889c79bba2ca3cf5318b201ece0a25ad909518cc4c8d0d2d3","dweb:/ipfs/QmPSAs2nYX61qS9L5cmTymuXwcnRM5c1qcMA7c4pZyFckn"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Middleware.sol":{"keccak256":"0x79427deababa4903a7f2d29f22aeca64651b609fb07bacab730f82b71d1b29ed","urls":["bzz-raw://9e9182c7674a76964176a991d96bba92218aa9c036f3ffbfdd2f60d70733ab61","dweb:/ipfs/QmcUYvgyn8vS1wmbGeuva4hHYWRu13tpsWyJiM9Fbua1th"],"license":"BUSL-1.1"},"src/Router.sol":{"keccak256":"0xac310f8bb2d6efaee9dcb81624e0ed2d1a6e3efa82cae82cc40087af60fcccde","urls":["bzz-raw://98472baba6c48a64de9724f8e1b917fff3b53e5ab8e0250a66ff7f291905c3e7","dweb:/ipfs/QmNjieLL5PJt7bSTqSjTYDvZkhZvhjhzdXDaBfBuzNKvuX"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0x7d747b5c95da3dd0083a94a45e5c420c52635b33aafb9e522af4cafe7e6a89a9","urls":["bzz-raw://a07ab06471006abb625b7add788403b0cefada1c63c06e0b47f9596aade92b52","dweb:/ipfs/QmSAoe59QirGjx4AvvkPVueZqgaSCuqSzHchZ7gqycksAq"],"license":"UNLICENSED"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x880eec9ebcd4e447f93c3d5472029b00cf8e6008a0d1a82ebd3c8598b70a8381","urls":["bzz-raw://a62f9eddea8e71f310c5768c61305897ff5c52f29654431258801e393d887ff3","dweb:/ipfs/QmfMytcHKw9DkRvu1xwujc92iqENknYv8H4wTTdEAPKZX4"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":69771,"exportedSymbols":{"Clones":[42512],"Gear":[70712],"IMiddleware":[65200],"IMirror":[65344],"IMirrorDecoder":[65381],"IRouter":[65695],"IWrappedVara":[65706],"OwnableUpgradeable":[40332],"ReentrancyGuardTransient":[44307],"Router":[69770],"StorageSlot":[44431]},"nodeType":"SourceUnit","src":"39:19924:121","nodes":[{"id":67970,"nodeType":"PragmaDirective","src":"39:24:121","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67972,"nodeType":"ImportDirective","src":"65:64:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67971,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"73:6:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67974,"nodeType":"ImportDirective","src":"130:42:121","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":70713,"symbolAliases":[{"foreign":{"id":67973,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"138:4:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67976,"nodeType":"ImportDirective","src":"173:46:121","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"./IMiddleware.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":65201,"symbolAliases":[{"foreign":{"id":67975,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65200,"src":"181:11:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67978,"nodeType":"ImportDirective","src":"220:38:121","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":65345,"symbolAliases":[{"foreign":{"id":67977,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65344,"src":"228:7:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67980,"nodeType":"ImportDirective","src":"259:52:121","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":65382,"symbolAliases":[{"foreign":{"id":67979,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65381,"src":"267:14:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67982,"nodeType":"ImportDirective","src":"312:38:121","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":65696,"symbolAliases":[{"foreign":{"id":67981,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65695,"src":"320:7:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67984,"nodeType":"ImportDirective","src":"351:48:121","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":65707,"symbolAliases":[{"foreign":{"id":67983,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65706,"src":"359:12:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67986,"nodeType":"ImportDirective","src":"400:101:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":67985,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"408:18:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67988,"nodeType":"ImportDirective","src":"502:100:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":44308,"symbolAliases":[{"foreign":{"id":67987,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"510:24:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67990,"nodeType":"ImportDirective","src":"603:74:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":69771,"sourceUnit":44432,"symbolAliases":[{"foreign":{"id":67989,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"611:11:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69770,"nodeType":"ContractDefinition","src":"737:19225:121","nodes":[{"id":67999,"nodeType":"VariableDeclaration","src":"918:106:121","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"943:12:121","scope":69770,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"918:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":67998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"958:66:121","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":68007,"nodeType":"FunctionDefinition","src":"1084:53:121","nodes":[],"body":{"id":68006,"nodeType":"Block","src":"1098:39:121","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68003,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1108:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":68004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1108:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68005,"nodeType":"ExpressionStatement","src":"1108:22:121"}]},"documentation":{"id":68000,"nodeType":"StructuredDocumentation","src":"1031:48:121","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":68001,"nodeType":"ParameterList","parameters":[],"src":"1095:2:121"},"returnParameters":{"id":68002,"nodeType":"ParameterList","parameters":[],"src":"1098:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68122,"nodeType":"FunctionDefinition","src":"1143:1331:121","nodes":[],"body":{"id":68121,"nodeType":"Block","src":"1431:1043:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":68030,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68009,"src":"1456:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68029,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1441:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":68031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1441:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68032,"nodeType":"ExpressionStatement","src":"1441:22:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68034,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1588:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1594:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"1588:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":68036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1606:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1588:19:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63757272656e742074696d657374616d70206d7573742062652067726561746572207468616e2030","id":68038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1609:42:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_010a1bc0b39cf96528374edb07c79052766d9dbc6322e9b022f045d426584476","typeString":"literal_string \"current timestamp must be greater than 0\""},"value":"current timestamp must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_010a1bc0b39cf96528374edb07c79052766d9dbc6322e9b022f045d426584476","typeString":"literal_string \"current timestamp must be greater than 0\""}],"id":68033,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1580:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:72:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68040,"nodeType":"ExpressionStatement","src":"1580:72:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68042,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68021,"src":"1670:17:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":68043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1670:21:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206475726174696f6e206d7573742062652067726561746572207468616e2030","id":68045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1693:42:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_22f70577ade1b9c6246323ca38a4066fa51456aa417f5a924af9df8299c24ade","typeString":"literal_string \"election duration must be greater than 0\""},"value":"election duration must be greater than 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22f70577ade1b9c6246323ca38a4066fa51456aa417f5a924af9df8299c24ade","typeString":"literal_string \"election duration must be greater than 0\""}],"id":68041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1662:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:74:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68047,"nodeType":"ExpressionStatement","src":"1662:74:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68049,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68019,"src":"1754:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":68050,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68021,"src":"1769:17:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:32:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"657261206475726174696f6e206d7573742062652067726561746572207468616e20656c656374696f6e206475726174696f6e","id":68052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1788:53:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_07fe5d445d3047744132d2b933786d7532224c888580fad1eb3bf2fab68d889a","typeString":"literal_string \"era duration must be greater than election duration\""},"value":"era duration must be greater than election duration"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07fe5d445d3047744132d2b933786d7532224c888580fad1eb3bf2fab68d889a","typeString":"literal_string \"era duration must be greater than election duration\""}],"id":68048,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1746:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1746:96:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68054,"nodeType":"ExpressionStatement","src":"1746:96:121"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":68056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1869:25:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":68055,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69769,"src":"1853:15:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":68057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1853:42:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68058,"nodeType":"ExpressionStatement","src":"1853:42:121"},{"assignments":[68061],"declarations":[{"constant":false,"id":68061,"mutability":"mutable","name":"router","nameLocation":"1921:6:121","nodeType":"VariableDeclaration","scope":68121,"src":"1905:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68060,"nodeType":"UserDefinedTypeName","pathNode":{"id":68059,"name":"Storage","nameLocations":["1905:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"1905:7:121"},"referencedDeclaration":65426,"src":"1905:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68064,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68062,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"1930:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1930:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1905:34:121"},{"expression":{"id":68071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68065,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"1950:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1957:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"1950:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68068,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"1972:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1977:10:121","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":70432,"src":"1972:15:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69966_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":68070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1972:17:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1950:39:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68072,"nodeType":"ExpressionStatement","src":"1950:39:121"},{"expression":{"id":68083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68073,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"1999:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2006:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"1999:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68078,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68011,"src":"2039:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68079,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68013,"src":"2048:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68080,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68015,"src":"2062:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68081,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68017,"src":"2076:11:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":68076,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"2022:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:11:121","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":69921,"src":"2022:16:121","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$69921_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":68082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2022:66:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1999:89:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68084,"nodeType":"ExpressionStatement","src":"1999:89:121"},{"expression":{"id":68092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68085,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"2098:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2105:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"2098:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2124:26:121","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":70035,"src":"2098:52:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68090,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"2153:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2158:28:121","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":69899,"src":"2153:33:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2098:88:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68093,"nodeType":"ExpressionStatement","src":"2098:88:121"},{"expression":{"id":68100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68094,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"2196:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2203:15:121","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65417,"src":"2196:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68097,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"2221:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2226:26:121","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":70379,"src":"2221:31:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$69959_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":68099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:33:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"2196:58:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68101,"nodeType":"ExpressionStatement","src":"2196:58:121"},{"expression":{"id":68110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68102,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"2264:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2271:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"2264:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68107,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68019,"src":"2298:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":68108,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68021,"src":"2312:17:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":68105,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"2283:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:9:121","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":70033,"src":"2283:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$70033_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":68109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2283:47:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"2264:66:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68111,"nodeType":"ExpressionStatement","src":"2264:66:121"},{"expression":{"arguments":[{"expression":{"expression":{"id":68113,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68061,"src":"2399:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2406:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"2399:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2425:11:121","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":70038,"src":"2399:37:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage","typeString":"struct Gear.Validators storage ref"}},{"id":68116,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68024,"src":"2438:11:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":68117,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2451:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2457:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"2451:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69912_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68112,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69699,"src":"2382:16:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69912_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:85:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68120,"nodeType":"ExpressionStatement","src":"2382:85:121"}]},"functionSelector":"977179d5","implemented":true,"kind":"function","modifiers":[{"id":68027,"kind":"modifierInvocation","modifierName":{"id":68026,"name":"initializer","nameLocations":["1419:11:121"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1419:11:121"},"nodeType":"ModifierInvocation","src":"1419:11:121"}],"name":"initialize","nameLocation":"1152:10:121","parameters":{"id":68025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68009,"mutability":"mutable","name":"_owner","nameLocation":"1180:6:121","nodeType":"VariableDeclaration","scope":68122,"src":"1172:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68008,"name":"address","nodeType":"ElementaryTypeName","src":"1172:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68011,"mutability":"mutable","name":"_mirror","nameLocation":"1204:7:121","nodeType":"VariableDeclaration","scope":68122,"src":"1196:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68010,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68013,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1229:12:121","nodeType":"VariableDeclaration","scope":68122,"src":"1221:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68012,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68015,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1259:12:121","nodeType":"VariableDeclaration","scope":68122,"src":"1251:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68014,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68017,"mutability":"mutable","name":"_middleware","nameLocation":"1289:11:121","nodeType":"VariableDeclaration","scope":68122,"src":"1281:19:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68016,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68019,"mutability":"mutable","name":"_eraDuration","nameLocation":"1318:12:121","nodeType":"VariableDeclaration","scope":68122,"src":"1310:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68018,"name":"uint256","nodeType":"ElementaryTypeName","src":"1310:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":68021,"mutability":"mutable","name":"_electionDuration","nameLocation":"1348:17:121","nodeType":"VariableDeclaration","scope":68122,"src":"1340:25:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68020,"name":"uint256","nodeType":"ElementaryTypeName","src":"1340:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":68024,"mutability":"mutable","name":"_validators","nameLocation":"1394:11:121","nodeType":"VariableDeclaration","scope":68122,"src":"1375:30:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68022,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68023,"nodeType":"ArrayTypeName","src":"1375:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1162:249:121"},"returnParameters":{"id":68028,"nodeType":"ParameterList","parameters":[],"src":"1431:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68199,"nodeType":"FunctionDefinition","src":"2480:1409:121","nodes":[],"body":{"id":68198,"nodeType":"Block","src":"2538:1351:121","nodes":[],"statements":[{"assignments":[68132],"declarations":[{"constant":false,"id":68132,"mutability":"mutable","name":"oldRouter","nameLocation":"2564:9:121","nodeType":"VariableDeclaration","scope":68198,"src":"2548:25:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68131,"nodeType":"UserDefinedTypeName","pathNode":{"id":68130,"name":"Storage","nameLocations":["2548:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"2548:7:121"},"referencedDeclaration":65426,"src":"2548:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68135,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68133,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"2576:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2576:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2548:37:121"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":68137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2612:25:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""},"value":"router.storage.RouterV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""}],"id":68136,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69769,"src":"2596:15:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":68138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:42:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68139,"nodeType":"ExpressionStatement","src":"2596:42:121"},{"assignments":[68142],"declarations":[{"constant":false,"id":68142,"mutability":"mutable","name":"newRouter","nameLocation":"2664:9:121","nodeType":"VariableDeclaration","scope":68198,"src":"2648:25:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68141,"nodeType":"UserDefinedTypeName","pathNode":{"id":68140,"name":"Storage","nameLocations":["2648:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"2648:7:121"},"referencedDeclaration":65426,"src":"2648:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68145,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68143,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"2676:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2676:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2648:37:121"},{"expression":{"id":68152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68146,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"2737:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2747:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"2737:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68149,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"2762:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2767:10:121","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":70432,"src":"2762:15:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69966_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":68151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2762:17:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2737:42:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68153,"nodeType":"ExpressionStatement","src":"2737:42:121"},{"expression":{"id":68159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68154,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"2905:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2915:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"2905:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68157,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68132,"src":"2931:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2941:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"2931:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"2905:49:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68160,"nodeType":"ExpressionStatement","src":"2905:49:121"},{"expression":{"id":68169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68161,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"3031:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3041:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"3031:28:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3060:26:121","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":70035,"src":"3031:55:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68166,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68132,"src":"3101:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3111:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"3101:28:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3130:26:121","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":70035,"src":"3101:55:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"3031:125:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68170,"nodeType":"ExpressionStatement","src":"3031:125:121"},{"expression":{"arguments":[{"expression":{"expression":{"id":68172,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"3469:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3479:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"3469:28:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3498:11:121","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":70038,"src":"3469:40:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage","typeString":"struct Gear.Validators storage ref"}},{"expression":{"arguments":[{"id":68177,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68132,"src":"3537:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68175,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"3511:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3516:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"3511:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3511:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3548:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"3511:41:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":68180,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3554:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3560:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"3554:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69912_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68171,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69699,"src":"3439:16:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69912_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3439:140:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68183,"nodeType":"ExpressionStatement","src":"3439:140:121"},{"expression":{"id":68189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68184,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"3648:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3658:15:121","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65417,"src":"3648:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68187,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68132,"src":"3676:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3686:15:121","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65417,"src":"3676:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"3648:53:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68190,"nodeType":"ExpressionStatement","src":"3648:53:121"},{"expression":{"id":68196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68191,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68142,"src":"3759:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3769:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"3759:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68194,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68132,"src":"3781:9:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3791:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"3781:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"src":"3759:41:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68197,"nodeType":"ExpressionStatement","src":"3759:41:121"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":68125,"kind":"modifierInvocation","modifierName":{"id":68124,"name":"onlyOwner","nameLocations":["2511:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"2511:9:121"},"nodeType":"ModifierInvocation","src":"2511:9:121"},{"arguments":[{"hexValue":"32","id":68127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2535:1:121","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":68128,"kind":"modifierInvocation","modifierName":{"id":68126,"name":"reinitializer","nameLocations":["2521:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"2521:13:121"},"nodeType":"ModifierInvocation","src":"2521:16:121"}],"name":"reinitialize","nameLocation":"2489:12:121","parameters":{"id":68123,"nodeType":"ParameterList","parameters":[],"src":"2501:2:121"},"returnParameters":{"id":68129,"nodeType":"ParameterList","parameters":[],"src":"2538:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68210,"nodeType":"FunctionDefinition","src":"3911:109:121","nodes":[],"body":{"id":68209,"nodeType":"Block","src":"3969:51:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68204,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"3986:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3996:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"3986:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4009:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"3986:27:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68203,"id":68208,"nodeType":"Return","src":"3979:34:121"}]},"baseFunctions":[65490],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3920:16:121","parameters":{"id":68200,"nodeType":"ParameterList","parameters":[],"src":"3936:2:121"},"returnParameters":{"id":68203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68210,"src":"3960:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3960:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3959:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68221,"nodeType":"FunctionDefinition","src":"4026:113:121","nodes":[],"body":{"id":68220,"nodeType":"Block","src":"4083:56:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68215,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4100:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4100:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4110:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"4100:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4123:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"4100:32:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":68214,"id":68219,"nodeType":"Return","src":"4093:39:121"}]},"baseFunctions":[65495],"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"4035:16:121","parameters":{"id":68211,"nodeType":"ParameterList","parameters":[],"src":"4051:2:121"},"returnParameters":{"id":68214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68221,"src":"4075:6:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":68212,"name":"uint48","nodeType":"ElementaryTypeName","src":"4075:6:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4074:8:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68232,"nodeType":"FunctionDefinition","src":"4145:125:121","nodes":[],"body":{"id":68231,"nodeType":"Block","src":"4211:59:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68226,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4228:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4238:20:121","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65405,"src":"4228:30:121","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69954_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4259:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69951,"src":"4228:35:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68225,"id":68230,"nodeType":"Return","src":"4221:42:121"}]},"baseFunctions":[65500],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"4154:24:121","parameters":{"id":68222,"nodeType":"ParameterList","parameters":[],"src":"4178:2:121"},"returnParameters":{"id":68225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68232,"src":"4202:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68223,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4202:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4201:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68243,"nodeType":"FunctionDefinition","src":"4276:106:121","nodes":[],"body":{"id":68242,"nodeType":"Block","src":"4328:54:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68237,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4345:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4345:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4355:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"4345:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4369:6:121","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69914,"src":"4345:30:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68236,"id":68241,"nodeType":"Return","src":"4338:37:121"}]},"baseFunctions":[65505],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"4285:10:121","parameters":{"id":68233,"nodeType":"ParameterList","parameters":[],"src":"4295:2:121"},"returnParameters":{"id":68236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68243,"src":"4319:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68234,"name":"address","nodeType":"ElementaryTypeName","src":"4319:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4318:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68254,"nodeType":"FunctionDefinition","src":"4388:116:121","nodes":[],"body":{"id":68253,"nodeType":"Block","src":"4445:59:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68248,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4462:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4462:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4472:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"4462:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4486:11:121","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69916,"src":"4462:35:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68247,"id":68252,"nodeType":"Return","src":"4455:42:121"}]},"baseFunctions":[65510],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"4397:15:121","parameters":{"id":68244,"nodeType":"ParameterList","parameters":[],"src":"4412:2:121"},"returnParameters":{"id":68247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68254,"src":"4436:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68245,"name":"address","nodeType":"ElementaryTypeName","src":"4436:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4435:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68265,"nodeType":"FunctionDefinition","src":"4510:112:121","nodes":[],"body":{"id":68264,"nodeType":"Block","src":"4563:59:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68259,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4580:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4580:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4590:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"4580:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4604:11:121","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69918,"src":"4580:35:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68258,"id":68263,"nodeType":"Return","src":"4573:42:121"}]},"baseFunctions":[65515],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"4519:11:121","parameters":{"id":68255,"nodeType":"ParameterList","parameters":[],"src":"4530:2:121"},"returnParameters":{"id":68258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68265,"src":"4554:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68256,"name":"address","nodeType":"ElementaryTypeName","src":"4554:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4553:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68276,"nodeType":"FunctionDefinition","src":"4628:110:121","nodes":[],"body":{"id":68275,"nodeType":"Block","src":"4680:58:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68270,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4697:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4697:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4707:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"4697:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4721:10:121","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":69920,"src":"4697:34:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68269,"id":68274,"nodeType":"Return","src":"4690:41:121"}]},"baseFunctions":[65520],"functionSelector":"f4f20ac0","implemented":true,"kind":"function","modifiers":[],"name":"middleware","nameLocation":"4637:10:121","parameters":{"id":68266,"nodeType":"ParameterList","parameters":[],"src":"4647:2:121"},"returnParameters":{"id":68269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68276,"src":"4671:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68267,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68322,"nodeType":"FunctionDefinition","src":"4744:375:121","nodes":[],"body":{"id":68321,"nodeType":"Block","src":"4826:293:121","nodes":[],"statements":[{"assignments":[68288],"declarations":[{"constant":false,"id":68288,"mutability":"mutable","name":"_currentValidators","nameLocation":"4860:18:121","nodeType":"VariableDeclaration","scope":68321,"src":"4836:42:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68287,"nodeType":"UserDefinedTypeName","pathNode":{"id":68286,"name":"Gear.Validators","nameLocations":["4836:4:121","4841:10:121"],"nodeType":"IdentifierPath","referencedDeclaration":69912,"src":"4836:15:121"},"referencedDeclaration":69912,"src":"4836:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68294,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68291,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"4907:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4907:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68289,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"4881:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4886:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"4881:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4836:81:121"},{"body":{"id":68317,"nodeType":"Block","src":"4977:114:121","statements":[{"condition":{"id":68312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4995:39:121","subExpression":{"baseExpression":{"expression":{"id":68306,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68288,"src":"4996:18:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5015:3:121","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69906,"src":"4996:22:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68311,"indexExpression":{"baseExpression":{"id":68308,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68279,"src":"5019:11:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68310,"indexExpression":{"id":68309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68296,"src":"5031:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5019:14:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4996:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68316,"nodeType":"IfStatement","src":"4991:90:121","trueBody":{"id":68315,"nodeType":"Block","src":"5036:45:121","statements":[{"expression":{"hexValue":"66616c7365","id":68313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5061:5:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":68283,"id":68314,"nodeType":"Return","src":"5054:12:121"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68299,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68296,"src":"4948:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68300,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68279,"src":"4952:11:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4964:6:121","memberName":"length","nodeType":"MemberAccess","src":"4952:18:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4948:22:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68318,"initializationExpression":{"assignments":[68296],"declarations":[{"constant":false,"id":68296,"mutability":"mutable","name":"i","nameLocation":"4941:1:121","nodeType":"VariableDeclaration","scope":68318,"src":"4933:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68295,"name":"uint256","nodeType":"ElementaryTypeName","src":"4933:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68298,"initialValue":{"hexValue":"30","id":68297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4945:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4933:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4972:3:121","subExpression":{"id":68303,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68296,"src":"4972:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68305,"nodeType":"ExpressionStatement","src":"4972:3:121"},"nodeType":"ForStatement","src":"4928:163:121"},{"expression":{"hexValue":"74727565","id":68319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5108:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":68283,"id":68320,"nodeType":"Return","src":"5101:11:121"}]},"baseFunctions":[65528],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"4753:13:121","parameters":{"id":68280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68279,"mutability":"mutable","name":"_validators","nameLocation":"4786:11:121","nodeType":"VariableDeclaration","scope":68322,"src":"4767:30:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68277,"name":"address","nodeType":"ElementaryTypeName","src":"4767:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68278,"nodeType":"ArrayTypeName","src":"4767:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4766:32:121"},"returnParameters":{"id":68283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68322,"src":"4820:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68281,"name":"bool","nodeType":"ElementaryTypeName","src":"4820:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4819:6:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68339,"nodeType":"FunctionDefinition","src":"5125:144:121","nodes":[],"body":{"id":68338,"nodeType":"Block","src":"5193:76:121","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68331,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"5236:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5236:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68329,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5210:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5215:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"5210:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5210:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5247:3:121","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69906,"src":"5210:40:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68336,"indexExpression":{"id":68335,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68324,"src":"5251:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5210:52:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":68328,"id":68337,"nodeType":"Return","src":"5203:59:121"}]},"baseFunctions":[65535],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"5134:11:121","parameters":{"id":68325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68324,"mutability":"mutable","name":"_validator","nameLocation":"5154:10:121","nodeType":"VariableDeclaration","scope":68339,"src":"5146:18:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68323,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5145:20:121"},"returnParameters":{"id":68328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68339,"src":"5187:4:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68326,"name":"bool","nodeType":"ElementaryTypeName","src":"5187:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5186:6:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68350,"nodeType":"FunctionDefinition","src":"5275:146:121","nodes":[],"body":{"id":68349,"nodeType":"Block","src":"5342:79:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68344,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"5359:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5359:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5369:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"5359:28:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5388:26:121","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":70035,"src":"5359:55:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":68343,"id":68348,"nodeType":"Return","src":"5352:62:121"}]},"baseFunctions":[65540],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"5284:26:121","parameters":{"id":68340,"nodeType":"ParameterList","parameters":[],"src":"5310:2:121"},"returnParameters":{"id":68343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68350,"src":"5334:6:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":68341,"name":"uint16","nodeType":"ElementaryTypeName","src":"5334:6:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5333:8:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68364,"nodeType":"FunctionDefinition","src":"5427:126:121","nodes":[],"body":{"id":68363,"nodeType":"Block","src":"5488:65:121","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68358,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"5531:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68356,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5505:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5510:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"5505:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5542:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"5505:41:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":68355,"id":68362,"nodeType":"Return","src":"5498:48:121"}]},"baseFunctions":[65546],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5436:10:121","parameters":{"id":68351,"nodeType":"ParameterList","parameters":[],"src":"5446:2:121"},"returnParameters":{"id":68355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68364,"src":"5470:16:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68352,"name":"address","nodeType":"ElementaryTypeName","src":"5470:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68353,"nodeType":"ArrayTypeName","src":"5470:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5469:18:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68378,"nodeType":"FunctionDefinition","src":"5559:129:121","nodes":[],"body":{"id":68377,"nodeType":"Block","src":"5616:72:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68371,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"5659:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5659:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68369,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5633:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5638:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"5633:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5633:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5670:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"5633:41:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5675:6:121","memberName":"length","nodeType":"MemberAccess","src":"5633:48:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68368,"id":68376,"nodeType":"Return","src":"5626:55:121"}]},"baseFunctions":[65551],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5568:15:121","parameters":{"id":68365,"nodeType":"ParameterList","parameters":[],"src":"5583:2:121"},"returnParameters":{"id":68368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68378,"src":"5607:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68366,"name":"uint256","nodeType":"ElementaryTypeName","src":"5607:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5606:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68405,"nodeType":"FunctionDefinition","src":"5694:284:121","nodes":[],"body":{"id":68404,"nodeType":"Block","src":"5755:223:121","nodes":[],"statements":[{"assignments":[68387],"declarations":[{"constant":false,"id":68387,"mutability":"mutable","name":"router","nameLocation":"5789:6:121","nodeType":"VariableDeclaration","scope":68404,"src":"5765:30:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68386,"nodeType":"UserDefinedTypeName","pathNode":{"id":68385,"name":"IRouter.Storage","nameLocations":["5765:7:121","5773:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"5765:15:121"},"referencedDeclaration":65426,"src":"5765:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68390,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68388,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"5798:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5798:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5765:42:121"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":68395,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68387,"src":"5888:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68393,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5862:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:20:121","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70578,"src":"5862:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:33:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5896:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"5862:38:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5901:6:121","memberName":"length","nodeType":"MemberAccess","src":"5862:45:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":68399,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68387,"src":"5909:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5916:18:121","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65413,"src":"5909:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$70042_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5935:26:121","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":70035,"src":"5909:52:121","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":68391,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"5824:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5829:19:121","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":70692,"src":"5824:24:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint256,uint16) pure returns (uint256)"}},"id":68402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5824:147:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68382,"id":68403,"nodeType":"Return","src":"5817:154:121"}]},"baseFunctions":[65556],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"5703:19:121","parameters":{"id":68379,"nodeType":"ParameterList","parameters":[],"src":"5722:2:121"},"returnParameters":{"id":68382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68405,"src":"5746:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68380,"name":"uint256","nodeType":"ElementaryTypeName","src":"5746:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5745:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68416,"nodeType":"FunctionDefinition","src":"5984:130:121","nodes":[],"body":{"id":68415,"nodeType":"Block","src":"6065:49:121","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68411,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"6082:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6092:15:121","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65417,"src":"6082:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":68410,"id":68414,"nodeType":"Return","src":"6075:32:121"}]},"baseFunctions":[65562],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"5993:15:121","parameters":{"id":68406,"nodeType":"ParameterList","parameters":[],"src":"6008:2:121"},"returnParameters":{"id":68410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68416,"src":"6032:31:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":68408,"nodeType":"UserDefinedTypeName","pathNode":{"id":68407,"name":"Gear.ComputationSettings","nameLocations":["6032:4:121","6037:19:121"],"nodeType":"IdentifierPath","referencedDeclaration":69959,"src":"6032:24:121"},"referencedDeclaration":69959,"src":"6032:24:121","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69959_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"6031:33:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68432,"nodeType":"FunctionDefinition","src":"6120:134:121","nodes":[],"body":{"id":68431,"nodeType":"Block","src":"6193:61:121","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68424,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"6210:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6210:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6220:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"6210:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68427,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6233:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"6210:28:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68429,"indexExpression":{"id":68428,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68418,"src":"6239:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6210:37:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"functionReturnParameters":68423,"id":68430,"nodeType":"Return","src":"6203:44:121"}]},"baseFunctions":[65570],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"6129:9:121","parameters":{"id":68419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68418,"mutability":"mutable","name":"_codeId","nameLocation":"6147:7:121","nodeType":"VariableDeclaration","scope":68432,"src":"6139:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6139:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6138:17:121"},"returnParameters":{"id":68423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68432,"src":"6177:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"},"typeName":{"id":68421,"nodeType":"UserDefinedTypeName","pathNode":{"id":68420,"name":"Gear.CodeState","nameLocations":["6177:4:121","6182:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":69949,"src":"6177:14:121"},"referencedDeclaration":69949,"src":"6177:14:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"6176:16:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68490,"nodeType":"FunctionDefinition","src":"6260:378:121","nodes":[],"body":{"id":68489,"nodeType":"Block","src":"6357:281:121","nodes":[],"statements":[{"assignments":[68444],"declarations":[{"constant":false,"id":68444,"mutability":"mutable","name":"router","nameLocation":"6383:6:121","nodeType":"VariableDeclaration","scope":68489,"src":"6367:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68443,"nodeType":"UserDefinedTypeName","pathNode":{"id":68442,"name":"Storage","nameLocations":["6367:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"6367:7:121"},"referencedDeclaration":65426,"src":"6367:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68447,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68445,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"6392:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6392:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6367:34:121"},{"assignments":[68453],"declarations":[{"constant":false,"id":68453,"mutability":"mutable","name":"res","nameLocation":"6436:3:121","nodeType":"VariableDeclaration","scope":68489,"src":"6412:27:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68451,"nodeType":"UserDefinedTypeName","pathNode":{"id":68450,"name":"Gear.CodeState","nameLocations":["6412:4:121","6417:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":69949,"src":"6412:14:121"},"referencedDeclaration":69949,"src":"6412:14:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68452,"nodeType":"ArrayTypeName","src":"6412:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":68461,"initialValue":{"arguments":[{"expression":{"id":68458,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"6463:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6473:6:121","memberName":"length","nodeType":"MemberAccess","src":"6463:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6442:20:121","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":68455,"nodeType":"UserDefinedTypeName","pathNode":{"id":68454,"name":"Gear.CodeState","nameLocations":["6446:4:121","6451:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":69949,"src":"6446:14:121"},"referencedDeclaration":69949,"src":"6446:14:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68456,"nodeType":"ArrayTypeName","src":"6446:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":68460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6442:38:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6412:68:121"},{"body":{"id":68485,"nodeType":"Block","src":"6538:73:121","statements":[{"expression":{"id":68483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68473,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68453,"src":"6552:3:121","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":68475,"indexExpression":{"id":68474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68463,"src":"6556:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6552:6:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68476,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68444,"src":"6561:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6568:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"6561:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6581:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"6561:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68482,"indexExpression":{"baseExpression":{"id":68479,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"6587:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68481,"indexExpression":{"id":68480,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68463,"src":"6597:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6587:12:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6561:39:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"6552:48:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68484,"nodeType":"ExpressionStatement","src":"6552:48:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68463,"src":"6511:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68467,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"6515:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6525:6:121","memberName":"length","nodeType":"MemberAccess","src":"6515:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6511:20:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68486,"initializationExpression":{"assignments":[68463],"declarations":[{"constant":false,"id":68463,"mutability":"mutable","name":"i","nameLocation":"6504:1:121","nodeType":"VariableDeclaration","scope":68486,"src":"6496:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68462,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68465,"initialValue":{"hexValue":"30","id":68464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6508:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6496:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6533:3:121","subExpression":{"id":68470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68463,"src":"6533:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68472,"nodeType":"ExpressionStatement","src":"6533:3:121"},"nodeType":"ForStatement","src":"6491:120:121"},{"expression":{"id":68487,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68453,"src":"6628:3:121","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":68441,"id":68488,"nodeType":"Return","src":"6621:10:121"}]},"baseFunctions":[65580],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"6269:11:121","parameters":{"id":68436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68435,"mutability":"mutable","name":"_codesIds","nameLocation":"6300:9:121","nodeType":"VariableDeclaration","scope":68490,"src":"6281:28:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6281:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68434,"nodeType":"ArrayTypeName","src":"6281:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6280:30:121"},"returnParameters":{"id":68441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68490,"src":"6332:23:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68438,"nodeType":"UserDefinedTypeName","pathNode":{"id":68437,"name":"Gear.CodeState","nameLocations":["6332:4:121","6337:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":69949,"src":"6332:14:121"},"referencedDeclaration":69949,"src":"6332:14:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68439,"nodeType":"ArrayTypeName","src":"6332:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69949_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"6331:25:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68505,"nodeType":"FunctionDefinition","src":"6644:140:121","nodes":[],"body":{"id":68504,"nodeType":"Block","src":"6717:67:121","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68497,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"6734:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6734:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6744:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"6734:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6757:8:121","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69987,"src":"6734:31:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68502,"indexExpression":{"id":68501,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68492,"src":"6766:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6734:43:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68496,"id":68503,"nodeType":"Return","src":"6727:50:121"}]},"baseFunctions":[65587],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"6653:13:121","parameters":{"id":68493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68492,"mutability":"mutable","name":"_programId","nameLocation":"6675:10:121","nodeType":"VariableDeclaration","scope":68505,"src":"6667:18:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68491,"name":"address","nodeType":"ElementaryTypeName","src":"6667:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6666:20:121"},"returnParameters":{"id":68496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68505,"src":"6708:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6708:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6707:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68560,"nodeType":"FunctionDefinition","src":"6790:376:121","nodes":[],"body":{"id":68559,"nodeType":"Block","src":"6887:279:121","nodes":[],"statements":[{"assignments":[68516],"declarations":[{"constant":false,"id":68516,"mutability":"mutable","name":"router","nameLocation":"6913:6:121","nodeType":"VariableDeclaration","scope":68559,"src":"6897:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68515,"nodeType":"UserDefinedTypeName","pathNode":{"id":68514,"name":"Storage","nameLocations":["6897:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"6897:7:121"},"referencedDeclaration":65426,"src":"6897:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68519,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68517,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"6922:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6922:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6897:34:121"},{"assignments":[68524],"declarations":[{"constant":false,"id":68524,"mutability":"mutable","name":"res","nameLocation":"6959:3:121","nodeType":"VariableDeclaration","scope":68559,"src":"6942:20:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6942:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68523,"nodeType":"ArrayTypeName","src":"6942:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":68531,"initialValue":{"arguments":[{"expression":{"id":68528,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68508,"src":"6979:12:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6992:6:121","memberName":"length","nodeType":"MemberAccess","src":"6979:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6965:13:121","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":68525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6969:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68526,"nodeType":"ArrayTypeName","src":"6969:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":68530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6965:34:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6942:57:121"},{"body":{"id":68555,"nodeType":"Block","src":"7060:79:121","statements":[{"expression":{"id":68553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68543,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68524,"src":"7074:3:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":68545,"indexExpression":{"id":68544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68533,"src":"7078:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7074:6:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68546,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68516,"src":"7083:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7090:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"7083:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7103:8:121","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69987,"src":"7083:28:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68552,"indexExpression":{"baseExpression":{"id":68549,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68508,"src":"7112:12:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68551,"indexExpression":{"id":68550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68533,"src":"7125:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7112:15:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7083:45:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7074:54:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68554,"nodeType":"ExpressionStatement","src":"7074:54:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68536,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68533,"src":"7030:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68537,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68508,"src":"7034:12:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7047:6:121","memberName":"length","nodeType":"MemberAccess","src":"7034:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7030:23:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68556,"initializationExpression":{"assignments":[68533],"declarations":[{"constant":false,"id":68533,"mutability":"mutable","name":"i","nameLocation":"7023:1:121","nodeType":"VariableDeclaration","scope":68556,"src":"7015:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68532,"name":"uint256","nodeType":"ElementaryTypeName","src":"7015:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68535,"initialValue":{"hexValue":"30","id":68534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7027:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7015:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7055:3:121","subExpression":{"id":68540,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68533,"src":"7055:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68542,"nodeType":"ExpressionStatement","src":"7055:3:121"},"nodeType":"ForStatement","src":"7010:129:121"},{"expression":{"id":68557,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68524,"src":"7156:3:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":68513,"id":68558,"nodeType":"Return","src":"7149:10:121"}]},"baseFunctions":[65596],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"6799:15:121","parameters":{"id":68509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68508,"mutability":"mutable","name":"_programsIds","nameLocation":"6834:12:121","nodeType":"VariableDeclaration","scope":68560,"src":"6815:31:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68506,"name":"address","nodeType":"ElementaryTypeName","src":"6815:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68507,"nodeType":"ArrayTypeName","src":"6815:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6814:33:121"},"returnParameters":{"id":68513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68560,"src":"6869:16:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68510,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6869:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68511,"nodeType":"ArrayTypeName","src":"6869:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6868:18:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68571,"nodeType":"FunctionDefinition","src":"7172:115:121","nodes":[],"body":{"id":68570,"nodeType":"Block","src":"7227:60:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68565,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"7244:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7254:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"7244:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7267:13:121","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69989,"src":"7244:36:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68564,"id":68569,"nodeType":"Return","src":"7237:43:121"}]},"baseFunctions":[65601],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"7181:13:121","parameters":{"id":68561,"nodeType":"ParameterList","parameters":[],"src":"7194:2:121"},"returnParameters":{"id":68564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68571,"src":"7218:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7218:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7217:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68582,"nodeType":"FunctionDefinition","src":"7293:127:121","nodes":[],"body":{"id":68581,"nodeType":"Block","src":"7354:66:121","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68576,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"7371:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7371:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7381:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"7371:22:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7394:19:121","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69991,"src":"7371:42:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68575,"id":68580,"nodeType":"Return","src":"7364:49:121"}]},"baseFunctions":[65606],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"7302:19:121","parameters":{"id":68572,"nodeType":"ParameterList","parameters":[],"src":"7321:2:121"},"returnParameters":{"id":68575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68582,"src":"7345:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68573,"name":"uint256","nodeType":"ElementaryTypeName","src":"7345:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7344:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68597,"nodeType":"FunctionDefinition","src":"7446:116:121","nodes":[],"body":{"id":68596,"nodeType":"Block","src":"7503:59:121","nodes":[],"statements":[{"expression":{"id":68594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68589,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"7513:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7513:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7523:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"7513:23:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7537:6:121","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69914,"src":"7513:30:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68593,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68584,"src":"7546:9:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7513:42:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68595,"nodeType":"ExpressionStatement","src":"7513:42:121"}]},"baseFunctions":[65611],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":68587,"kind":"modifierInvocation","modifierName":{"id":68586,"name":"onlyOwner","nameLocations":["7493:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"7493:9:121"},"nodeType":"ModifierInvocation","src":"7493:9:121"}],"name":"setMirror","nameLocation":"7455:9:121","parameters":{"id":68585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68584,"mutability":"mutable","name":"newMirror","nameLocation":"7473:9:121","nodeType":"VariableDeclaration","scope":68597,"src":"7465:17:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68583,"name":"address","nodeType":"ElementaryTypeName","src":"7465:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7464:19:121"},"returnParameters":{"id":68588,"nodeType":"ParameterList","parameters":[],"src":"7503:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68649,"nodeType":"FunctionDefinition","src":"7584:398:121","nodes":[],"body":{"id":68648,"nodeType":"Block","src":"7622:360:121","nodes":[],"statements":[{"assignments":[68602],"declarations":[{"constant":false,"id":68602,"mutability":"mutable","name":"router","nameLocation":"7648:6:121","nodeType":"VariableDeclaration","scope":68648,"src":"7632:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68601,"nodeType":"UserDefinedTypeName","pathNode":{"id":68600,"name":"Storage","nameLocations":["7632:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"7632:7:121"},"referencedDeclaration":65426,"src":"7632:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68605,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68603,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"7657:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7657:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7632:34:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68607,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68602,"src":"7685:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7692:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"7685:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7705:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"7685:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":68612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7721:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7713:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7713:7:121","typeDescriptions":{}}},"id":68613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7713:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7685:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":68615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7725:26:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":68606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7677:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7677:75:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68617,"nodeType":"ExpressionStatement","src":"7677:75:121"},{"assignments":[68619],"declarations":[{"constant":false,"id":68619,"mutability":"mutable","name":"genesisHash","nameLocation":"7771:11:121","nodeType":"VariableDeclaration","scope":68648,"src":"7763:19:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68618,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7763:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68625,"initialValue":{"arguments":[{"expression":{"expression":{"id":68621,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68602,"src":"7795:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7802:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"7795:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7815:6:121","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69963,"src":"7795:26:121","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68620,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"7785:9:121","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7785:37:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7763:59:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68627,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68619,"src":"7841:11:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7864:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7856:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7856:7:121","typeDescriptions":{}}},"id":68631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7856:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7841:25:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":68633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7868:31:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":68626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7833:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7833:67:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68635,"nodeType":"ExpressionStatement","src":"7833:67:121"},{"expression":{"id":68646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68636,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68602,"src":"7911:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7918:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"7911:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7931:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"7911:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":68642,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68602,"src":"7948:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7955:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"7948:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7968:6:121","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69963,"src":"7948:26:121","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68641,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"7938:9:121","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:37:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7911:64:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68647,"nodeType":"ExpressionStatement","src":"7911:64:121"}]},"baseFunctions":[65614],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"7593:17:121","parameters":{"id":68598,"nodeType":"ParameterList","parameters":[],"src":"7610:2:121"},"returnParameters":{"id":68599,"nodeType":"ParameterList","parameters":[],"src":"7622:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68718,"nodeType":"FunctionDefinition","src":"7988:637:121","nodes":[],"body":{"id":68717,"nodeType":"Block","src":"8066:559:121","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":68665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68657,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68653,"src":"8084:11:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8099:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8084:16:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":68661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8113:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68660,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"8104:8:121","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8104:11:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8119:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8104:16:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8084:36:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":68666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8122:21:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":68656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8076:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8076:68:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68668,"nodeType":"ExpressionStatement","src":"8076:68:121"},{"assignments":[68671],"declarations":[{"constant":false,"id":68671,"mutability":"mutable","name":"router","nameLocation":"8171:6:121","nodeType":"VariableDeclaration","scope":68717,"src":"8155:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68670,"nodeType":"UserDefinedTypeName","pathNode":{"id":68669,"name":"Storage","nameLocations":["8155:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"8155:7:121"},"referencedDeclaration":65426,"src":"8155:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68674,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68672,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"8180:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8180:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8155:34:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68676,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68671,"src":"8207:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8214:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"8207:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8227:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"8207:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8243:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8235:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8235:7:121","typeDescriptions":{}}},"id":68682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8235:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8207:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8247:58:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8199:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8199:107:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68686,"nodeType":"ExpressionStatement","src":"8199:107:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"},"id":68696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68688,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68671,"src":"8338:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8345:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"8338:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8358:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"8338:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68692,"indexExpression":{"id":68691,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68651,"src":"8364:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8338:34:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68693,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"8376:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8381:9:121","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69949,"src":"8376:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69949_$","typeString":"type(enum Gear.CodeState)"}},"id":68695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8391:7:121","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":69946,"src":"8376:22:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"8338:60:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":68697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8412:53:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":68687,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8317:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8317:158:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68699,"nodeType":"ExpressionStatement","src":"8317:158:121"},{"expression":{"id":68710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68700,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68671,"src":"8486:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8493:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"8486:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8506:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"8486:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68706,"indexExpression":{"id":68703,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68651,"src":"8512:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8486:34:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68707,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"8523:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8528:9:121","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69949,"src":"8523:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69949_$","typeString":"type(enum Gear.CodeState)"}},"id":68709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8538:19:121","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69947,"src":"8523:34:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"8486:71:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68711,"nodeType":"ExpressionStatement","src":"8486:71:121"},{"eventCall":{"arguments":[{"id":68713,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68651,"src":"8597:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68714,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68653,"src":"8606:11:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68712,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65445,"src":"8573:23:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":68715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8573:45:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68716,"nodeType":"EmitStatement","src":"8568:50:121"}]},"baseFunctions":[65622],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"7997:21:121","parameters":{"id":68654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68651,"mutability":"mutable","name":"_codeId","nameLocation":"8027:7:121","nodeType":"VariableDeclaration","scope":68718,"src":"8019:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8019:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68653,"mutability":"mutable","name":"_blobTxHash","nameLocation":"8044:11:121","nodeType":"VariableDeclaration","scope":68718,"src":"8036:19:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8036:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8018:38:121"},"returnParameters":{"id":68655,"nodeType":"ParameterList","parameters":[],"src":"8066:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68749,"nodeType":"FunctionDefinition","src":"8631:231:121","nodes":[],"body":{"id":68748,"nodeType":"Block","src":"8713:149:121","nodes":[],"statements":[{"assignments":[68728],"declarations":[{"constant":false,"id":68728,"mutability":"mutable","name":"mirror","nameLocation":"8731:6:121","nodeType":"VariableDeclaration","scope":68748,"src":"8723:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68727,"name":"address","nodeType":"ElementaryTypeName","src":"8723:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68733,"initialValue":{"arguments":[{"id":68730,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68720,"src":"8755:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68731,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68722,"src":"8764:5:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68729,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69436,"src":"8740:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8740:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8723:47:121"},{"expression":{"arguments":[{"expression":{"id":68738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8808:3:121","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8812:6:121","memberName":"sender","nodeType":"MemberAccess","src":"8808:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":68742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8828:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8820:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68740,"name":"address","nodeType":"ElementaryTypeName","src":"8820:7:121","typeDescriptions":{}}},"id":68743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8820:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68735,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68728,"src":"8789:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68734,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65344,"src":"8781:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65344_$","typeString":"type(contract IMirror)"}},"id":68736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8781:15:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65344","typeString":"contract IMirror"}},"id":68737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8797:10:121","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65335,"src":"8781:26:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8781:50:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68745,"nodeType":"ExpressionStatement","src":"8781:50:121"},{"expression":{"id":68746,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68728,"src":"8849:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68726,"id":68747,"nodeType":"Return","src":"8842:13:121"}]},"baseFunctions":[65632],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"8640:13:121","parameters":{"id":68723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68720,"mutability":"mutable","name":"_codeId","nameLocation":"8662:7:121","nodeType":"VariableDeclaration","scope":68749,"src":"8654:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8654:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68722,"mutability":"mutable","name":"_salt","nameLocation":"8679:5:121","nodeType":"VariableDeclaration","scope":68749,"src":"8671:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8671:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8653:32:121"},"returnParameters":{"id":68726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68749,"src":"8704:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68724,"name":"address","nodeType":"ElementaryTypeName","src":"8704:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8703:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68793,"nodeType":"FunctionDefinition","src":"8868:390:121","nodes":[],"body":{"id":68792,"nodeType":"Block","src":"9003:255:121","nodes":[],"statements":[{"assignments":[68761],"declarations":[{"constant":false,"id":68761,"mutability":"mutable","name":"mirror","nameLocation":"9021:6:121","nodeType":"VariableDeclaration","scope":68792,"src":"9013:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68760,"name":"address","nodeType":"ElementaryTypeName","src":"9013:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68766,"initialValue":{"arguments":[{"id":68763,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68753,"src":"9045:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68764,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68755,"src":"9054:5:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68762,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69436,"src":"9030:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9030:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9013:47:121"},{"assignments":[68768],"declarations":[{"constant":false,"id":68768,"mutability":"mutable","name":"decoder","nameLocation":"9078:7:121","nodeType":"VariableDeclaration","scope":68792,"src":"9070:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68767,"name":"address","nodeType":"ElementaryTypeName","src":"9070:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68780,"initialValue":{"arguments":[{"id":68770,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68751,"src":"9103:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68774,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68753,"src":"9144:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68775,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68755,"src":"9153:5:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68772,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9127:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9131:12:121","memberName":"encodePacked","nodeType":"MemberAccess","src":"9127:16:121","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9127:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68771,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9117:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9117:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68778,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68761,"src":"9162:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":68769,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69465,"src":"9088:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) returns (address)"}},"id":68779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9088:81:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9070:99:121"},{"expression":{"arguments":[{"expression":{"id":68785,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9207:3:121","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9211:6:121","memberName":"sender","nodeType":"MemberAccess","src":"9207:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68787,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68768,"src":"9219:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68782,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68761,"src":"9188:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68781,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65344,"src":"9180:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65344_$","typeString":"type(contract IMirror)"}},"id":68783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9180:15:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65344","typeString":"contract IMirror"}},"id":68784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9196:10:121","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65335,"src":"9180:26:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9180:47:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68789,"nodeType":"ExpressionStatement","src":"9180:47:121"},{"expression":{"id":68790,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68761,"src":"9245:6:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68759,"id":68791,"nodeType":"Return","src":"9238:13:121"}]},"baseFunctions":[65644],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"8877:24:121","parameters":{"id":68756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68751,"mutability":"mutable","name":"_decoderImpl","nameLocation":"8910:12:121","nodeType":"VariableDeclaration","scope":68793,"src":"8902:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68750,"name":"address","nodeType":"ElementaryTypeName","src":"8902:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68753,"mutability":"mutable","name":"_codeId","nameLocation":"8932:7:121","nodeType":"VariableDeclaration","scope":68793,"src":"8924:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8924:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68755,"mutability":"mutable","name":"_salt","nameLocation":"8949:5:121","nodeType":"VariableDeclaration","scope":68793,"src":"8941:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8941:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8901:54:121"},"returnParameters":{"id":68759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68793,"src":"8990:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68757,"name":"address","nodeType":"ElementaryTypeName","src":"8990:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8989:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68911,"nodeType":"FunctionDefinition","src":"9338:1250:121","nodes":[],"body":{"id":68910,"nodeType":"Block","src":"9449:1139:121","nodes":[],"statements":[{"assignments":[68805],"declarations":[{"constant":false,"id":68805,"mutability":"mutable","name":"router","nameLocation":"9475:6:121","nodeType":"VariableDeclaration","scope":68910,"src":"9459:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68804,"nodeType":"UserDefinedTypeName","pathNode":{"id":68803,"name":"Storage","nameLocations":["9459:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"9459:7:121"},"referencedDeclaration":65426,"src":"9459:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68808,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68806,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"9484:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9484:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9459:34:121"},{"assignments":[68810],"declarations":[{"constant":false,"id":68810,"mutability":"mutable","name":"currentEraIndex","nameLocation":"9512:15:121","nodeType":"VariableDeclaration","scope":68910,"src":"9504:23:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68809,"name":"uint256","nodeType":"ElementaryTypeName","src":"9504:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68822,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68811,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9531:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9537:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"9531:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68813,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"9549:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9556:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"9549:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9569:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"9549:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9531:47:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":68817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9530:49:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":68818,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"9582:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9589:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"9582:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9599:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"9582:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9530:72:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9504:98:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68824,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68797,"src":"9621:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9632:8:121","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69926,"src":"9621:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68826,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68810,"src":"9644:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":68827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9662:1:121","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9644:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9621:42:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6d6d69746d656e742065726120696e646578206973206e6f74206e6578742065726120696e646578","id":68830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9665:44:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_162890466e3da7889495cad8b992d317e467631b8d4abd8dc4464c15dd41b759","typeString":"literal_string \"commitment era index is not next era index\""},"value":"commitment era index is not next era index"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_162890466e3da7889495cad8b992d317e467631b8d4abd8dc4464c15dd41b759","typeString":"literal_string \"commitment era index is not next era index\""}],"id":68823,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9613:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9613:97:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68832,"nodeType":"ExpressionStatement","src":"9613:97:121"},{"assignments":[68834],"declarations":[{"constant":false,"id":68834,"mutability":"mutable","name":"nextEraStart","nameLocation":"9729:12:121","nodeType":"VariableDeclaration","scope":68910,"src":"9721:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68833,"name":"uint256","nodeType":"ElementaryTypeName","src":"9721:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68845,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68835,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"9744:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9751:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"9744:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9764:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"9744:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68838,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"9776:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9783:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"9776:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9793:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"9776:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":68841,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68797,"src":"9799:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9810:8:121","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69926,"src":"9799:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9776:42:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9744:74:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9721:97:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68847,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9836:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9842:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"9836:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68849,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"9855:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68850,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"9870:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9877:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"9870:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68852,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9887:8:121","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":70032,"src":"9870:25:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9855:40:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9836:59:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206973206e6f74207965742073746172746564","id":68855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9897:29:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef3e2748c631aa0d71d8afc854c277a3e771005dd496ece9dad00c587d5c5eaa","typeString":"literal_string \"election is not yet started\""},"value":"election is not yet started"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef3e2748c631aa0d71d8afc854c277a3e771005dd496ece9dad00c587d5c5eaa","typeString":"literal_string \"election is not yet started\""}],"id":68846,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9828:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:99:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68857,"nodeType":"ExpressionStatement","src":"9828:99:121"},{"assignments":[68862],"declarations":[{"constant":false,"id":68862,"mutability":"mutable","name":"_validators","nameLocation":"10009:11:121","nodeType":"VariableDeclaration","scope":68910,"src":"9985:35:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68861,"nodeType":"UserDefinedTypeName","pathNode":{"id":68860,"name":"Gear.Validators","nameLocations":["9985:4:121","9990:10:121"],"nodeType":"IdentifierPath","referencedDeclaration":69912,"src":"9985:15:121"},"referencedDeclaration":69912,"src":"9985:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68867,"initialValue":{"arguments":[{"id":68865,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"10050:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68863,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"10023:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10028:21:121","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":70602,"src":"10023:26:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$returns$_t_struct$_Validators_$69912_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10023:34:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9985:72:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68869,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68862,"src":"10075:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10087:16:121","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69911,"src":"10075:28:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68871,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10106:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10112:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"10106:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10075:46:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f6f6b73206c696b652076616c696461746f727320666f72206e657874206572612061726520616c726561647920736574","id":68874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10123:52:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_b284ea0c51a926e5b8ea00c07f1ff766c11519c493036a65a767443fdf3f1780","typeString":"literal_string \"looks like validators for next era are already set\""},"value":"looks like validators for next era are already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b284ea0c51a926e5b8ea00c07f1ff766c11519c493036a65a767443fdf3f1780","typeString":"literal_string \"looks like validators for next era are already set\""}],"id":68868,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10067:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10067:109:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68876,"nodeType":"ExpressionStatement","src":"10067:109:121"},{"assignments":[68878],"declarations":[{"constant":false,"id":68878,"mutability":"mutable","name":"commitmentHash","nameLocation":"10195:14:121","nodeType":"VariableDeclaration","scope":68910,"src":"10187:22:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10187:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68883,"initialValue":{"arguments":[{"id":68881,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68797,"src":"10242:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":68879,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"10212:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10217:24:121","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":70277,"src":"10212:29:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$69927_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":68882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10212:41:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10187:66:121"},{"expression":{"arguments":[{"arguments":[{"id":68887,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68805,"src":"10308:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":68891,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68878,"src":"10343:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68889,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10326:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10330:12:121","memberName":"encodePacked","nodeType":"MemberAccess","src":"10326:16:121","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10326:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68888,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10316:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68894,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68800,"src":"10361:10:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":68885,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"10284:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10289:18:121","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":70554,"src":"10284:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":68895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10284:88:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e657874206572612076616c696461746f7273207369676e61747572657320766572696669636174696f6e206661696c6564","id":68896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10386:52:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_349cc9c1a1e1cddede1f7780f29c462d7f3b361b9dfecea0303aaa7d870183b1","typeString":"literal_string \"next era validators signatures verification failed\""},"value":"next era validators signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_349cc9c1a1e1cddede1f7780f29c462d7f3b361b9dfecea0303aaa7d870183b1","typeString":"literal_string \"next era validators signatures verification failed\""}],"id":68884,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10263:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10263:185:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68898,"nodeType":"ExpressionStatement","src":"10263:185:121"},{"expression":{"arguments":[{"id":68900,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68862,"src":"10476:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":68901,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68797,"src":"10489:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10500:10:121","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69924,"src":"10489:21:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":68903,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"10512:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68899,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69699,"src":"10459:16:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69912_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10459:66:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68905,"nodeType":"ExpressionStatement","src":"10459:66:121"},{"eventCall":{"arguments":[{"id":68907,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"10568:12:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68906,"name":"NextEraValidatorsCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65450,"src":"10541:26:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":68908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10541:40:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68909,"nodeType":"EmitStatement","src":"10536:45:121"}]},"baseFunctions":[65676],"documentation":{"id":68794,"nodeType":"StructuredDocumentation","src":"9292:41:121","text":"@dev Set validators for the next era."},"functionSelector":"aaf0fe6a","implemented":true,"kind":"function","modifiers":[],"name":"commitValidators","nameLocation":"9347:16:121","parameters":{"id":68801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68797,"mutability":"mutable","name":"commitment","nameLocation":"9399:10:121","nodeType":"VariableDeclaration","scope":68911,"src":"9364:45:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":68796,"nodeType":"UserDefinedTypeName","pathNode":{"id":68795,"name":"Gear.ValidatorsCommitment","nameLocations":["9364:4:121","9369:20:121"],"nodeType":"IdentifierPath","referencedDeclaration":69927,"src":"9364:25:121"},"referencedDeclaration":69927,"src":"9364:25:121","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69927_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"},{"constant":false,"id":68800,"mutability":"mutable","name":"signatures","nameLocation":"9428:10:121","nodeType":"VariableDeclaration","scope":68911,"src":"9411:27:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68798,"name":"bytes","nodeType":"ElementaryTypeName","src":"9411:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68799,"nodeType":"ArrayTypeName","src":"9411:7:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9363:76:121"},"returnParameters":{"id":68802,"nodeType":"ParameterList","parameters":[],"src":"9449:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69043,"nodeType":"FunctionDefinition","src":"10594:1336:121","nodes":[],"body":{"id":69042,"nodeType":"Block","src":"10703:1227:121","nodes":[],"statements":[{"assignments":[68923],"declarations":[{"constant":false,"id":68923,"mutability":"mutable","name":"router","nameLocation":"10729:6:121","nodeType":"VariableDeclaration","scope":69042,"src":"10713:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68922,"nodeType":"UserDefinedTypeName","pathNode":{"id":68921,"name":"Storage","nameLocations":["10713:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"10713:7:121"},"referencedDeclaration":65426,"src":"10713:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68926,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68924,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"10738:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10713:34:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68928,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"10765:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10772:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"10765:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10785:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"10765:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10801:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":68932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10793:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10793:7:121","typeDescriptions":{}}},"id":68934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10793:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10765:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10805:58:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":68927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10757:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10757:107:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68938,"nodeType":"ExpressionStatement","src":"10757:107:121"},{"assignments":[68940],"declarations":[{"constant":false,"id":68940,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"10888:21:121","nodeType":"VariableDeclaration","scope":69042,"src":"10875:34:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68939,"name":"bytes","nodeType":"ElementaryTypeName","src":"10875:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68941,"nodeType":"VariableDeclarationStatement","src":"10875:34:121"},{"body":{"id":69028,"nodeType":"Block","src":"10974:784:121","statements":[{"assignments":[68957],"declarations":[{"constant":false,"id":68957,"mutability":"mutable","name":"codeCommitment","nameLocation":"11017:14:121","nodeType":"VariableDeclaration","scope":69028,"src":"10988:43:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":68956,"nodeType":"UserDefinedTypeName","pathNode":{"id":68955,"name":"Gear.CodeCommitment","nameLocations":["10988:4:121","10993:14:121"],"nodeType":"IdentifierPath","referencedDeclaration":69945,"src":"10988:19:121"},"referencedDeclaration":69945,"src":"10988:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":68961,"initialValue":{"baseExpression":{"id":68958,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68915,"src":"11034:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69945_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68960,"indexExpression":{"id":68959,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68943,"src":"11051:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11034:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"10988:65:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"},"id":68972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68963,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"11093:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11100:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"11093:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11113:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"11093:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68968,"indexExpression":{"expression":{"id":68966,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11119:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11134:2:121","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69942,"src":"11119:17:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11093:44:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68969,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"11141:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11146:9:121","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69949,"src":"11141:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69949_$","typeString":"type(enum Gear.CodeState)"}},"id":68971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11156:19:121","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69947,"src":"11141:34:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"11093:82:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":68973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11193:55:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":68962,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11068:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11068:194:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68975,"nodeType":"ExpressionStatement","src":"11068:194:121"},{"condition":{"expression":{"id":68976,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11281:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11296:5:121","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69944,"src":"11281:20:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":69007,"nodeType":"Block","src":"11472:84:121","statements":[{"expression":{"id":69005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11490:51:121","subExpression":{"baseExpression":{"expression":{"expression":{"id":68999,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"11497:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11504:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"11497:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11517:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"11497:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":69004,"indexExpression":{"expression":{"id":69002,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11523:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":69003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11538:2:121","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69942,"src":"11523:17:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11497:44:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69006,"nodeType":"ExpressionStatement","src":"11490:51:121"}]},"id":69008,"nodeType":"IfStatement","src":"11277:279:121","trueBody":{"id":68998,"nodeType":"Block","src":"11303:163:121","statements":[{"expression":{"id":68989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68978,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"11321:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11328:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"11321:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11341:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"11321:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68985,"indexExpression":{"expression":{"id":68981,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11347:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11362:2:121","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69942,"src":"11347:17:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11321:44:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68986,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"11368:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":68987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11373:9:121","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69949,"src":"11368:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69949_$","typeString":"type(enum Gear.CodeState)"}},"id":68988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11383:9:121","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69948,"src":"11368:24:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"11321:71:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"id":68990,"nodeType":"ExpressionStatement","src":"11321:71:121"},{"expression":{"id":68996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11410:41:121","subExpression":{"expression":{"expression":{"id":68991,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"11410:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11417:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"11410:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11430:19:121","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69991,"src":"11410:39:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68997,"nodeType":"ExpressionStatement","src":"11410:41:121"}]}},{"eventCall":{"arguments":[{"expression":{"id":69010,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11592:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":69011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11607:2:121","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69942,"src":"11592:17:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69012,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11611:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":69013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11626:5:121","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69944,"src":"11611:20:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":69009,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65438,"src":"11575:16:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":69014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11575:57:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69015,"nodeType":"EmitStatement","src":"11570:62:121"},{"expression":{"id":69026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69016,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68940,"src":"11647:21:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69020,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68940,"src":"11684:21:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":69023,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68957,"src":"11731:14:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$69945_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":69021,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"11707:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11712:18:121","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":70367,"src":"11707:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$69945_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":69024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11707:39:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11671:5:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69017,"name":"bytes","nodeType":"ElementaryTypeName","src":"11671:5:121","typeDescriptions":{}}},"id":69019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11677:6:121","memberName":"concat","nodeType":"MemberAccess","src":"11671:12:121","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11671:76:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11647:100:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69027,"nodeType":"ExpressionStatement","src":"11647:100:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68946,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68943,"src":"10940:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68947,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68915,"src":"10944:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69945_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10961:6:121","memberName":"length","nodeType":"MemberAccess","src":"10944:23:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10940:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69029,"initializationExpression":{"assignments":[68943],"declarations":[{"constant":false,"id":68943,"mutability":"mutable","name":"i","nameLocation":"10933:1:121","nodeType":"VariableDeclaration","scope":69029,"src":"10925:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68942,"name":"uint256","nodeType":"ElementaryTypeName","src":"10925:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68945,"initialValue":{"hexValue":"30","id":68944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10937:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10925:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10969:3:121","subExpression":{"id":68950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68943,"src":"10969:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68952,"nodeType":"ExpressionStatement","src":"10969:3:121"},"nodeType":"ForStatement","src":"10920:838:121"},{"expression":{"arguments":[{"arguments":[{"id":69033,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68923,"src":"11813:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":69035,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68940,"src":"11831:21:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69034,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11821:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11821:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69037,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68918,"src":"11855:11:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":69031,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"11789:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11794:18:121","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":70554,"src":"11789:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":69038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11789:78:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":69039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11881:32:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":69030,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11768:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11768:155:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69041,"nodeType":"ExpressionStatement","src":"11768:155:121"}]},"baseFunctions":[65655],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"10603:11:121","parameters":{"id":68919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68915,"mutability":"mutable","name":"_codeCommitments","nameLocation":"10646:16:121","nodeType":"VariableDeclaration","scope":69043,"src":"10615:47:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69945_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":68913,"nodeType":"UserDefinedTypeName","pathNode":{"id":68912,"name":"Gear.CodeCommitment","nameLocations":["10615:4:121","10620:14:121"],"nodeType":"IdentifierPath","referencedDeclaration":69945,"src":"10615:19:121"},"referencedDeclaration":69945,"src":"10615:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69945_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":68914,"nodeType":"ArrayTypeName","src":"10615:21:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69945_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68918,"mutability":"mutable","name":"_signatures","nameLocation":"10681:11:121","nodeType":"VariableDeclaration","scope":69043,"src":"10664:28:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68916,"name":"bytes","nodeType":"ElementaryTypeName","src":"10664:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68917,"nodeType":"ArrayTypeName","src":"10664:7:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"10614:79:121"},"returnParameters":{"id":68920,"nodeType":"ParameterList","parameters":[],"src":"10703:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69123,"nodeType":"FunctionDefinition","src":"11936:798:121","nodes":[],"body":{"id":69122,"nodeType":"Block","src":"12081:653:121","nodes":[],"statements":[{"assignments":[69057],"declarations":[{"constant":false,"id":69057,"mutability":"mutable","name":"router","nameLocation":"12107:6:121","nodeType":"VariableDeclaration","scope":69122,"src":"12091:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69056,"nodeType":"UserDefinedTypeName","pathNode":{"id":69055,"name":"Storage","nameLocations":["12091:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"12091:7:121"},"referencedDeclaration":65426,"src":"12091:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":69060,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69058,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"12116:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":69059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12116:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12091:34:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69062,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69057,"src":"12143:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12150:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"12143:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12163:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"12143:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12179:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12171:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12171:7:121","typeDescriptions":{}}},"id":69068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12171:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12143:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":69070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12183:58:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":69061,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12135:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12135:107:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69072,"nodeType":"ExpressionStatement","src":"12135:107:121"},{"assignments":[69074],"declarations":[{"constant":false,"id":69074,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"12266:22:121","nodeType":"VariableDeclaration","scope":69122,"src":"12253:35:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69073,"name":"bytes","nodeType":"ElementaryTypeName","src":"12253:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":69075,"nodeType":"VariableDeclarationStatement","src":"12253:35:121"},{"body":{"id":69108,"nodeType":"Block","src":"12354:207:121","statements":[{"assignments":[69091],"declarations":[{"constant":false,"id":69091,"mutability":"mutable","name":"blockCommitment","nameLocation":"12398:15:121","nodeType":"VariableDeclaration","scope":69108,"src":"12368:45:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69090,"nodeType":"UserDefinedTypeName","pathNode":{"id":69089,"name":"Gear.BlockCommitment","nameLocations":["12368:4:121","12373:15:121"],"nodeType":"IdentifierPath","referencedDeclaration":69940,"src":"12368:20:121"},"referencedDeclaration":69940,"src":"12368:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":69095,"initialValue":{"baseExpression":{"id":69092,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69047,"src":"12416:17:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":69094,"indexExpression":{"id":69093,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69077,"src":"12434:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12416:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"12368:68:121"},{"expression":{"id":69106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69096,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69074,"src":"12450:22:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69100,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69074,"src":"12488:22:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":69102,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69057,"src":"12525:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":69103,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69091,"src":"12533:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":69101,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69534,"src":"12512:12:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65426_storage_ptr_$_t_struct$_BlockCommitment_$69940_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":69104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12512:37:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12475:5:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69097,"name":"bytes","nodeType":"ElementaryTypeName","src":"12475:5:121","typeDescriptions":{}}},"id":69099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12481:6:121","memberName":"concat","nodeType":"MemberAccess","src":"12475:12:121","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12475:75:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12450:100:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69107,"nodeType":"ExpressionStatement","src":"12450:100:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69080,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69077,"src":"12319:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69081,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69047,"src":"12323:17:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":69082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12341:6:121","memberName":"length","nodeType":"MemberAccess","src":"12323:24:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12319:28:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69109,"initializationExpression":{"assignments":[69077],"declarations":[{"constant":false,"id":69077,"mutability":"mutable","name":"i","nameLocation":"12312:1:121","nodeType":"VariableDeclaration","scope":69109,"src":"12304:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69076,"name":"uint256","nodeType":"ElementaryTypeName","src":"12304:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69079,"initialValue":{"hexValue":"30","id":69078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12304:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12349:3:121","subExpression":{"id":69084,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69077,"src":"12349:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69086,"nodeType":"ExpressionStatement","src":"12349:3:121"},"nodeType":"ForStatement","src":"12299:262:121"},{"expression":{"arguments":[{"arguments":[{"id":69113,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69057,"src":"12616:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":69115,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69074,"src":"12634:22:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69114,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12624:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12624:33:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69117,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69050,"src":"12659:11:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":69111,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"12592:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12597:18:121","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":70554,"src":"12592:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":69118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12592:79:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":69119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12685:32:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":69110,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12571:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12571:156:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69121,"nodeType":"ExpressionStatement","src":"12571:156:121"}]},"baseFunctions":[65666],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":69053,"kind":"modifierInvocation","modifierName":{"id":69052,"name":"nonReentrant","nameLocations":["12064:12:121"],"nodeType":"IdentifierPath","referencedDeclaration":44262,"src":"12064:12:121"},"nodeType":"ModifierInvocation","src":"12064:12:121"}],"name":"commitBlocks","nameLocation":"11945:12:121","parameters":{"id":69051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69047,"mutability":"mutable","name":"_blockCommitments","nameLocation":"11990:17:121","nodeType":"VariableDeclaration","scope":69123,"src":"11958:49:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":69045,"nodeType":"UserDefinedTypeName","pathNode":{"id":69044,"name":"Gear.BlockCommitment","nameLocations":["11958:4:121","11963:15:121"],"nodeType":"IdentifierPath","referencedDeclaration":69940,"src":"11958:20:121"},"referencedDeclaration":69940,"src":"11958:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":69046,"nodeType":"ArrayTypeName","src":"11958:22:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69940_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":69050,"mutability":"mutable","name":"_signatures","nameLocation":"12026:11:121","nodeType":"VariableDeclaration","scope":69123,"src":"12009:28:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":69048,"name":"bytes","nodeType":"ElementaryTypeName","src":"12009:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":69049,"nodeType":"ArrayTypeName","src":"12009:7:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"11957:81:121"},"returnParameters":{"id":69054,"nodeType":"ParameterList","parameters":[],"src":"12081:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69239,"nodeType":"FunctionDefinition","src":"12740:1416:121","nodes":[],"body":{"id":69238,"nodeType":"Block","src":"12867:1289:121","nodes":[],"statements":[{"assignments":[69134],"declarations":[{"constant":false,"id":69134,"mutability":"mutable","name":"router","nameLocation":"12893:6:121","nodeType":"VariableDeclaration","scope":69238,"src":"12877:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69133,"nodeType":"UserDefinedTypeName","pathNode":{"id":69132,"name":"Storage","nameLocations":["12877:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"12877:7:121"},"referencedDeclaration":65426,"src":"12877:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":69137,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69135,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"12902:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":69136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12902:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12877:34:121"},{"assignments":[69139],"declarations":[{"constant":false,"id":69139,"mutability":"mutable","name":"currentEraIndex","nameLocation":"12930:15:121","nodeType":"VariableDeclaration","scope":69238,"src":"12922:23:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69138,"name":"uint256","nodeType":"ElementaryTypeName","src":"12922:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69151,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69140,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12949:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":69141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12955:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"12949:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":69142,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"12967:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12974:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"12967:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12987:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"12967:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12949:47:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":69146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12948:49:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":69147,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13000:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13007:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"13000:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":69149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13017:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"13000:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12948:72:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12922:98:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69153,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69126,"src":"13073:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment calldata"}},"id":69154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13084:8:121","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":70016,"src":"13073:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":69155,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69139,"src":"13096:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13073:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6d6d69746d656e742065726120696e64657820697320696e76616c6964","id":69157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13113:33:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_6962d7ed758031ef63f521eb817abc5889039889a0022353202140eb3a1801e4","typeString":"literal_string \"commitment era index is invalid\""},"value":"commitment era index is invalid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6962d7ed758031ef63f521eb817abc5889039889a0022353202140eb3a1801e4","typeString":"literal_string \"commitment era index is invalid\""}],"id":69152,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13065:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13065:82:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69159,"nodeType":"ExpressionStatement","src":"13065:82:121"},{"assignments":[69161],"declarations":[{"constant":false,"id":69161,"mutability":"mutable","name":"eraStart","nameLocation":"13215:8:121","nodeType":"VariableDeclaration","scope":69238,"src":"13207:16:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69160,"name":"uint256","nodeType":"ElementaryTypeName","src":"13207:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69171,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69162,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13226:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13233:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"13226:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13246:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"13226:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69165,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13258:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13265:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"13258:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":69167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13275:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"13258:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":69168,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69139,"src":"13281:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13258:38:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13226:70:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13207:89:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69173,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13314:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":69174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13320:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"13314:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":69175,"name":"eraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69161,"src":"13333:8:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13314:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63757272656e742065726120686173206e6f74207374617274656420796574","id":69177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13343:33:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_597a9d5ceb1fe722a2a99648df1973e6dd79987bbecb5b69b2eb0cedc2ba6cf3","typeString":"literal_string \"current era has not started yet\""},"value":"current era has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_597a9d5ceb1fe722a2a99648df1973e6dd79987bbecb5b69b2eb0cedc2ba6cf3","typeString":"literal_string \"current era has not started yet\""}],"id":69172,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13306:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13306:71:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69179,"nodeType":"ExpressionStatement","src":"13306:71:121"},{"assignments":[69181],"declarations":[{"constant":false,"id":69181,"mutability":"mutable","name":"commitmentHash","nameLocation":"13427:14:121","nodeType":"VariableDeclaration","scope":69238,"src":"13419:22:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69180,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13419:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69186,"initialValue":{"arguments":[{"id":69184,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69126,"src":"13476:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment calldata"}],"expression":{"id":69182,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"13444:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13449:26:121","memberName":"requestSlashCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":70075,"src":"13444:31:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RequestSlashCommitment_$70021_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.RequestSlashCommitment memory) pure returns (bytes32)"}},"id":69185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13444:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13419:68:121"},{"expression":{"arguments":[{"arguments":[{"id":69190,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13542:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":69194,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69181,"src":"13577:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69192,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13560:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13564:12:121","memberName":"encodePacked","nodeType":"MemberAccess","src":"13560:16:121","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13560:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69191,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13550:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13550:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69197,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69129,"src":"13595:10:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":69188,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"13518:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13523:18:121","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":70554,"src":"13518:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":69198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13518:88:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7265717565737420736c61736820636f6d6d69746d656e74207369676e61747572657320766572696669636174696f6e206661696c6564","id":69199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13620:57:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef9da4b0a58c3500fcc12111cb3a932d11810806abbef4a4d9f95d25b4f38ba7","typeString":"literal_string \"request slash commitment signatures verification failed\""},"value":"request slash commitment signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef9da4b0a58c3500fcc12111cb3a932d11810806abbef4a4d9f95d25b4f38ba7","typeString":"literal_string \"request slash commitment signatures verification failed\""}],"id":69187,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13497:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13497:190:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69201,"nodeType":"ExpressionStatement","src":"13497:190:121"},{"assignments":[69203],"declarations":[{"constant":false,"id":69203,"mutability":"mutable","name":"middlewareAddress","nameLocation":"13742:17:121","nodeType":"VariableDeclaration","scope":69238,"src":"13734:25:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69202,"name":"address","nodeType":"ElementaryTypeName","src":"13734:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69207,"initialValue":{"expression":{"expression":{"id":69204,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13762:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69205,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13769:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"13762:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13783:10:121","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":69920,"src":"13762:31:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13734:59:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":69214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69209,"name":"middlewareAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69203,"src":"13811:17:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13840:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13832:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":69210,"name":"address","nodeType":"ElementaryTypeName","src":"13832:7:121","typeDescriptions":{}}},"id":69213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13832:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13811:31:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6964646c65776172652061646472657373206e6f7420736574","id":69215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13844:28:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_19d8ce78ada06c0d7103500262e079ed509b280169b3cc86264970f0df0fdf40","typeString":"literal_string \"Middleware address not set\""},"value":"Middleware address not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19d8ce78ada06c0d7103500262e079ed509b280169b3cc86264970f0df0fdf40","typeString":"literal_string \"Middleware address not set\""}],"id":69208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13803:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13803:70:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69217,"nodeType":"ExpressionStatement","src":"13803:70:121"},{"assignments":[69220],"declarations":[{"constant":false,"id":69220,"mutability":"mutable","name":"middlewareInstance","nameLocation":"13896:18:121","nodeType":"VariableDeclaration","scope":69238,"src":"13884:30:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"},"typeName":{"id":69219,"nodeType":"UserDefinedTypeName","pathNode":{"id":69218,"name":"IMiddleware","nameLocations":["13884:11:121"],"nodeType":"IdentifierPath","referencedDeclaration":65200,"src":"13884:11:121"},"referencedDeclaration":65200,"src":"13884:11:121","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"visibility":"internal"}],"id":69224,"initialValue":{"arguments":[{"id":69222,"name":"middlewareAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69203,"src":"13929:17:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69221,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65200,"src":"13917:11:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$65200_$","typeString":"type(contract IMiddleware)"}},"id":69223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13917:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"nodeType":"VariableDeclarationStatement","src":"13884:63:121"},{"expression":{"arguments":[{"expression":{"id":69228,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69126,"src":"14047:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment calldata"}},"id":69229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14058:7:121","memberName":"slashes","nodeType":"MemberAccess","referencedDeclaration":70020,"src":"14047:18:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$65069_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_SlashData_$65069_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}],"expression":{"id":69225,"name":"middlewareInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69220,"src":"14015:18:121","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"id":69227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14034:12:121","memberName":"requestSlash","nodeType":"MemberAccess","referencedDeclaration":65192,"src":"14015:31:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_SlashData_$65069_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IMiddleware.SlashData memory[] memory) external"}},"id":69230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14015:51:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69231,"nodeType":"ExpressionStatement","src":"14015:51:121"},{"eventCall":{"arguments":[{"id":69233,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69181,"src":"14114:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69234,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69126,"src":"14130:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment calldata"}},"id":69235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14141:7:121","memberName":"slashes","nodeType":"MemberAccess","referencedDeclaration":70020,"src":"14130:18:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$65069_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_SlashData_$65069_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}],"id":69232,"name":"RequestSlashCommitmentProcessed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65473,"src":"14082:31:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_array$_t_struct$_SlashData_$65069_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes32,struct IMiddleware.SlashData memory[] memory)"}},"id":69236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14082:67:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69237,"nodeType":"EmitStatement","src":"14077:72:121"}]},"baseFunctions":[65685],"functionSelector":"e2f37924","implemented":true,"kind":"function","modifiers":[],"name":"commitRequestSlash","nameLocation":"12749:18:121","parameters":{"id":69130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69126,"mutability":"mutable","name":"commitment","nameLocation":"12805:10:121","nodeType":"VariableDeclaration","scope":69239,"src":"12768:47:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_calldata_ptr","typeString":"struct Gear.RequestSlashCommitment"},"typeName":{"id":69125,"nodeType":"UserDefinedTypeName","pathNode":{"id":69124,"name":"Gear.RequestSlashCommitment","nameLocations":["12768:4:121","12773:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":70021,"src":"12768:27:121"},"referencedDeclaration":70021,"src":"12768:27:121","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSlashCommitment_$70021_storage_ptr","typeString":"struct Gear.RequestSlashCommitment"}},"visibility":"internal"},{"constant":false,"id":69129,"mutability":"mutable","name":"signatures","nameLocation":"12834:10:121","nodeType":"VariableDeclaration","scope":69239,"src":"12817:27:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":69127,"name":"bytes","nodeType":"ElementaryTypeName","src":"12817:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":69128,"nodeType":"ArrayTypeName","src":"12817:7:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"12767:78:121"},"returnParameters":{"id":69131,"nodeType":"ParameterList","parameters":[],"src":"12867:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69355,"nodeType":"FunctionDefinition","src":"14162:1434:121","nodes":[],"body":{"id":69354,"nodeType":"Block","src":"14289:1307:121","nodes":[],"statements":[{"assignments":[69250],"declarations":[{"constant":false,"id":69250,"mutability":"mutable","name":"router","nameLocation":"14315:6:121","nodeType":"VariableDeclaration","scope":69354,"src":"14299:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69249,"nodeType":"UserDefinedTypeName","pathNode":{"id":69248,"name":"Storage","nameLocations":["14299:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"14299:7:121"},"referencedDeclaration":65426,"src":"14299:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":69253,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69251,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"14324:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":69252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14324:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14299:34:121"},{"assignments":[69255],"declarations":[{"constant":false,"id":69255,"mutability":"mutable","name":"currentEraIndex","nameLocation":"14352:15:121","nodeType":"VariableDeclaration","scope":69354,"src":"14344:23:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69254,"name":"uint256","nodeType":"ElementaryTypeName","src":"14344:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69267,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69256,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14371:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":69257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14377:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"14371:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":69258,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"14389:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14396:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"14389:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14409:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"14389:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14371:47:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":69262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14370:49:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":69263,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"14422:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14429:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"14422:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":69265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14439:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"14422:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14370:72:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14344:98:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69269,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69242,"src":"14495:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment calldata"}},"id":69270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14506:8:121","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":70023,"src":"14495:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":69271,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69255,"src":"14518:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14495:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6d6d69746d656e742065726120696e64657820697320696e76616c6964","id":69273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14535:33:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_6962d7ed758031ef63f521eb817abc5889039889a0022353202140eb3a1801e4","typeString":"literal_string \"commitment era index is invalid\""},"value":"commitment era index is invalid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6962d7ed758031ef63f521eb817abc5889039889a0022353202140eb3a1801e4","typeString":"literal_string \"commitment era index is invalid\""}],"id":69268,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14487:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14487:82:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69275,"nodeType":"ExpressionStatement","src":"14487:82:121"},{"assignments":[69277],"declarations":[{"constant":false,"id":69277,"mutability":"mutable","name":"eraStart","nameLocation":"14637:8:121","nodeType":"VariableDeclaration","scope":69354,"src":"14629:16:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69276,"name":"uint256","nodeType":"ElementaryTypeName","src":"14629:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69287,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69278,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"14648:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14655:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"14648:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14668:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69965,"src":"14648:29:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69281,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"14680:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14687:9:121","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65421,"src":"14680:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$70033_storage","typeString":"struct Gear.Timelines storage ref"}},"id":69283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14697:3:121","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":70030,"src":"14680:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":69284,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69255,"src":"14703:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14680:38:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14648:70:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14629:89:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69289,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14736:5:121","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":69290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14742:9:121","memberName":"timestamp","nodeType":"MemberAccess","src":"14736:15:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":69291,"name":"eraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69277,"src":"14755:8:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14736:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63757272656e742065726120686173206e6f74207374617274656420796574","id":69293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14765:33:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_597a9d5ceb1fe722a2a99648df1973e6dd79987bbecb5b69b2eb0cedc2ba6cf3","typeString":"literal_string \"current era has not started yet\""},"value":"current era has not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_597a9d5ceb1fe722a2a99648df1973e6dd79987bbecb5b69b2eb0cedc2ba6cf3","typeString":"literal_string \"current era has not started yet\""}],"id":69288,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14728:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14728:71:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69295,"nodeType":"ExpressionStatement","src":"14728:71:121"},{"assignments":[69297],"declarations":[{"constant":false,"id":69297,"mutability":"mutable","name":"commitmentHash","nameLocation":"14849:14:121","nodeType":"VariableDeclaration","scope":69354,"src":"14841:22:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14841:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69302,"initialValue":{"arguments":[{"id":69300,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69242,"src":"14898:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment calldata"}],"expression":{"id":69298,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"14866:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14871:26:121","memberName":"executeSlashCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":70101,"src":"14866:31:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ExecuteSlashCommitment_$70028_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ExecuteSlashCommitment memory) pure returns (bytes32)"}},"id":69301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14866:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14841:68:121"},{"expression":{"arguments":[{"arguments":[{"id":69306,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"14964:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":69310,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69297,"src":"14999:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69308,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14982:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14986:12:121","memberName":"encodePacked","nodeType":"MemberAccess","src":"14982:16:121","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14982:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69307,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14972:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14972:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69313,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69245,"src":"15017:10:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":69304,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"14940:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14945:18:121","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":70554,"src":"14940:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65426_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":69314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14940:88:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6578656375746520736c61736820636f6d6d69746d656e74207369676e61747572657320766572696669636174696f6e206661696c6564","id":69315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15042:57:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_6646e52e14e03ab7523f26d39e5c74cf1e84388392206c49743c2c6371da7820","typeString":"literal_string \"execute slash commitment signatures verification failed\""},"value":"execute slash commitment signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6646e52e14e03ab7523f26d39e5c74cf1e84388392206c49743c2c6371da7820","typeString":"literal_string \"execute slash commitment signatures verification failed\""}],"id":69303,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14919:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14919:190:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69317,"nodeType":"ExpressionStatement","src":"14919:190:121"},{"assignments":[69319],"declarations":[{"constant":false,"id":69319,"mutability":"mutable","name":"middlewareAddress","nameLocation":"15164:17:121","nodeType":"VariableDeclaration","scope":69354,"src":"15156:25:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69318,"name":"address","nodeType":"ElementaryTypeName","src":"15156:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69323,"initialValue":{"expression":{"expression":{"id":69320,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"15184:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15191:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"15184:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15205:10:121","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":69920,"src":"15184:31:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15156:59:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":69330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69325,"name":"middlewareAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69319,"src":"15233:17:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15262:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15254:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":69326,"name":"address","nodeType":"ElementaryTypeName","src":"15254:7:121","typeDescriptions":{}}},"id":69329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15233:31:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6964646c65776172652061646472657373206e6f7420736574","id":69331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15266:28:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_19d8ce78ada06c0d7103500262e079ed509b280169b3cc86264970f0df0fdf40","typeString":"literal_string \"Middleware address not set\""},"value":"Middleware address not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19d8ce78ada06c0d7103500262e079ed509b280169b3cc86264970f0df0fdf40","typeString":"literal_string \"Middleware address not set\""}],"id":69324,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15225:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15225:70:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69333,"nodeType":"ExpressionStatement","src":"15225:70:121"},{"assignments":[69336],"declarations":[{"constant":false,"id":69336,"mutability":"mutable","name":"middlewareInstance","nameLocation":"15318:18:121","nodeType":"VariableDeclaration","scope":69354,"src":"15306:30:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"},"typeName":{"id":69335,"nodeType":"UserDefinedTypeName","pathNode":{"id":69334,"name":"IMiddleware","nameLocations":["15306:11:121"],"nodeType":"IdentifierPath","referencedDeclaration":65200,"src":"15306:11:121"},"referencedDeclaration":65200,"src":"15306:11:121","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"visibility":"internal"}],"id":69340,"initialValue":{"arguments":[{"id":69338,"name":"middlewareAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69319,"src":"15351:17:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69337,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65200,"src":"15339:11:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$65200_$","typeString":"type(contract IMiddleware)"}},"id":69339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15339:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"nodeType":"VariableDeclarationStatement","src":"15306:63:121"},{"expression":{"arguments":[{"expression":{"id":69344,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69242,"src":"15469:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment calldata"}},"id":69345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15480:16:121","memberName":"slashIdentifiers","nodeType":"MemberAccess","referencedDeclaration":70027,"src":"15469:27:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$65074_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$65074_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}],"expression":{"id":69341,"name":"middlewareInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69336,"src":"15437:18:121","typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$65200","typeString":"contract IMiddleware"}},"id":69343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15456:12:121","memberName":"executeSlash","nodeType":"MemberAccess","referencedDeclaration":65199,"src":"15437:31:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_struct$_SlashIdentifier_$65074_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IMiddleware.SlashIdentifier memory[] memory) external"}},"id":69346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15437:60:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69347,"nodeType":"ExpressionStatement","src":"15437:60:121"},{"eventCall":{"arguments":[{"id":69349,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69297,"src":"15545:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69350,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69242,"src":"15561:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment calldata"}},"id":69351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15572:16:121","memberName":"slashIdentifiers","nodeType":"MemberAccess","referencedDeclaration":70027,"src":"15561:27:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$65074_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$65074_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}],"id":69348,"name":"ExecuteSlashCommitmentProcessed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65482,"src":"15513:31:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_array$_t_struct$_SlashIdentifier_$65074_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes32,struct IMiddleware.SlashIdentifier memory[] memory)"}},"id":69352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15513:76:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69353,"nodeType":"EmitStatement","src":"15508:81:121"}]},"baseFunctions":[65694],"functionSelector":"45c955a1","implemented":true,"kind":"function","modifiers":[],"name":"commitExecuteSlash","nameLocation":"14171:18:121","parameters":{"id":69246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69242,"mutability":"mutable","name":"commitment","nameLocation":"14227:10:121","nodeType":"VariableDeclaration","scope":69355,"src":"14190:47:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_calldata_ptr","typeString":"struct Gear.ExecuteSlashCommitment"},"typeName":{"id":69241,"nodeType":"UserDefinedTypeName","pathNode":{"id":69240,"name":"Gear.ExecuteSlashCommitment","nameLocations":["14190:4:121","14195:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":70028,"src":"14190:27:121"},"referencedDeclaration":70028,"src":"14190:27:121","typeDescriptions":{"typeIdentifier":"t_struct$_ExecuteSlashCommitment_$70028_storage_ptr","typeString":"struct Gear.ExecuteSlashCommitment"}},"visibility":"internal"},{"constant":false,"id":69245,"mutability":"mutable","name":"signatures","nameLocation":"14256:10:121","nodeType":"VariableDeclaration","scope":69355,"src":"14239:27:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":69243,"name":"bytes","nodeType":"ElementaryTypeName","src":"14239:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":69244,"nodeType":"ArrayTypeName","src":"14239:7:121","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"14189:78:121"},"returnParameters":{"id":69247,"nodeType":"ParameterList","parameters":[],"src":"14289:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69436,"nodeType":"FunctionDefinition","src":"15638:887:121","nodes":[],"body":{"id":69435,"nodeType":"Block","src":"15720:805:121","nodes":[],"statements":[{"assignments":[69366],"declarations":[{"constant":false,"id":69366,"mutability":"mutable","name":"router","nameLocation":"15746:6:121","nodeType":"VariableDeclaration","scope":69435,"src":"15730:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69365,"nodeType":"UserDefinedTypeName","pathNode":{"id":69364,"name":"Storage","nameLocations":["15730:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"15730:7:121"},"referencedDeclaration":65426,"src":"15730:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":69369,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69367,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69712,"src":"15755:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65426_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":69368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15755:9:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15730:34:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69371,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69366,"src":"15782:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15789:12:121","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65401,"src":"15782:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69966_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15802:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69961,"src":"15782:24:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15818:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":69375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15810:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15810:7:121","typeDescriptions":{}}},"id":69377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15810:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15782:38:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":69379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15822:58:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":69370,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15774:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15774:107:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69381,"nodeType":"ExpressionStatement","src":"15774:107:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"},"id":69391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69383,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69366,"src":"15913:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15920:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"15913:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15933:5:121","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69983,"src":"15913:25:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69949_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":69387,"indexExpression":{"id":69386,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69357,"src":"15939:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15913:34:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":69388,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"15951:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15956:9:121","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69949,"src":"15951:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69949_$","typeString":"type(enum Gear.CodeState)"}},"id":69390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15966:9:121","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69948,"src":"15951:24:121","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69949","typeString":"enum Gear.CodeState"}},"src":"15913:62:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":69392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15989:48:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":69382,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15892:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15892:155:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69394,"nodeType":"ExpressionStatement","src":"15892:155:121"},{"assignments":[69396],"declarations":[{"constant":false,"id":69396,"mutability":"mutable","name":"actorId","nameLocation":"16216:7:121","nodeType":"VariableDeclaration","scope":69435,"src":"16208:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69395,"name":"address","nodeType":"ElementaryTypeName","src":"16208:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69410,"initialValue":{"arguments":[{"expression":{"expression":{"id":69399,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69366,"src":"16264:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16271:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"16264:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16285:11:121","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69916,"src":"16264:32:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":69405,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69357,"src":"16325:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69406,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69359,"src":"16334:5:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69403,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16308:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16312:12:121","memberName":"encodePacked","nodeType":"MemberAccess","src":"16308:16:121","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16308:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69402,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16298:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16298:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69397,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"16238:6:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16245:18:121","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"16238:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16238:104:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16208:134:121"},{"expression":{"id":69419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":69411,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69366,"src":"16353:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16360:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"16353:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16373:8:121","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69987,"src":"16353:28:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69417,"indexExpression":{"id":69414,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69396,"src":"16382:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16353:37:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69418,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69357,"src":"16393:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16353:47:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69420,"nodeType":"ExpressionStatement","src":"16353:47:121"},{"expression":{"id":69426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16410:35:121","subExpression":{"expression":{"expression":{"id":69421,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69366,"src":"16410:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16417:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"16410:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16430:13:121","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69989,"src":"16410:33:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69427,"nodeType":"ExpressionStatement","src":"16410:35:121"},{"eventCall":{"arguments":[{"id":69429,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69396,"src":"16476:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69430,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69357,"src":"16485:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69428,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65464,"src":"16461:14:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":69431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16461:32:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69432,"nodeType":"EmitStatement","src":"16456:37:121"},{"expression":{"id":69433,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69396,"src":"16511:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69363,"id":69434,"nodeType":"Return","src":"16504:14:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"15647:14:121","parameters":{"id":69360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69357,"mutability":"mutable","name":"_codeId","nameLocation":"15670:7:121","nodeType":"VariableDeclaration","scope":69436,"src":"15662:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15662:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69359,"mutability":"mutable","name":"_salt","nameLocation":"15687:5:121","nodeType":"VariableDeclaration","scope":69436,"src":"15679:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69358,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15679:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15661:32:121"},"returnParameters":{"id":69363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69436,"src":"15711:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69361,"name":"address","nodeType":"ElementaryTypeName","src":"15711:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15710:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69465,"nodeType":"FunctionDefinition","src":"16531:270:121","nodes":[],"body":{"id":69464,"nodeType":"Block","src":"16638:163:121","nodes":[],"statements":[{"assignments":[69448],"declarations":[{"constant":false,"id":69448,"mutability":"mutable","name":"decoder","nameLocation":"16656:7:121","nodeType":"VariableDeclaration","scope":69464,"src":"16648:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69447,"name":"address","nodeType":"ElementaryTypeName","src":"16648:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69454,"initialValue":{"arguments":[{"id":69451,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69438,"src":"16692:15:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69452,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69440,"src":"16709:5:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69449,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"16666:6:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16673:18:121","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"16666:25:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16666:49:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16648:67:121"},{"expression":{"arguments":[{"id":69459,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69442,"src":"16761:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":69456,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69448,"src":"16741:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69455,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65381,"src":"16726:14:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65381_$","typeString":"type(contract IMirrorDecoder)"}},"id":69457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16726:23:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$65381","typeString":"contract IMirrorDecoder"}},"id":69458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16750:10:121","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65351,"src":"16726:34:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":69460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16726:43:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69461,"nodeType":"ExpressionStatement","src":"16726:43:121"},{"expression":{"id":69462,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69448,"src":"16787:7:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69446,"id":69463,"nodeType":"Return","src":"16780:14:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"16540:14:121","parameters":{"id":69443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69438,"mutability":"mutable","name":"_implementation","nameLocation":"16563:15:121","nodeType":"VariableDeclaration","scope":69465,"src":"16555:23:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69437,"name":"address","nodeType":"ElementaryTypeName","src":"16555:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69440,"mutability":"mutable","name":"_salt","nameLocation":"16588:5:121","nodeType":"VariableDeclaration","scope":69465,"src":"16580:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69439,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16580:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69442,"mutability":"mutable","name":"_mirror","nameLocation":"16603:7:121","nodeType":"VariableDeclaration","scope":69465,"src":"16595:15:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69441,"name":"address","nodeType":"ElementaryTypeName","src":"16595:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16554:57:121"},"returnParameters":{"id":69446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69445,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69465,"src":"16629:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69444,"name":"address","nodeType":"ElementaryTypeName","src":"16629:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16628:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69534,"nodeType":"FunctionDefinition","src":"16807:1094:121","nodes":[],"body":{"id":69533,"nodeType":"Block","src":"16947:954:121","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69477,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69468,"src":"16978:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16985:20:121","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65405,"src":"16978:27:121","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69954_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17006:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69951,"src":"16978:32:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":69480,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17014:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17031:22:121","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69933,"src":"17014:39:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16978:75:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":69483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17067:39:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":69476,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16957:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16957:159:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69485,"nodeType":"ExpressionStatement","src":"16957:159:121"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":69489,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17159:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17176:16:121","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69935,"src":"17159:33:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69487,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"17135:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17140:18:121","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":70348,"src":"17135:23:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":69491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17135:58:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":69492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17195:40:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":69486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17127:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17127:109:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69494,"nodeType":"ExpressionStatement","src":"17127:109:121"},{"expression":{"id":69505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69495,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69468,"src":"17376:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17383:20:121","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65405,"src":"17376:27:121","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69954_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":69500,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17430:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17447:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69929,"src":"17430:21:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69502,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17453:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17470:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69931,"src":"17453:26:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":69498,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"17406:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17411:18:121","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":69954,"src":"17406:23:121","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$69954_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":69504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17406:74:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69954_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"17376:104:121","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69954_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69506,"nodeType":"ExpressionStatement","src":"17376:104:121"},{"assignments":[69508],"declarations":[{"constant":false,"id":69508,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"17499:21:121","nodeType":"VariableDeclaration","scope":69533,"src":"17491:29:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69507,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17491:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69514,"initialValue":{"arguments":[{"id":69510,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69468,"src":"17542:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":69511,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17550:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17567:11:121","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":69939,"src":"17550:28:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":69509,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69619,"src":"17523:18:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65426_storage_ptr_$_t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":69513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17523:56:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17491:88:121"},{"eventCall":{"arguments":[{"expression":{"id":69516,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17610:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17627:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69929,"src":"17610:21:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69515,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65431,"src":"17595:14:121","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":69518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17595:37:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69519,"nodeType":"EmitStatement","src":"17590:42:121"},{"expression":{"arguments":[{"expression":{"id":69522,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17688:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17705:4:121","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69929,"src":"17688:21:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69524,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17723:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17740:9:121","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69931,"src":"17723:26:121","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":69526,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17763:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17780:22:121","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69933,"src":"17763:39:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69528,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69471,"src":"17816:16:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17833:16:121","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69935,"src":"17816:33:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69530,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69508,"src":"17863:21:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69520,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70712,"src":"17650:4:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70712_$","typeString":"type(library Gear)"}},"id":69521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17655:19:121","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":70304,"src":"17650:24:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":69531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17650:244:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69475,"id":69532,"nodeType":"Return","src":"17643:251:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"16816:12:121","parameters":{"id":69472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69468,"mutability":"mutable","name":"router","nameLocation":"16845:6:121","nodeType":"VariableDeclaration","scope":69534,"src":"16829:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69467,"nodeType":"UserDefinedTypeName","pathNode":{"id":69466,"name":"Storage","nameLocations":["16829:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"16829:7:121"},"referencedDeclaration":65426,"src":"16829:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69471,"mutability":"mutable","name":"_blockCommitment","nameLocation":"16883:16:121","nodeType":"VariableDeclaration","scope":69534,"src":"16853:46:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69470,"nodeType":"UserDefinedTypeName","pathNode":{"id":69469,"name":"Gear.BlockCommitment","nameLocations":["16853:4:121","16858:15:121"],"nodeType":"IdentifierPath","referencedDeclaration":69940,"src":"16853:20:121"},"referencedDeclaration":69940,"src":"16853:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69940_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"16828:72:121"},"returnParameters":{"id":69475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69534,"src":"16934:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16934:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16933:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69619,"nodeType":"FunctionDefinition","src":"17907:839:121","nodes":[],"body":{"id":69618,"nodeType":"Block","src":"18051:695:121","nodes":[],"statements":[{"assignments":[69547],"declarations":[{"constant":false,"id":69547,"mutability":"mutable","name":"transitionsHashes","nameLocation":"18074:17:121","nodeType":"VariableDeclaration","scope":69618,"src":"18061:30:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69546,"name":"bytes","nodeType":"ElementaryTypeName","src":"18061:5:121","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":69548,"nodeType":"VariableDeclarationStatement","src":"18061:30:121"},{"body":{"id":69612,"nodeType":"Block","src":"18152:542:121","statements":[{"assignments":[69564],"declarations":[{"constant":false,"id":69564,"mutability":"mutable","name":"transition","nameLocation":"18196:10:121","nodeType":"VariableDeclaration","scope":69612,"src":"18166:40:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":69563,"nodeType":"UserDefinedTypeName","pathNode":{"id":69562,"name":"Gear.StateTransition","nameLocations":["18166:4:121","18171:15:121"],"nodeType":"IdentifierPath","referencedDeclaration":70014,"src":"18166:20:121"},"referencedDeclaration":70014,"src":"18166:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":69568,"initialValue":{"baseExpression":{"id":69565,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69541,"src":"18209:12:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69567,"indexExpression":{"id":69566,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69550,"src":"18222:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18209:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"18166:58:121"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69570,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69537,"src":"18264:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18271:12:121","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65425,"src":"18264:19:121","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69992_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18284:8:121","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69987,"src":"18264:28:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69575,"indexExpression":{"expression":{"id":69573,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69564,"src":"18293:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18304:7:121","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69999,"src":"18293:18:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18264:48:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":69576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18316:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18264:53:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":69578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18319:49:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":69569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18239:7:121","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18239:143:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69580,"nodeType":"ExpressionStatement","src":"18239:143:121"},{"expression":{"arguments":[{"expression":{"id":69587,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69564,"src":"18453:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18464:7:121","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69999,"src":"18453:18:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":69589,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69564,"src":"18473:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18484:14:121","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":70005,"src":"18473:25:121","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"expression":{"id":69582,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69537,"src":"18410:6:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18417:13:121","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65409,"src":"18410:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69921_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18431:11:121","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69918,"src":"18410:32:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69581,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65706,"src":"18397:12:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65706_$","typeString":"type(contract IWrappedVara)"}},"id":69585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:46:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65706","typeString":"contract IWrappedVara"}},"id":69586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18444:8:121","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"18397:55:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":69591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:102:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69592,"nodeType":"ExpressionStatement","src":"18397:102:121"},{"assignments":[69594],"declarations":[{"constant":false,"id":69594,"mutability":"mutable","name":"transitionHash","nameLocation":"18522:14:121","nodeType":"VariableDeclaration","scope":69612,"src":"18514:22:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69593,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18514:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69602,"initialValue":{"arguments":[{"id":69600,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69564,"src":"18590:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":69596,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69564,"src":"18547:10:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18558:7:121","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69999,"src":"18547:18:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69595,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65344,"src":"18539:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65344_$","typeString":"type(contract IMirror)"}},"id":69598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18539:27:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65344","typeString":"contract IMirror"}},"id":69599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18567:22:121","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":65343,"src":"18539:50:121","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$70014_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":69601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18539:62:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18514:87:121"},{"expression":{"id":69610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69603,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69547,"src":"18616:17:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69607,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69547,"src":"18649:17:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":69608,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69594,"src":"18668:14:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18636:5:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69604,"name":"bytes","nodeType":"ElementaryTypeName","src":"18636:5:121","typeDescriptions":{}}},"id":69606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18642:6:121","memberName":"concat","nodeType":"MemberAccess","src":"18636:12:121","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18636:47:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"18616:67:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69611,"nodeType":"ExpressionStatement","src":"18616:67:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69553,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69550,"src":"18122:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69554,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69541,"src":"18126:12:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18139:6:121","memberName":"length","nodeType":"MemberAccess","src":"18126:19:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18122:23:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69613,"initializationExpression":{"assignments":[69550],"declarations":[{"constant":false,"id":69550,"mutability":"mutable","name":"i","nameLocation":"18115:1:121","nodeType":"VariableDeclaration","scope":69613,"src":"18107:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69549,"name":"uint256","nodeType":"ElementaryTypeName","src":"18107:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69552,"initialValue":{"hexValue":"30","id":69551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18119:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18107:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18147:3:121","subExpression":{"id":69557,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69550,"src":"18147:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69559,"nodeType":"ExpressionStatement","src":"18147:3:121"},"nodeType":"ForStatement","src":"18102:592:121"},{"expression":{"arguments":[{"id":69615,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69547,"src":"18721:17:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69614,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18711:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18711:28:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69545,"id":69617,"nodeType":"Return","src":"18704:35:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"17916:18:121","parameters":{"id":69542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69537,"mutability":"mutable","name":"router","nameLocation":"17951:6:121","nodeType":"VariableDeclaration","scope":69619,"src":"17935:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69536,"nodeType":"UserDefinedTypeName","pathNode":{"id":69535,"name":"Storage","nameLocations":["17935:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"17935:7:121"},"referencedDeclaration":65426,"src":"17935:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69541,"mutability":"mutable","name":"_transitions","nameLocation":"17991:12:121","nodeType":"VariableDeclaration","scope":69619,"src":"17959:44:121","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":69539,"nodeType":"UserDefinedTypeName","pathNode":{"id":69538,"name":"Gear.StateTransition","nameLocations":["17959:4:121","17964:15:121"],"nodeType":"IdentifierPath","referencedDeclaration":70014,"src":"17959:20:121"},"referencedDeclaration":70014,"src":"17959:20:121","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$70014_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":69540,"nodeType":"ArrayTypeName","src":"17959:22:121","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$70014_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"17934:70:121"},"returnParameters":{"id":69545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69619,"src":"18038:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18038:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18037:9:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69699,"nodeType":"FunctionDefinition","src":"18752:618:121","nodes":[],"body":{"id":69698,"nodeType":"Block","src":"18913:457:121","nodes":[],"statements":[{"body":{"id":69657,"nodeType":"Block","src":"18977:114:121","statements":[{"assignments":[69643],"declarations":[{"constant":false,"id":69643,"mutability":"mutable","name":"_validator","nameLocation":"18999:10:121","nodeType":"VariableDeclaration","scope":69657,"src":"18991:18:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69642,"name":"address","nodeType":"ElementaryTypeName","src":"18991:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69648,"initialValue":{"baseExpression":{"expression":{"id":69644,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"19012:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19024:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"19012:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69647,"indexExpression":{"id":69646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69631,"src":"19029:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19012:19:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18991:40:121"},{"expression":{"id":69655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69649,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"19045:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19057:3:121","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69906,"src":"19045:15:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69653,"indexExpression":{"id":69651,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69643,"src":"19061:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19045:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":69654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19075:5:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19045:35:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69656,"nodeType":"ExpressionStatement","src":"19045:35:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69634,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69631,"src":"18943:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":69635,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"18947:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18959:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"18947:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18964:6:121","memberName":"length","nodeType":"MemberAccess","src":"18947:23:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18943:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69658,"initializationExpression":{"assignments":[69631],"declarations":[{"constant":false,"id":69631,"mutability":"mutable","name":"i","nameLocation":"18936:1:121","nodeType":"VariableDeclaration","scope":69658,"src":"18928:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69630,"name":"uint256","nodeType":"ElementaryTypeName","src":"18928:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69633,"initialValue":{"hexValue":"30","id":69632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18940:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18928:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18972:3:121","subExpression":{"id":69639,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69631,"src":"18972:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69641,"nodeType":"ExpressionStatement","src":"18972:3:121"},"nodeType":"ForStatement","src":"18923:168:121"},{"body":{"id":69684,"nodeType":"Block","src":"19152:111:121","statements":[{"assignments":[69671],"declarations":[{"constant":false,"id":69671,"mutability":"mutable","name":"_validator","nameLocation":"19174:10:121","nodeType":"VariableDeclaration","scope":69684,"src":"19166:18:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69670,"name":"address","nodeType":"ElementaryTypeName","src":"19166:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69675,"initialValue":{"baseExpression":{"id":69672,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69625,"src":"19187:14:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69674,"indexExpression":{"id":69673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69660,"src":"19202:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19187:17:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19166:38:121"},{"expression":{"id":69682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69676,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"19218:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19230:3:121","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69906,"src":"19218:15:121","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69680,"indexExpression":{"id":69678,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69671,"src":"19234:10:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19218:27:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":69681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19248:4:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19218:34:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69683,"nodeType":"ExpressionStatement","src":"19218:34:121"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69660,"src":"19120:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69664,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69625,"src":"19124:14:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19139:6:121","memberName":"length","nodeType":"MemberAccess","src":"19124:21:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19120:25:121","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69685,"initializationExpression":{"assignments":[69660],"declarations":[{"constant":false,"id":69660,"mutability":"mutable","name":"i","nameLocation":"19113:1:121","nodeType":"VariableDeclaration","scope":69685,"src":"19105:9:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69659,"name":"uint256","nodeType":"ElementaryTypeName","src":"19105:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69662,"initialValue":{"hexValue":"30","id":69661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19117:1:121","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19105:13:121"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19147:3:121","subExpression":{"id":69667,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69660,"src":"19147:1:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69669,"nodeType":"ExpressionStatement","src":"19147:3:121"},"nodeType":"ForStatement","src":"19100:163:121"},{"expression":{"id":69690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69686,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"19272:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19284:4:121","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69909,"src":"19272:16:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69689,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69625,"src":"19291:14:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"19272:33:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69691,"nodeType":"ExpressionStatement","src":"19272:33:121"},{"expression":{"id":69696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69692,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69622,"src":"19315:11:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19327:16:121","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69911,"src":"19315:28:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69695,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69627,"src":"19346:17:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19315:48:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69697,"nodeType":"ExpressionStatement","src":"19315:48:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"18761:16:121","parameters":{"id":69628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69622,"mutability":"mutable","name":"_validators","nameLocation":"18811:11:121","nodeType":"VariableDeclaration","scope":69699,"src":"18787:35:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":69621,"nodeType":"UserDefinedTypeName","pathNode":{"id":69620,"name":"Gear.Validators","nameLocations":["18787:4:121","18792:10:121"],"nodeType":"IdentifierPath","referencedDeclaration":69912,"src":"18787:15:121"},"referencedDeclaration":69912,"src":"18787:15:121","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69912_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":69625,"mutability":"mutable","name":"_newValidators","nameLocation":"18849:14:121","nodeType":"VariableDeclaration","scope":69699,"src":"18832:31:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":69623,"name":"address","nodeType":"ElementaryTypeName","src":"18832:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69624,"nodeType":"ArrayTypeName","src":"18832:9:121","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":69627,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"18881:17:121","nodeType":"VariableDeclaration","scope":69699,"src":"18873:25:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69626,"name":"uint256","nodeType":"ElementaryTypeName","src":"18873:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18777:127:121"},"returnParameters":{"id":69629,"nodeType":"ParameterList","parameters":[],"src":"18913:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69712,"nodeType":"FunctionDefinition","src":"19376:192:121","nodes":[],"body":{"id":69711,"nodeType":"Block","src":"19441:127:121","nodes":[],"statements":[{"assignments":[69706],"declarations":[{"constant":false,"id":69706,"mutability":"mutable","name":"slot","nameLocation":"19459:4:121","nodeType":"VariableDeclaration","scope":69711,"src":"19451:12:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69705,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19451:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69709,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69707,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69724,"src":"19466:15:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":69708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19466:17:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19451:32:121"},{"AST":{"nativeSrc":"19519:43:121","nodeType":"YulBlock","src":"19519:43:121","statements":[{"nativeSrc":"19533:19:121","nodeType":"YulAssignment","src":"19533:19:121","value":{"name":"slot","nativeSrc":"19548:4:121","nodeType":"YulIdentifier","src":"19548:4:121"},"variableNames":[{"name":"router.slot","nativeSrc":"19533:11:121","nodeType":"YulIdentifier","src":"19533:11:121"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":69703,"isOffset":false,"isSlot":true,"src":"19533:11:121","suffix":"slot","valueSize":1},{"declaration":69706,"isOffset":false,"isSlot":false,"src":"19548:4:121","valueSize":1}],"flags":["memory-safe"],"id":69710,"nodeType":"InlineAssembly","src":"19494:68:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"19385:7:121","parameters":{"id":69700,"nodeType":"ParameterList","parameters":[],"src":"19392:2:121"},"returnParameters":{"id":69704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69703,"mutability":"mutable","name":"router","nameLocation":"19433:6:121","nodeType":"VariableDeclaration","scope":69712,"src":"19417:22:121","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69702,"nodeType":"UserDefinedTypeName","pathNode":{"id":69701,"name":"Storage","nameLocations":["19417:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65426,"src":"19417:7:121"},"referencedDeclaration":65426,"src":"19417:7:121","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65426_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"19416:24:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69724,"nodeType":"FunctionDefinition","src":"19574:128:121","nodes":[],"body":{"id":69723,"nodeType":"Block","src":"19632:70:121","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":69719,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67999,"src":"19676:12:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69717,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"19649:11:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19661:14:121","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"19649:26:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19649:40:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19690:5:121","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"19649:46:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69716,"id":69722,"nodeType":"Return","src":"19642:53:121"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"19583:15:121","parameters":{"id":69713,"nodeType":"ParameterList","parameters":[],"src":"19598:2:121"},"returnParameters":{"id":69716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69724,"src":"19623:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19623:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19622:9:121"},"scope":69770,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69769,"nodeType":"FunctionDefinition","src":"19708:252:121","nodes":[],"body":{"id":69768,"nodeType":"Block","src":"19776:184:121","nodes":[],"statements":[{"assignments":[69732],"declarations":[{"constant":false,"id":69732,"mutability":"mutable","name":"slot","nameLocation":"19794:4:121","nodeType":"VariableDeclaration","scope":69768,"src":"19786:12:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19786:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69758,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":69741,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69726,"src":"19846:9:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19840:5:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69739,"name":"bytes","nodeType":"ElementaryTypeName","src":"19840:5:121","typeDescriptions":{}}},"id":69742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19840:16:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69738,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19830:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19830:27:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19822:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69736,"name":"uint256","nodeType":"ElementaryTypeName","src":"19822:7:121","typeDescriptions":{}}},"id":69744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19822:36:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":69745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19861:1:121","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19822:40:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":69734,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19811:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19815:6:121","memberName":"encode","nodeType":"MemberAccess","src":"19811:10:121","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19811:52:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69733,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19801:9:121","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19801:63:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":69756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"19867:23:121","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":69753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19884:4:121","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":69752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19876:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69751,"name":"uint256","nodeType":"ElementaryTypeName","src":"19876:7:121","typeDescriptions":{}}},"id":69754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19876:13:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19868:7:121","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19868:7:121","typeDescriptions":{}}},"id":69755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19868:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19801:89:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19786:104:121"},{"expression":{"id":69766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":69762,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67999,"src":"19927:12:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69759,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"19900:11:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19912:14:121","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"19900:26:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44319_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":69763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19900:40:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19941:5:121","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"19900:46:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69765,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69732,"src":"19949:4:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19900:53:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69767,"nodeType":"ExpressionStatement","src":"19900:53:121"}]},"implemented":true,"kind":"function","modifiers":[{"id":69729,"kind":"modifierInvocation","modifierName":{"id":69728,"name":"onlyOwner","nameLocations":["19766:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"19766:9:121"},"nodeType":"ModifierInvocation","src":"19766:9:121"}],"name":"_setStorageSlot","nameLocation":"19717:15:121","parameters":{"id":69727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69726,"mutability":"mutable","name":"namespace","nameLocation":"19747:9:121","nodeType":"VariableDeclaration","scope":69769,"src":"19733:23:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69725,"name":"string","nodeType":"ElementaryTypeName","src":"19733:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"19732:25:121"},"returnParameters":{"id":69730,"nodeType":"ParameterList","parameters":[],"src":"19776:0:121"},"scope":69770,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67991,"name":"IRouter","nameLocations":["756:7:121"],"nodeType":"IdentifierPath","referencedDeclaration":65695,"src":"756:7:121"},"id":67992,"nodeType":"InheritanceSpecifier","src":"756:7:121"},{"baseName":{"id":67993,"name":"OwnableUpgradeable","nameLocations":["765:18:121"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"765:18:121"},"id":67994,"nodeType":"InheritanceSpecifier","src":"765:18:121"},{"baseName":{"id":67995,"name":"ReentrancyGuardTransient","nameLocations":["785:24:121"],"nodeType":"IdentifierPath","referencedDeclaration":44307,"src":"785:24:121"},"id":67996,"nodeType":"InheritanceSpecifier","src":"785:24:121"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69770,44307,40332,41480,40586,65695],"name":"Router","nameLocation":"746:6:121","scope":69771,"usedErrors":[40168,40173,40349,40352,44174,44180,44251,44961,44966,44971],"usedEvents":[40179,40357,65431,65438,65445,65450,65457,65464,65473,65482,65485]}],"license":"UNLICENSED"},"id":121} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index 3596c6ec57b..e26b8c9858d 100644 --- a/ethexe/ethereum/WrappedVara.json +++ b/ethexe/ethereum/WrappedVara.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:990:121:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:990:121;;7985:34:25;7981:146;;-1:-1:-1;632:990:121;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:990:121;-1:-1:-1;;;;;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;8087:29:25;;632:990:121;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:990:121;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033","sourceMap":"632:990:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2357:1:24;632:990:121;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:990:121;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;4867:20:26;632:990:121;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;7051:25:58;7105:8;632:990:121;;;;;;;;;;;;972:64:30;632:990:121;;;;;;;;;;;;;;;;2435:78:28;632:990:121;2435:78:28;;632:990:121;1279:95:28;632:990:121;;1279:95:28;632:990:121;1279:95:28;;632:990:121;;;;;;;;;1279:95:28;;632:990:121;1279:95:28;632:990:121;1279:95:28;;632:990:121;;1279:95:28;;632:990:121;;1279:95:28;;632:990:121;;2435:78:28;;;632:990:121;2435:78:28;;:::i;:::-;632:990:121;2425:89:28;;4094:23:31;;:::i;:::-;3445:249:59;632:990:121;3445:249:59;;-1:-1:-1;;;3445:249:59;;;;;;;;;;632:990:121;;;3445:249:59;632:990:121;;3445:249:59;;7051:25:58;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:121;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:990:121;2676:35:28;632:990:121;;;;;;2676:35:28;2297:97;2350:33;;;;632:990:121;2350:33:28;632:990:121;;;;2350:33:28;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;4301:16:25;632:990:121;;;;4726:16:25;;:34;;;;632:990:121;4805:1:25;4790:16;:50;;;;632:990:121;4855:13:25;:30;;;;632:990:121;4851:91:25;;;-1:-1:-1;;632:990:121;;4805:1:25;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;4979:67:25;;632:990:121;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:121;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:121;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:121;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:121;;;;6893:76:25;;:::i;:::-;632:990:121;;;;;;;:::i;:::-;4805:1:25;632:990:121;;-1:-1:-1;;;632:990:121;;;;6893:76:25;;:::i;:::-;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;2600:7:26;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;2806:64:31;632:990:121;;;3902:16:31;632:990:121;-1:-1:-1;;;;;632:990:121;;8803:21:26;8799:91;;941:9:121;8928:5:26;;;:::i;:::-;5066:101:25;;632:990:121;5066:101:25;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;5142:14:25;632:990:121;;;4805:1:25;632:990:121;;5142:14:25;632:990:121;8799:91:26;8847:32;;;632:990:121;8847:32:26;632:990:121;;;;;8847:32:26;632:990:121;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;2600:7:26;632:990:121;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;4979:67:25;-1:-1:-1;;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;4979:67:25;;;4851:91;6498:23;;;632:990:121;4908:23:25;632:990:121;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;4616:5:26;632:990:121;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:990:121;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;;632:990:121;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;-1:-1:-1;;;;;632:990:121;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2806:64:31;632:990:121;5777:18:31;:43;;;632:990:121;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:990:121;;;;6000:4:31;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:121;;;;;;;;;;;;-1:-1:-1;;;632:990:121;;;;;;;5777:43:31;632:990:121;5799:16:31;632:990:121;5799:21:31;5777:43;;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:990:121;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;1479:5:27;632:990:121;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;632:990:121;;;;;;;-1:-1:-1;;;;;632:990:121;3975:40:24;632:990:121;;3975:40:24;632:990:121;;;;;;;-1:-1:-1;;632:990:121;;;;-1:-1:-1;;;;;632:990:121;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;6431:44:25;;;;632:990:121;6427:105:25;;1427:1:121;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;6656:20:25;632:990:121;;;1427:1;632:990;;6656:20:25;632:990:121;6431:44:25;632:990:121;1427:1;632:990;;;6450:25:25;;6431:44;;632:990:121;;;;;;-1:-1:-1;;632:990:121;;;;1005:5:27;632:990:121;;966:10:29;1005:5:27;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:990:121;;8803:21:26;8799:91;;8928:5;632:990:121;;;8928:5:26;;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;4094:23:31;;:::i;:::-;632:990:121;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:121;;;;6198:5:26;632:990:121;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;;10117:4:26;632:990:121;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:990:121:-;;;;;;-1:-1:-1;;632:990:121;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;;;;-1:-1:-1;632:990:121;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:121;;;;;;;;-1:-1:-1;;632:990:121;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:121;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:121;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:121;;;;;4867:13:26;632:990:121;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:990:121;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;632:990:121;;;;;;;-1:-1:-1;;;;;632:990:121;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:990:121;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:990:121;;;;;;;-1:-1:-1;632:990:121;;;;-1:-1:-1;632:990:121;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:121;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:990:121;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;-1:-1:-1;632:990:121;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:990:121;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:990:121;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:990:121;;;;;;12018:60:26;632:990:121;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:990:121;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:990:121;;6783:16:26;;6779:86;;632:990:121;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;6704:1:26;632:990:121;;7609:19:26;;;7605:115;;632:990:121;8358:25:26;632:990:121;;;;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;;6704:1:26;632:990:121;;;6704:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;6704:1:26;632:990:121;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:121;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:121;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:990:121;-1:-1:-1;;;;;632:990:121;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;632:990:121;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:990:121;9329:21:26;;9325:89;;632:990:121;9348:1:26;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;9348:1:26;632:990:121;;7609:19:26;;;7605:115;;632:990:121;;9348:1:26;632:990:121;;8358:25:26;632:990:121;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:121;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:990:121;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:990:121;;11239:21:26;;11235:90;;11415:31;11334:20;;632:990:121;11334:20:26;;:::i;:::-;632:990:121;-1:-1:-1;632:990:121;;;;;-1:-1:-1;632:990:121;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;-1:-1:-1;;;;;632:990:121;;;;8358:25:26;;632:990:121;;7918:16:26;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;7914:429:26;632:990:121;;;;;8358:25:26;7220:1170::o;7914:429::-;632:990:121;;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;;;;;7914:429:26;;632:990:121;;;;;941:9;;;;;632:990;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:121;;4221:92:31;;;;632:990:121;2073:95:31;632:990:121;;;2073:95:31;;632:990:121;2073:95:31;;;632:990:121;4284:13:31;2073:95;;;632:990:121;4307:4:31;2073:95;;;632:990:121;2073:95:31;4221:92;;;;;;:::i;:::-;632:990:121;4211:103:31;;4130:191;:::o;7084:141:25:-;632:990:121;-1:-1:-1;;;;;;;;;;;632:990:121;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5203:1551:58;;;6283:66;6270:79;;6266:164;;632:990:121;;;;;;-1:-1:-1;632:990:121;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;632:990:121;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6541:24::-;632:990:121;;;-1:-1:-1;632:990:121;;;;;6266:164:58;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;632:990:121;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;632:990:121;7462:38:58;;632:990:121;;7523:23:58;;;7375:20;7523:23;632:990:121;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;632:990:121;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;632:990:121;;;7375:20:58;7763:32;632:990:121;;;;7375:20:58;632:990:121;;;;;7375:20:58;632:990:121;7058:687:31;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:990:121;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:121:-;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;-1:-1:-1;632:990:121;;;;;;;;;;;-1:-1:-1;632:990:121;;7966:723:31;632:990:121;;-1:-1:-1;;;;;;;;;;;632:990:121;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:990:121;8541:18:31;;;;8579:20;:::o;632:990:121:-;-1:-1:-1;;;;;;;;;;;;632:990:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:121;;;-1:-1:-1;632:990:121;;;;;;;;;;;-1:-1:-1;632:990:121;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":69473,"exportedSymbols":{"ERC20BurnableUpgradeable":[41265],"ERC20PermitUpgradeable":[41434],"ERC20Upgradeable":[41203],"Initializable":[40586],"OwnableUpgradeable":[40332],"WrappedVara":[69472]},"nodeType":"SourceUnit","src":"39:1584:121","nodes":[{"id":69367,"nodeType":"PragmaDirective","src":"39:24:121","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":69369,"nodeType":"ImportDirective","src":"65:96:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":69473,"sourceUnit":40587,"symbolAliases":[{"foreign":{"id":69368,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40586,"src":"73:13:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69371,"nodeType":"ImportDirective","src":"162:102:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":69473,"sourceUnit":41204,"symbolAliases":[{"foreign":{"id":69370,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41203,"src":"170:16:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69373,"nodeType":"ImportDirective","src":"265:133:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69473,"sourceUnit":41266,"symbolAliases":[{"foreign":{"id":69372,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41265,"src":"273:24:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69375,"nodeType":"ImportDirective","src":"399:101:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69473,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":69374,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"407:18:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69377,"nodeType":"ImportDirective","src":"501:129:121","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69473,"sourceUnit":41435,"symbolAliases":[{"foreign":{"id":69376,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41434,"src":"509:22:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69472,"nodeType":"ContractDefinition","src":"632:990:121","nodes":[{"id":69390,"nodeType":"VariableDeclaration","src":"784:51:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:121","scope":69472,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69388,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":69389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":69393,"nodeType":"VariableDeclaration","src":"841:46:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:121","scope":69472,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69391,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":69392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:121","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":69396,"nodeType":"VariableDeclaration","src":"893:57:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:121","scope":69472,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69394,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":69395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:121","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":69404,"nodeType":"FunctionDefinition","src":"1010:53:121","nodes":[],"body":{"id":69403,"nodeType":"Block","src":"1024:39:121","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69400,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1034:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69402,"nodeType":"ExpressionStatement","src":"1034:22:121"}]},"documentation":{"id":69397,"nodeType":"StructuredDocumentation","src":"957:48:121","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":69398,"nodeType":"ParameterList","parameters":[],"src":"1021:2:121"},"returnParameters":{"id":69399,"nodeType":"ParameterList","parameters":[],"src":"1024:0:121"},"scope":69472,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69438,"nodeType":"FunctionDefinition","src":"1069:297:121","nodes":[],"body":{"id":69437,"nodeType":"Block","src":"1130:236:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69412,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69390,"src":"1153:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":69413,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69393,"src":"1165:12:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69411,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40654,"src":"1140:12:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":69414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69415,"nodeType":"ExpressionStatement","src":"1140:38:121"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69416,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41224,"src":"1188:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69418,"nodeType":"ExpressionStatement","src":"1188:22:121"},{"expression":{"arguments":[{"id":69420,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69406,"src":"1235:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69419,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1220:14:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":69421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69422,"nodeType":"ExpressionStatement","src":"1220:28:121"},{"expression":{"arguments":[{"id":69424,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69390,"src":"1277:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69423,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41321,"src":"1258:18:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":69425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69426,"nodeType":"ExpressionStatement","src":"1258:30:121"},{"expression":{"arguments":[{"id":69428,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69406,"src":"1305:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69429,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69396,"src":"1319:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":69430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:121","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":69431,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[69456],"referencedDeclaration":69456,"src":"1348:8:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":69432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69427,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1299:5:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69436,"nodeType":"ExpressionStatement","src":"1299:60:121"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":69409,"kind":"modifierInvocation","modifierName":{"id":69408,"name":"initializer","nameLocations":["1118:11:121"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1118:11:121"},"nodeType":"ModifierInvocation","src":"1118:11:121"}],"name":"initialize","nameLocation":"1078:10:121","parameters":{"id":69407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69406,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:121","nodeType":"VariableDeclaration","scope":69438,"src":"1089:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69405,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:121"},"returnParameters":{"id":69410,"nodeType":"ParameterList","parameters":[],"src":"1130:0:121"},"scope":69472,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69447,"nodeType":"FunctionDefinition","src":"1372:60:121","nodes":[],"body":{"id":69446,"nodeType":"Block","src":"1430:2:121","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":69441,"kind":"modifierInvocation","modifierName":{"id":69440,"name":"onlyOwner","nameLocations":["1403:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1403:9:121"},"nodeType":"ModifierInvocation","src":"1403:9:121"},{"arguments":[{"hexValue":"32","id":69443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:121","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":69444,"kind":"modifierInvocation","modifierName":{"id":69442,"name":"reinitializer","nameLocations":["1413:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"1413:13:121"},"nodeType":"ModifierInvocation","src":"1413:16:121"}],"name":"reinitialize","nameLocation":"1381:12:121","parameters":{"id":69439,"nodeType":"ParameterList","parameters":[],"src":"1393:2:121"},"returnParameters":{"id":69445,"nodeType":"ParameterList","parameters":[],"src":"1430:0:121"},"scope":69472,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69456,"nodeType":"FunctionDefinition","src":"1438:83:121","nodes":[],"body":{"id":69455,"nodeType":"Block","src":"1495:26:121","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":69453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:121","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":69452,"id":69454,"nodeType":"Return","src":"1505:9:121"}]},"baseFunctions":[40723],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:121","overrides":{"id":69449,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:121"},"parameters":{"id":69448,"nodeType":"ParameterList","parameters":[],"src":"1455:2:121"},"returnParameters":{"id":69452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69456,"src":"1488:5:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":69450,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:121"},"scope":69472,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":69471,"nodeType":"FunctionDefinition","src":"1527:93:121","nodes":[],"body":{"id":69470,"nodeType":"Block","src":"1586:34:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69466,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69458,"src":"1602:2:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69467,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69460,"src":"1606:6:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69465,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1596:5:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69469,"nodeType":"ExpressionStatement","src":"1596:17:121"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":69463,"kind":"modifierInvocation","modifierName":{"id":69462,"name":"onlyOwner","nameLocations":["1576:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1576:9:121"},"nodeType":"ModifierInvocation","src":"1576:9:121"}],"name":"mint","nameLocation":"1536:4:121","parameters":{"id":69461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69458,"mutability":"mutable","name":"to","nameLocation":"1549:2:121","nodeType":"VariableDeclaration","scope":69471,"src":"1541:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69457,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69460,"mutability":"mutable","name":"amount","nameLocation":"1561:6:121","nodeType":"VariableDeclaration","scope":69471,"src":"1553:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69459,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:121"},"returnParameters":{"id":69464,"nodeType":"ParameterList","parameters":[],"src":"1586:0:121"},"scope":69472,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":69378,"name":"Initializable","nameLocations":["660:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40586,"src":"660:13:121"},"id":69379,"nodeType":"InheritanceSpecifier","src":"660:13:121"},{"baseName":{"id":69380,"name":"ERC20Upgradeable","nameLocations":["679:16:121"],"nodeType":"IdentifierPath","referencedDeclaration":41203,"src":"679:16:121"},"id":69381,"nodeType":"InheritanceSpecifier","src":"679:16:121"},{"baseName":{"id":69382,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:121"],"nodeType":"IdentifierPath","referencedDeclaration":41265,"src":"701:24:121"},"id":69383,"nodeType":"InheritanceSpecifier","src":"701:24:121"},{"baseName":{"id":69384,"name":"OwnableUpgradeable","nameLocations":["731:18:121"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"731:18:121"},"id":69385,"nodeType":"InheritanceSpecifier","src":"731:18:121"},{"baseName":{"id":69386,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":41434,"src":"755:22:121"},"id":69387,"nodeType":"InheritanceSpecifier","src":"755:22:121"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69472,41434,41591,41935,42212,43875,40332,41265,41203,42254,43839,43813,41480,40586],"name":"WrappedVara","nameLocation":"641:11:121","scope":69473,"usedErrors":[40168,40173,40349,40352,41300,41307,41494,42224,42229,42234,42243,42248,42253,44961,44966,44971],"usedEvents":[40179,40357,42192,43747,43756]}],"license":"UNLICENSED"},"id":121} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:990:122:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:990:122;;7985:34:25;7981:146;;-1:-1:-1;632:990:122;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:990:122;-1:-1:-1;;;;;632:990:122;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;8087:29:25;;632:990:122;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:990:122;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d08a572a49deef0fe43c12723c823f7d35f0880c0978a58045ae35f94b3d290a64736f6c634300081c0033","sourceMap":"632:990:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;2357:1:24;632:990:122;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:990:122;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;;;:::i;:::-;4867:20:26;632:990:122;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;;-1:-1:-1;632:990:122;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;7051:25:58;7105:8;632:990:122;;;;;;;;;;;;972:64:30;632:990:122;;;;;;;;;;;;;;;;2435:78:28;632:990:122;2435:78:28;;632:990:122;1279:95:28;632:990:122;;1279:95:28;632:990:122;1279:95:28;;632:990:122;;;;;;;;;1279:95:28;;632:990:122;1279:95:28;632:990:122;1279:95:28;;632:990:122;;1279:95:28;;632:990:122;;1279:95:28;;632:990:122;;2435:78:28;;;632:990:122;2435:78:28;;:::i;:::-;632:990:122;2425:89:28;;4094:23:31;;:::i;:::-;3445:249:59;632:990:122;3445:249:59;;-1:-1:-1;;;3445:249:59;;;;;;;;;;632:990:122;;;3445:249:59;632:990:122;;3445:249:59;;7051:25:58;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:122;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:990:122;2676:35:28;632:990:122;;;;;;2676:35:28;2297:97;2350:33;;;;632:990:122;2350:33:28;632:990:122;;;;2350:33:28;632:990:122;;;;;;-1:-1:-1;;632:990:122;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;4301:16:25;632:990:122;;;;4726:16:25;;:34;;;;632:990:122;4805:1:25;4790:16;:50;;;;632:990:122;4855:13:25;:30;;;;632:990:122;4851:91:25;;;-1:-1:-1;;632:990:122;;4805:1:25;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;4979:67:25;;632:990:122;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:122;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:122;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:990:122;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;2600:7:26;632:990:122;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;2600:7:26;632:990:122;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:122;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:122;;;;6893:76:25;;:::i;:::-;632:990:122;;;;;;;:::i;:::-;4805:1:25;632:990:122;;-1:-1:-1;;;632:990:122;;;;6893:76:25;;:::i;:::-;632:990:122;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;2600:7:26;632:990:122;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;2600:7:26;632:990:122;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;2806:64:31;632:990:122;;;3902:16:31;632:990:122;-1:-1:-1;;;;;632:990:122;;8803:21:26;8799:91;;941:9:122;8928:5:26;;;:::i;:::-;5066:101:25;;632:990:122;5066:101:25;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;5142:14:25;632:990:122;;;4805:1:25;632:990:122;;5142:14:25;632:990:122;8799:91:26;8847:32;;;632:990:122;8847:32:26;632:990:122;;;;;8847:32:26;632:990:122;;;;-1:-1:-1;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;2600:7:26;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;2600:7:26;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;2600:7:26;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;2600:7:26;632:990:122;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:25;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;4979:67:25;-1:-1:-1;;632:990:122;;;-1:-1:-1;;;;;;;;;;;632:990:122;4979:67:25;;;4851:91;6498:23;;;632:990:122;4908:23:25;632:990:122;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;632:990:122;;;;;;-1:-1:-1;;632:990:122;;;;4616:5:26;632:990:122;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:990:122;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;-1:-1:-1;632:990:122;;;;;;;-1:-1:-1;632:990:122;;-1:-1:-1;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:122;;-1:-1:-1;632:990:122;;;;;;;;-1:-1:-1;;632:990:122;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;-1:-1:-1;;;;;632:990:122;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;2806:64:31;632:990:122;5777:18:31;:43;;;632:990:122;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:990:122;;;;6000:4:31;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:122;;;;;;;;;;;;-1:-1:-1;;;632:990:122;;;;;;;5777:43:31;632:990:122;5799:16:31;632:990:122;5799:21:31;5777:43;;632:990:122;;;;;;-1:-1:-1;;632:990:122;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:990:122;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;1479:5:27;632:990:122;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:990:122:-;;;;;;-1:-1:-1;;632:990:122;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:122;;-1:-1:-1;;;;;;632:990:122;;;;;;;-1:-1:-1;;;;;632:990:122;3975:40:24;632:990:122;;3975:40:24;632:990:122;;;;;;;-1:-1:-1;;632:990:122;;;;-1:-1:-1;;;;;632:990:122;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;6431:44:25;;;;632:990:122;6427:105:25;;1427:1:122;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;6656:20:25;632:990:122;;;1427:1;632:990;;6656:20:25;632:990:122;6431:44:25;632:990:122;1427:1;632:990;;;6450:25:25;;6431:44;;632:990:122;;;;;;-1:-1:-1;;632:990:122;;;;1005:5:27;632:990:122;;966:10:29;1005:5:27;:::i;632:990:122:-;;;;;;-1:-1:-1;;632:990:122;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:990:122;;8803:21:26;8799:91;;8928:5;632:990:122;;;8928:5:26;;:::i;632:990:122:-;;;;;;-1:-1:-1;;632:990:122;;;;;4094:23:31;;:::i;:::-;632:990:122;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:122;;;;6198:5:26;632:990:122;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:990:122:-;;;;;;-1:-1:-1;;632:990:122;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;;10117:4:26;632:990:122;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:990:122:-;;;;;;-1:-1:-1;;632:990:122;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;-1:-1:-1;632:990:122;;;;;;;-1:-1:-1;632:990:122;;-1:-1:-1;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:122;;;;;;;;-1:-1:-1;;632:990:122;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:122;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:122;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:122;;;;;4867:13:26;632:990:122;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:990:122;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:122;;-1:-1:-1;;;;;;632:990:122;;;;;;;-1:-1:-1;;;;;632:990:122;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:990:122;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:990:122;;;;;;;-1:-1:-1;632:990:122;;;;-1:-1:-1;632:990:122;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:122;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:990:122;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;-1:-1:-1;632:990:122;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:990:122;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:990:122;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:990:122;;;;;;12018:60:26;632:990:122;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:990:122;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:990:122;;6783:16:26;;6779:86;;632:990:122;6704:1:26;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;;6704:1:26;632:990:122;;7609:19:26;;;7605:115;;632:990:122;8358:25:26;632:990:122;;;;6704:1:26;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;;;6704:1:26;632:990:122;;;6704:1:26;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;;6704:1:26;632:990:122;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:122;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:122;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:990:122;-1:-1:-1;;;;;632:990:122;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;632:990:122;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:990:122;9329:21:26;;9325:89;;632:990:122;9348:1:26;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;;9348:1:26;632:990:122;;7609:19:26;;;7605:115;;632:990:122;;9348:1:26;632:990:122;;8358:25:26;632:990:122;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:122;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:990:122;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:990:122;;11239:21:26;;11235:90;;11415:31;11334:20;;632:990:122;11334:20:26;;:::i;:::-;632:990:122;-1:-1:-1;632:990:122;;;;;-1:-1:-1;632:990:122;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;-1:-1:-1;;;;;632:990:122;;;;8358:25:26;;632:990:122;;7918:16:26;632:990:122;;;-1:-1:-1;;;;;;;;;;;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;7914:429:26;632:990:122;;;;;8358:25:26;7220:1170::o;7914:429::-;632:990:122;;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;;;;;7914:429:26;;632:990:122;;;;;941:9;;;;;632:990;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:122;;4221:92:31;;;;632:990:122;2073:95:31;632:990:122;;;2073:95:31;;632:990:122;2073:95:31;;;632:990:122;4284:13:31;2073:95;;;632:990:122;4307:4:31;2073:95;;;632:990:122;2073:95:31;4221:92;;;;;;:::i;:::-;632:990:122;4211:103:31;;4130:191;:::o;7084:141:25:-;632:990:122;-1:-1:-1;;;;;;;;;;;632:990:122;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5203:1551:58;;;6283:66;6270:79;;6266:164;;632:990:122;;;;;;-1:-1:-1;632:990:122;;;;;;;;;;;;;;;;;;;6541:24:58;;;;;;;;;-1:-1:-1;6541:24:58;-1:-1:-1;;;;;632:990:122;;6579:20:58;6575:113;;6698:49;-1:-1:-1;6698:49:58;-1:-1:-1;5203:1551:58;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:58;6541:24;6615:62;-1:-1:-1;6615:62:58;:::o;6541:24::-;632:990:122;;;-1:-1:-1;632:990:122;;;;;6266:164:58;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;632:990:122;;;;;;7366:29:58;;;7411:7;;:::o;7362:444::-;632:990:122;7462:38:58;;632:990:122;;7523:23:58;;;7375:20;7523:23;632:990:122;7375:20:58;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;632:990:122;;;7375:20:58;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;632:990:122;;;7375:20:58;7763:32;632:990:122;;;;7375:20:58;632:990:122;;;;;7375:20:58;632:990:122;7058:687:31;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:990:122;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:122:-;-1:-1:-1;;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;-1:-1:-1;632:990:122;;;;;;;;;;;-1:-1:-1;632:990:122;;7966:723:31;632:990:122;;-1:-1:-1;;;;;;;;;;;632:990:122;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:990:122;8541:18:31;;;;8579:20;:::o;632:990:122:-;-1:-1:-1;;;;;;;;;;;;632:990:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:122;;;-1:-1:-1;632:990:122;;;;;;;;;;;-1:-1:-1;632:990:122;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139","urls":["bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2","dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":69878,"exportedSymbols":{"ERC20BurnableUpgradeable":[41265],"ERC20PermitUpgradeable":[41434],"ERC20Upgradeable":[41203],"Initializable":[40586],"OwnableUpgradeable":[40332],"WrappedVara":[69877]},"nodeType":"SourceUnit","src":"39:1584:122","nodes":[{"id":69772,"nodeType":"PragmaDirective","src":"39:24:122","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":69774,"nodeType":"ImportDirective","src":"65:96:122","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":69878,"sourceUnit":40587,"symbolAliases":[{"foreign":{"id":69773,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40586,"src":"73:13:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69776,"nodeType":"ImportDirective","src":"162:102:122","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":69878,"sourceUnit":41204,"symbolAliases":[{"foreign":{"id":69775,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41203,"src":"170:16:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69778,"nodeType":"ImportDirective","src":"265:133:122","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69878,"sourceUnit":41266,"symbolAliases":[{"foreign":{"id":69777,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41265,"src":"273:24:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69780,"nodeType":"ImportDirective","src":"399:101:122","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69878,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":69779,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"407:18:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69782,"nodeType":"ImportDirective","src":"501:129:122","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":69878,"sourceUnit":41435,"symbolAliases":[{"foreign":{"id":69781,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41434,"src":"509:22:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69877,"nodeType":"ContractDefinition","src":"632:990:122","nodes":[{"id":69795,"nodeType":"VariableDeclaration","src":"784:51:122","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:122","scope":69877,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69793,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:122","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":69794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:122","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":69798,"nodeType":"VariableDeclaration","src":"841:46:122","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:122","scope":69877,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69796,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:122","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":69797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:122","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":69801,"nodeType":"VariableDeclaration","src":"893:57:122","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:122","scope":69877,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69799,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":69800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:122","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":69809,"nodeType":"FunctionDefinition","src":"1010:53:122","nodes":[],"body":{"id":69808,"nodeType":"Block","src":"1024:39:122","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69805,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1034:20:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69807,"nodeType":"ExpressionStatement","src":"1034:22:122"}]},"documentation":{"id":69802,"nodeType":"StructuredDocumentation","src":"957:48:122","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":69803,"nodeType":"ParameterList","parameters":[],"src":"1021:2:122"},"returnParameters":{"id":69804,"nodeType":"ParameterList","parameters":[],"src":"1024:0:122"},"scope":69877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69843,"nodeType":"FunctionDefinition","src":"1069:297:122","nodes":[],"body":{"id":69842,"nodeType":"Block","src":"1130:236:122","nodes":[],"statements":[{"expression":{"arguments":[{"id":69817,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69795,"src":"1153:10:122","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":69818,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69798,"src":"1165:12:122","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69816,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40654,"src":"1140:12:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":69819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69820,"nodeType":"ExpressionStatement","src":"1140:38:122"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69821,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41224,"src":"1188:20:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69823,"nodeType":"ExpressionStatement","src":"1188:22:122"},{"expression":{"arguments":[{"id":69825,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69811,"src":"1235:12:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69824,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1220:14:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":69826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69827,"nodeType":"ExpressionStatement","src":"1220:28:122"},{"expression":{"arguments":[{"id":69829,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69795,"src":"1277:10:122","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69828,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41321,"src":"1258:18:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":69830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69831,"nodeType":"ExpressionStatement","src":"1258:30:122"},{"expression":{"arguments":[{"id":69833,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69811,"src":"1305:12:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69834,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69801,"src":"1319:20:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":69835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:122","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":69836,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[69861],"referencedDeclaration":69861,"src":"1348:8:122","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":69837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69832,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1299:5:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69841,"nodeType":"ExpressionStatement","src":"1299:60:122"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":69814,"kind":"modifierInvocation","modifierName":{"id":69813,"name":"initializer","nameLocations":["1118:11:122"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1118:11:122"},"nodeType":"ModifierInvocation","src":"1118:11:122"}],"name":"initialize","nameLocation":"1078:10:122","parameters":{"id":69812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69811,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:122","nodeType":"VariableDeclaration","scope":69843,"src":"1089:20:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69810,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:122"},"returnParameters":{"id":69815,"nodeType":"ParameterList","parameters":[],"src":"1130:0:122"},"scope":69877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69852,"nodeType":"FunctionDefinition","src":"1372:60:122","nodes":[],"body":{"id":69851,"nodeType":"Block","src":"1430:2:122","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":69846,"kind":"modifierInvocation","modifierName":{"id":69845,"name":"onlyOwner","nameLocations":["1403:9:122"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1403:9:122"},"nodeType":"ModifierInvocation","src":"1403:9:122"},{"arguments":[{"hexValue":"32","id":69848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:122","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":69849,"kind":"modifierInvocation","modifierName":{"id":69847,"name":"reinitializer","nameLocations":["1413:13:122"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"1413:13:122"},"nodeType":"ModifierInvocation","src":"1413:16:122"}],"name":"reinitialize","nameLocation":"1381:12:122","parameters":{"id":69844,"nodeType":"ParameterList","parameters":[],"src":"1393:2:122"},"returnParameters":{"id":69850,"nodeType":"ParameterList","parameters":[],"src":"1430:0:122"},"scope":69877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69861,"nodeType":"FunctionDefinition","src":"1438:83:122","nodes":[],"body":{"id":69860,"nodeType":"Block","src":"1495:26:122","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":69858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:122","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":69857,"id":69859,"nodeType":"Return","src":"1505:9:122"}]},"baseFunctions":[40723],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:122","overrides":{"id":69854,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:122"},"parameters":{"id":69853,"nodeType":"ParameterList","parameters":[],"src":"1455:2:122"},"returnParameters":{"id":69857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69861,"src":"1488:5:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":69855,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:122","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:122"},"scope":69877,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":69876,"nodeType":"FunctionDefinition","src":"1527:93:122","nodes":[],"body":{"id":69875,"nodeType":"Block","src":"1586:34:122","nodes":[],"statements":[{"expression":{"arguments":[{"id":69871,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69863,"src":"1602:2:122","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69865,"src":"1606:6:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69870,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41035,"src":"1596:5:122","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":69873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69874,"nodeType":"ExpressionStatement","src":"1596:17:122"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":69868,"kind":"modifierInvocation","modifierName":{"id":69867,"name":"onlyOwner","nameLocations":["1576:9:122"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1576:9:122"},"nodeType":"ModifierInvocation","src":"1576:9:122"}],"name":"mint","nameLocation":"1536:4:122","parameters":{"id":69866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69863,"mutability":"mutable","name":"to","nameLocation":"1549:2:122","nodeType":"VariableDeclaration","scope":69876,"src":"1541:10:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69862,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:122","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69865,"mutability":"mutable","name":"amount","nameLocation":"1561:6:122","nodeType":"VariableDeclaration","scope":69876,"src":"1553:14:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69864,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:122"},"returnParameters":{"id":69869,"nodeType":"ParameterList","parameters":[],"src":"1586:0:122"},"scope":69877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":69783,"name":"Initializable","nameLocations":["660:13:122"],"nodeType":"IdentifierPath","referencedDeclaration":40586,"src":"660:13:122"},"id":69784,"nodeType":"InheritanceSpecifier","src":"660:13:122"},{"baseName":{"id":69785,"name":"ERC20Upgradeable","nameLocations":["679:16:122"],"nodeType":"IdentifierPath","referencedDeclaration":41203,"src":"679:16:122"},"id":69786,"nodeType":"InheritanceSpecifier","src":"679:16:122"},{"baseName":{"id":69787,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:122"],"nodeType":"IdentifierPath","referencedDeclaration":41265,"src":"701:24:122"},"id":69788,"nodeType":"InheritanceSpecifier","src":"701:24:122"},{"baseName":{"id":69789,"name":"OwnableUpgradeable","nameLocations":["731:18:122"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"731:18:122"},"id":69790,"nodeType":"InheritanceSpecifier","src":"731:18:122"},{"baseName":{"id":69791,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:122"],"nodeType":"IdentifierPath","referencedDeclaration":41434,"src":"755:22:122"},"id":69792,"nodeType":"InheritanceSpecifier","src":"755:22:122"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69877,41434,41591,41935,42212,43875,40332,41265,41203,42254,43839,43813,41480,40586],"name":"WrappedVara","nameLocation":"641:11:122","scope":69878,"usedErrors":[40168,40173,40349,40352,41300,41307,41494,42224,42229,42234,42243,42248,42253,44961,44966,44971],"usedEvents":[40179,40357,42192,43747,43756]}],"license":"UNLICENSED"},"id":122} \ No newline at end of file diff --git a/ethexe/ethereum/src/abi/gear.rs b/ethexe/ethereum/src/abi/gear.rs index a624062ce15..138b72382ce 100644 --- a/ethexe/ethereum/src/abi/gear.rs +++ b/ethexe/ethereum/src/abi/gear.rs @@ -16,7 +16,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::abi::{utils::*, Gear}; +use crate::abi::{utils::*, Gear, IMiddleware}; use ethexe_common::gear::*; use gear_core::message::ReplyDetails; @@ -58,6 +58,58 @@ impl From for Gear::ValidatorsCommitment { } } +impl From for Gear::RequestSlashCommitment { + fn from(commitment: RequestSlashCommitment) -> Self { + Gear::RequestSlashCommitment { + eraIndex: Uint256::from(commitment.era_index), + slashes: commitment.slashes.into_iter().map(Into::into).collect(), + } + } +} + +impl From for Gear::ExecuteSlashCommitment { + fn from(commitment: ExecuteSlashCommitment) -> Self { + Gear::ExecuteSlashCommitment { + eraIndex: Uint256::from(commitment.era_index), + slashIdentifiers: commitment + .slash_identifiers + .into_iter() + .map(Into::into) + .collect(), + } + } +} + +impl From for IMiddleware::SlashIdentifier { + fn from(identifier: SlashIdentifier) -> Self { + Self { + vault: actor_id_to_address_lossy(identifier.vault), + index: Uint256::from(identifier.index), + } + } +} + +impl From for IMiddleware::VaultSlashData { + fn from(vault_data: VaultSlashData) -> Self { + let mut bytes = Vec::new(); + vault_data.amount.to_big_endian(&mut bytes); + Self { + vault: actor_id_to_address_lossy(vault_data.vault), + amount: Uint256::from_be_slice(&bytes), + } + } +} + +impl From for IMiddleware::SlashData { + fn from(data: SlashData) -> Self { + Self { + operator: actor_id_to_address_lossy(data.operator), + ts: u64_to_uint48_lossy(data.timestamp), + vaults: data.vaults.into_iter().map(Into::into).collect(), + } + } +} + impl From for Gear::Message { fn from(value: Message) -> Self { Self { diff --git a/ethexe/ethereum/src/lib.rs b/ethexe/ethereum/src/lib.rs index a971514ae96..e06090e36ed 100644 --- a/ethexe/ethereum/src/lib.rs +++ b/ethexe/ethereum/src/lib.rs @@ -154,6 +154,7 @@ impl Ethereum { _mirror: mirror_address, _mirrorProxy: mirror_proxy_address, _wrappedVara: wvara_address, + _middleware: Address::default(), _eraDuration: U256::from(24 * 60 * 60), _electionDuration: U256::from(2 * 60 * 60), _validators: validators, diff --git a/ethexe/ethereum/src/router/mod.rs b/ethexe/ethereum/src/router/mod.rs index 4df12862d86..5eed5411708 100644 --- a/ethexe/ethereum/src/router/mod.rs +++ b/ethexe/ethereum/src/router/mod.rs @@ -25,7 +25,9 @@ use alloy::{ transports::BoxTransport, }; use anyhow::{anyhow, Result}; -use ethexe_common::gear::{BlockCommitment, CodeCommitment}; +use ethexe_common::gear::{ + BlockCommitment, CodeCommitment, ExecuteSlashCommitment, RequestSlashCommitment, +}; use ethexe_signer::{Address as LocalAddress, Signature as LocalSignature}; use events::signatures; use futures::StreamExt; @@ -185,6 +187,38 @@ impl Router { let receipt = builder.send().await?.try_get_receipt().await?; Ok(H256(receipt.transaction_hash.0)) } + + pub async fn commit_request_slash( + &self, + commitment: RequestSlashCommitment, + signatures: Vec, + ) -> Result { + let builder = self.instance.commitRequestSlash( + commitment.into(), + signatures + .into_iter() + .map(|signature| Bytes::copy_from_slice(signature.as_ref())) + .collect(), + ); + let receipt = builder.send().await?.try_get_receipt().await?; + Ok(H256(receipt.transaction_hash.0)) + } + + pub async fn commit_execute_slash( + &self, + commitment: ExecuteSlashCommitment, + signatures: Vec, + ) -> Result { + let builder = self.instance.commitExecuteSlash( + commitment.into(), + signatures + .into_iter() + .map(|signature| Bytes::copy_from_slice(signature.as_ref())) + .collect(), + ); + let receipt = builder.send().await?.try_get_receipt().await?; + Ok(H256(receipt.transaction_hash.0)) + } } #[derive(Clone)]