From 1656dd0f55350118e2f59b5fa3599c68779742f4 Mon Sep 17 00:00:00 2001 From: Gregory Sobol Date: Fri, 17 Jan 2025 06:50:38 +0100 Subject: [PATCH] feat(ethexe): support late commitments validation (#4426) --- ethexe/contracts/script/Deployment.s.sol | 1 + ethexe/contracts/src/Router.sol | 17 +- ethexe/contracts/src/libraries/Gear.sol | 68 +++++-- ethexe/contracts/test/Base.t.sol | 2 + ethexe/contracts/test/Router.t.sol | 181 ++++++++++++++++++ ethexe/ethereum/Mirror.json | 2 +- ethexe/ethereum/MirrorProxy.json | 2 +- ethexe/ethereum/Router.json | 2 +- .../ethereum/TransparentUpgradeableProxy.json | 2 +- ethexe/ethereum/WrappedVara.json | 2 +- ethexe/ethereum/src/lib.rs | 1 + 11 files changed, 261 insertions(+), 19 deletions(-) diff --git a/ethexe/contracts/script/Deployment.s.sol b/ethexe/contracts/script/Deployment.s.sol index 9bb6c213a66..d48ac52c12b 100644 --- a/ethexe/contracts/script/Deployment.s.sol +++ b/ethexe/contracts/script/Deployment.s.sol @@ -48,6 +48,7 @@ contract DeploymentScript is Script { address(wrappedVara), 1 days, 2 hours, + 5 minutes, validatorsArray ) ) diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 41a05e5f152..3bf3feb2740 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -28,6 +28,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { address _wrappedVara, uint256 _eraDuration, uint256 _electionDuration, + uint256 _validationDelay, address[] calldata _validators ) public initializer { __Ownable_init(_owner); @@ -36,6 +37,9 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { require(block.timestamp > 0, "current timestamp must be greater than 0"); require(_electionDuration > 0, "election duration must be greater than 0"); require(_eraDuration > _electionDuration, "era duration must be greater than election duration"); + // _validationDelay must be small enough, + // in order to restrict old era validators to make commitments, which can damage the system. + require(_validationDelay < (_eraDuration - _electionDuration) / 10, "validation delay is too big"); _setStorageSlot("router.storage.RouterV1"); Storage storage router = _router(); @@ -44,7 +48,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { router.implAddresses = Gear.AddressBook(_mirror, _mirrorProxy, _wrappedVara); router.validationSettings.signingThresholdPercentage = Gear.SIGNING_THRESHOLD_PERCENTAGE; router.computeSettings = Gear.defaultComputationSettings(); - router.timelines = Gear.Timelines(_eraDuration, _electionDuration); + router.timelines = Gear.Timelines(_eraDuration, _electionDuration, _validationDelay); // Set validators for the era 0. _resetValidators(router.validationSettings.validators0, _validators, block.timestamp); @@ -310,15 +314,24 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { Storage storage router = _router(); require(router.genesisBlock.hash != bytes32(0), "router genesis is zero; call `lookupGenesisHash()` first"); + require(_blockCommitments.length > 0, "no block commitments to commit"); + bytes memory blockCommitmentsHashes; + uint256 maxTimestamp = 0; for (uint256 i = 0; i < _blockCommitments.length; i++) { Gear.BlockCommitment calldata blockCommitment = _blockCommitments[i]; blockCommitmentsHashes = bytes.concat(blockCommitmentsHashes, _commitBlock(router, blockCommitment)); + if (blockCommitment.timestamp > maxTimestamp) { + maxTimestamp = blockCommitment.timestamp; + } } + // NOTE: Use maxTimestamp to validate signatures for all block commitments. + // This means that if at least one commitment is for block from current era, + // then all commitments should be checked with current era validators. require( - Gear.validateSignatures(router, keccak256(blockCommitmentsHashes), _signatures), + Gear.validateSignaturesAt(router, keccak256(blockCommitmentsHashes), _signatures, maxTimestamp), "signatures verification failed" ); } diff --git a/ethexe/contracts/src/libraries/Gear.sol b/ethexe/contracts/src/libraries/Gear.sol index 7e663d96f9a..10fc2c01182 100644 --- a/ethexe/contracts/src/libraries/Gear.sol +++ b/ethexe/contracts/src/libraries/Gear.sol @@ -104,6 +104,7 @@ library Gear { struct Timelines { uint256 era; uint256 election; + uint256 validationDelay; } struct ValidationSettings { @@ -191,7 +192,34 @@ library Gear { view returns (bool) { - Validators storage validators = currentEraValidators(router); + return validateSignaturesAt(router, _dataHash, _signatures, block.timestamp); + } + + /// @dev Validates signatures of the given data hash at the given timestamp. + function validateSignaturesAt( + IRouter.Storage storage router, + bytes32 _dataHash, + bytes[] calldata _signatures, + uint256 ts + ) internal view returns (bool) { + uint256 eraStarted = eraStartedAt(router, block.timestamp); + if (ts < eraStarted && block.timestamp < eraStarted + router.timelines.validationDelay) { + require(ts >= router.genesisBlock.timestamp, "cannot validate before genesis"); + require(ts + router.timelines.era >= eraStarted, "timestamp is older than previous era"); + + // Validation must be done using validators from previous era, + // because `ts` is in the past and we are in the validation delay period. + } else { + require(ts <= block.timestamp, "timestamp cannot be in the future"); + + if (ts < eraStarted) { + ts = eraStarted; + } + + // Validation must be done using current era validators. + } + + Validators storage validators = validatorsAt(router, ts); uint256 threshold = validatorsThreshold(validators.list.length, router.validationSettings.signingThresholdPercentage); @@ -215,25 +243,33 @@ library Gear { } function currentEraValidators(IRouter.Storage storage router) internal view returns (Validators storage) { - if (currentEraValidatorsStoredInValidators1(router)) { - return router.validationSettings.validators1; - } else { - return router.validationSettings.validators0; - } + return validatorsAt(router, block.timestamp); } + /// @dev Returns previous era validators, if there is no previous era, + /// then returns free validators slot, which must be zeroed. function previousEraValidators(IRouter.Storage storage router) internal view returns (Validators storage) { - if (currentEraValidatorsStoredInValidators1(router)) { + if (validatorsStoredInSlot1At(router, block.timestamp)) { return router.validationSettings.validators0; } else { return router.validationSettings.validators1; } } - /// @dev Returns whether current era validators are stored in `router.validationSettings.validators1`. + /// @dev Returns validators at the given timestamp. + /// @param ts Timestamp for which to get the validators. + function validatorsAt(IRouter.Storage storage router, uint256 ts) internal view returns (Validators storage) { + if (validatorsStoredInSlot1At(router, ts)) { + return router.validationSettings.validators1; + } else { + return router.validationSettings.validators0; + } + } + + /// @dev Returns whether validators at `ts` are stored in `router.validationSettings.validators1`. /// `false` means that current era validators are stored in `router.validationSettings.validators0`. - function currentEraValidatorsStoredInValidators1(IRouter.Storage storage router) internal view returns (bool) { - uint256 ts = block.timestamp; + /// @param ts Timestamp for which to check the validators slot. + function validatorsStoredInSlot1At(IRouter.Storage storage router, uint256 ts) internal view returns (bool) { uint256 ts0 = router.validationSettings.validators0.useFromTimestamp; uint256 ts1 = router.validationSettings.validators1.useFromTimestamp; @@ -244,8 +280,8 @@ library Gear { bool tsGE0 = ts0 <= ts; bool tsGE1 = ts1 <= ts; - // Both eras are in the future - impossible case because of implementation. - require(tsGE0 || tsGE1, "could not identify validators for current timestamp"); + // Both eras are in the future - not supported by this function. + require(tsGE0 || tsGE1, "could not identify validators for the given timestamp"); // Two impossible cases, because of math rules: // 1) ts1Greater && !tsGE0 && tsGE1 @@ -266,4 +302,12 @@ library Gear { function valueClaimBytes(ValueClaim memory claim) internal pure returns (bytes memory) { return abi.encodePacked(claim.messageId, claim.destination, claim.value); } + + function eraIndexAt(IRouter.Storage storage router, uint256 ts) internal view returns (uint256) { + return (ts - router.genesisBlock.timestamp) / router.timelines.era; + } + + function eraStartedAt(IRouter.Storage storage router, uint256 ts) internal view returns (uint256) { + return router.genesisBlock.timestamp + eraIndexAt(router, ts) * router.timelines.era; + } } diff --git a/ethexe/contracts/test/Base.t.sol b/ethexe/contracts/test/Base.t.sol index 9b6de315b4a..30320a73654 100644 --- a/ethexe/contracts/test/Base.t.sol +++ b/ethexe/contracts/test/Base.t.sol @@ -29,6 +29,7 @@ contract Base is POCBaseTest { address public admin; uint48 public eraDuration; uint48 public electionDuration; + uint256 public validationDelay; uint256 public blockDuration; uint256 public maxValidators; @@ -119,6 +120,7 @@ contract Base is POCBaseTest { wrappedVaraAddress, uint256(eraDuration), uint256(electionDuration), + uint256(validationDelay), _validators ) ) diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index 504837d7094..f816a24fc7e 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -29,6 +29,7 @@ contract RouterTest is Base { electionDuration = 100; blockDuration = 12; maxValidators = 3; + validationDelay = 60; setUpWrappedVara(); @@ -116,6 +117,186 @@ contract RouterTest is Base { commitValidators(wrongValidatorPrivateKeys, commitment); } + function test_lateCommitments() public { + address[] memory _validators = new address[](3); + uint256[] memory _validatorPrivateKeys = new uint256[](3); + for (uint256 i = 0; i < 3; i++) { + (address addr, uint256 key) = makeAddrAndKey(vm.toString(i)); + _validators[i] = addr; + _validatorPrivateKeys[i] = key; + } + + Gear.ValidatorsCommitment memory _commitment = Gear.ValidatorsCommitment(_validators, 1); + + vm.warp(router.genesisTimestamp() + eraDuration - electionDuration); + commitValidators(_commitment); + + // Go to the next era, setting block hash to the last 1 blocks of the era + vm.warp(router.genesisTimestamp() + eraDuration - uint48(blockDuration)); + rollBlocks(1); + + uint256 _eraStartNumber = vm.getBlockNumber(); + uint48 _eraStartTimestamp = uint48(vm.getBlockTimestamp()); + + Gear.BlockCommitment memory _blockCommitment = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber - 1), + timestamp: _eraStartTimestamp - uint48(blockDuration), + previousCommittedBlock: router.latestCommittedBlockHash(), + predecessorBlock: blockHash(_eraStartNumber - 1), + transitions: new Gear.StateTransition[](0) + }); + + // Try to commit block from the previous era using new validators + vm.expectRevert(); + commitBlock(_validatorPrivateKeys, _blockCommitment); + + // Now try to commit block from the previous era using old validators + commitBlock(validatorsPrivateKeys, _blockCommitment); + + rollBlocks(1); + _blockCommitment = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber), + timestamp: _eraStartTimestamp, + previousCommittedBlock: router.latestCommittedBlockHash(), + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + + // Try to commit block from the new era using old validators + vm.expectRevert(); + commitBlock(validatorsPrivateKeys, _blockCommitment); + + // Now try to commit block from the new era using new validators + commitBlock(_validatorPrivateKeys, _blockCommitment); + } + + function test_lateCommitmentsAfterDelay() public { + address[] memory _validators = new address[](3); + uint256[] memory _validatorPrivateKeys = new uint256[](3); + for (uint256 i = 0; i < 3; i++) { + (address addr, uint256 key) = makeAddrAndKey(vm.toString(i)); + _validators[i] = addr; + _validatorPrivateKeys[i] = key; + } + + Gear.ValidatorsCommitment memory _commitment = Gear.ValidatorsCommitment(_validators, 1); + + vm.warp(router.genesisTimestamp() + eraDuration - electionDuration); + commitValidators(_commitment); + + // Go to the next era, setting block hash to the last 5 blocks of the era and first 5 blocks of the new era + vm.warp(router.genesisTimestamp() + eraDuration - 5 * uint48(blockDuration)); + rollBlocks(10); + + Gear.BlockCommitment memory _blockCommitment = Gear.BlockCommitment({ + hash: blockHash(vm.getBlockNumber() - 6), + timestamp: uint48(vm.getBlockTimestamp() - 6 * blockDuration), + previousCommittedBlock: router.latestCommittedBlockHash(), + predecessorBlock: blockHash(vm.getBlockNumber() - 1), + transitions: new Gear.StateTransition[](0) + }); + + // Try to commit block from the previous era using old validators + // Must be failed because the validation delay is already passed + vm.expectRevert(); + commitBlock(validatorsPrivateKeys, _blockCommitment); + + // Now try to commit block from the previous era using new validators + // Must be successful because the validation delay is already passed + commitBlock(_validatorPrivateKeys, _blockCommitment); + } + + function test_manyLateCommitments() public { + address[] memory _validators = new address[](3); + uint256[] memory _validatorPrivateKeys = new uint256[](3); + for (uint256 i = 0; i < 3; i++) { + (address addr, uint256 key) = makeAddrAndKey(vm.toString(i)); + _validators[i] = addr; + _validatorPrivateKeys[i] = key; + } + + Gear.ValidatorsCommitment memory _commitment = Gear.ValidatorsCommitment(_validators, 1); + + vm.warp(router.genesisTimestamp() + eraDuration - electionDuration); + commitValidators(_commitment); + + // Go to the next era, setting block hash to the last 4 blocks of the era + vm.warp(router.genesisTimestamp() + eraDuration - 4 * uint48(blockDuration)); + rollBlocks(4); + + uint256 _eraStartNumber = vm.getBlockNumber(); + uint48 _eraStartTimestamp = uint48(vm.getBlockTimestamp()); + + // Try to commit blocks: [n - 4] <- [n - 3] <- [n] + // Where [n] is a start of the new era + Gear.BlockCommitment[] memory _commitments = new Gear.BlockCommitment[](3); + _commitments[0] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber - 4), + timestamp: _eraStartTimestamp - 4 * uint48(blockDuration), + previousCommittedBlock: router.latestCommittedBlockHash(), + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + _commitments[1] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber - 3), + timestamp: _eraStartTimestamp - 3 * uint48(blockDuration), + previousCommittedBlock: _commitments[0].hash, + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + _commitments[2] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber), + timestamp: _eraStartTimestamp, + previousCommittedBlock: _commitments[1].hash, + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + + // Roll to next block to be possible to make commitment for the era start block + rollBlocks(1); + + // Validation must fail because the last block is from new era, so must be committed by new validators + vm.expectRevert(); + commitBlocks(validatorsPrivateKeys, _commitments); + + // Now try to commit [n - 4] <- [n - 3] <- [n - 2] + _commitments[2] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber - 2), + timestamp: _eraStartTimestamp - 2 * uint48(blockDuration), + previousCommittedBlock: _commitments[1].hash, + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + // Must be successful, because all blocks are from the previous era + commitBlocks(validatorsPrivateKeys, _commitments); + + // Now try to commit [n - 1] <- [n] <- [n + 1] using new validators + rollBlocks(1); + _commitments[0] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber - 1), + timestamp: _eraStartTimestamp - uint48(blockDuration), + previousCommittedBlock: router.latestCommittedBlockHash(), + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + _commitments[1] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber), + timestamp: _eraStartTimestamp, + previousCommittedBlock: _commitments[0].hash, + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + _commitments[2] = Gear.BlockCommitment({ + hash: blockHash(_eraStartNumber + 1), + timestamp: _eraStartTimestamp + uint48(blockDuration), + previousCommittedBlock: _commitments[1].hash, + predecessorBlock: blockHash(_eraStartNumber), + transitions: new Gear.StateTransition[](0) + }); + // Must be successful, because the newest blocks are from the new era + commitBlocks(_validatorPrivateKeys, _commitments); + } + /* helper functions */ function commitValidators(Gear.ValidatorsCommitment memory commitment) private { diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index e6f20377362..03183b4e256 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":"0x608080604052346015576116bb908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212209bc996a1c5046854e37ed8667385456671241a48c2291eb06d9ae902a9513d1664736f6c634300081c0033","sourceMap":"403:9266:118:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212209bc996a1c5046854e37ed8667385456671241a48c2291eb06d9ae902a9513d1664736f6c634300081c0033","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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/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":[70148],"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":70149,"symbolAliases":[{"foreign":{"id":67042,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"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_$69673_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":69658,"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_$69673_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":69672,"src":"4733:20:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69637_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$69637_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_$69637_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_$69673_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":69668,"src":"4848:23:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69694_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69694_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_$69694_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_$69673_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":69662,"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_$69673_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":69662,"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_$69673_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":69660,"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_$69673_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":69660,"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_$69673_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":69658,"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_$69673_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":69660,"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_$69673_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":69662,"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_$69673_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":69664,"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":70148,"src":"5278:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:118","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":69898,"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_$69673_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":69673,"src":"4395:20:118"},"referencedDeclaration":69673,"src":"4395:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_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_$69637_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":69637,"src":"5927:12:118"},"referencedDeclaration":69637,"src":"5927:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69637_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_$69637_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_$69637_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_$69637_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69637_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":67452,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"6032:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:118","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":69844,"src":"6032:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$69637_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_$69637_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":69636,"src":"6144:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69656_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":69653,"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_$69637_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69637_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_$69637_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_$69637_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69637_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_$69637_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_$69637_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_$69637_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":69637,"src":"5757:12:118"},"referencedDeclaration":69637,"src":"5757:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69637_storage_ptr","typeString":"struct Gear.Message"}},"id":67418,"nodeType":"ArrayTypeName","src":"5757:14:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69637_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_$69637_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":69627,"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_$69637_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":69629,"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_$69637_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":69631,"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_$69637_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":69633,"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_$69637_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":69627,"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_$69637_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":69629,"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_$69637_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":69631,"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_$69637_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":69633,"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_$69637_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":69637,"src":"6451:12:118"},"referencedDeclaration":69637,"src":"6451:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69637_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_$69637_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":69629,"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_$69637_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":69633,"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_$69637_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":69629,"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_$69637_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":69631,"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_$69637_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":69633,"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_$69637_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":69636,"src":"7550:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69656_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":69653,"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_$69637_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":69636,"src":"7592:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69656_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":69655,"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_$69637_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":69631,"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_$69637_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":69633,"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_$69637_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":69636,"src":"7872:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69656_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":69653,"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_$69637_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":69636,"src":"7898:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69656_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":69655,"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_$69637_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":69637,"src":"7175:12:118"},"referencedDeclaration":69637,"src":"7175:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69637_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_$69694_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":69694,"src":"8131:15:118"},"referencedDeclaration":69694,"src":"8131:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69694_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_$69694_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_$69694_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_$69694_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$69694_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":67646,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"8239:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:118","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":70147,"src":"8239:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$69694_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_$69694_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":69691,"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_$69694_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":69693,"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_$69694_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":69689,"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_$69694_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":69693,"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_$69694_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_$69694_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":69694,"src":"7960:15:118"},"referencedDeclaration":69694,"src":"7960:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69694_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":67612,"nodeType":"ArrayTypeName","src":"7960:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69694_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":"0x6080604052348015600e575f5ffd5b50611b3a8061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80639cb3300511610088578063affed0e011610063578063affed0e01461019c578063d5624222146101a5578063e43f3433146101b8578063f887ea40146101c0575f5ffd5b80639cb33005146101645780639ce110d7146101765780639ed3235014610189575f5ffd5b806329336f39146100cf57806336a52a18146100e4578063485cc95514610114578063701da98e14610127578063704ed5421461013e57806391d5a64c14610151575b5f5ffd5b6100e26100dd3660046112c6565b6101c8565b005b6001546100f7906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e2610122366004611333565b61032d565b61013060035481565b60405190815260200161010b565b6100e261014c36600461136a565b61040e565b6100e261015f366004611383565b610534565b5f546100f7906001600160a01b031681565b6002546100f7906001600160a01b031681565b61013061019736600461139a565b6105a2565b61013060045481565b6101306101b33660046113d0565b610796565b6100e26109d3565b6100f7610ac0565b6001546001600160a01b0316156101fa5760405162461bcd60e51b81526004016101f19061141f565b60405180910390fd5b5f6004541161021b5760405162461bcd60e51b81526004016101f19061144e565b806001600160801b038116156102d8575f610234610ac0565b90505f61024082610b26565b6001600160a01b03166323b872dd610256610b8f565b84866040518463ffffffff1660e01b815260040161027693929190611499565b6020604051808303815f875af1158015610292573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906114c5565b9050806102d55760405162461bcd60e51b81526004016101f1906114e4565b50505b6102e0610b8f565b6001600160a01b03167fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8686868660405161031e9493929190611573565b60405180910390a25050505050565b610335610ac0565b6001600160a01b0316336001600160a01b0316146103905760405162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a3432903937baba32b960411b60448201526064016101f1565b6002546001600160a01b0316156103b95760405162461bcd60e51b81526004016101f1906115a6565b5f546001600160a01b0316156103e15760405162461bcd60e51b81526004016101f1906115a6565b600280546001600160a01b039384166001600160a01b0319918216179091555f8054929093169116179055565b6001546001600160a01b0316156104375760405162461bcd60e51b81526004016101f19061141f565b806001600160801b038116156104f4575f610450610ac0565b90505f61045c82610b26565b6001600160a01b03166323b872dd610472610b8f565b84866040518463ffffffff1660e01b815260040161049293929190611499565b6020604051808303815f875af11580156104ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d291906114c5565b9050806104f15760405162461bcd60e51b81526004016101f1906114e4565b50505b6040516001600160801b03831681527f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366679060200160405180910390a15050565b5f600454116105555760405162461bcd60e51b81526004016101f19061144e565b61055d610b8f565b6001600160a01b03167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49788260405161059791815260200190565b60405180910390a250565b5f6105ab610ac0565b6001600160a01b0316336001600160a01b0316146106065760405162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a3432903937baba32b960411b60448201526064016101f1565b3061061460208401846115e8565b6001600160a01b03161461066a5760405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e747261637400000060448201526064016101f1565b5f61068061067b60a0850185611603565b610bab565b90505f6106986106936080860186611648565b610c4f565b90505f6106ab60608601604087016115e8565b6001600160a01b0316146106d1576106d16106cc60608601604087016115e8565b610d3a565b8360200135600354146106eb576106eb8460200135610d86565b61078c6106fb60208601866115e8565b602086013561071060608801604089016115e8565b6107206080890160608a0161136a565b60408051606095861b6001600160601b031990811660208084019190915260348301969096529390951b909216605485015260801b6001600160801b03191660688401526078830185905260988084018790528151808503909101815260b89093019052815191012090565b925050505b919050565b6001545f906001600160a01b0316156107c15760405162461bcd60e51b81526004016101f19061141f565b5f60045411806107eb57506002546001600160a01b03166107e0610b8f565b6001600160a01b0316145b6108705760405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a4016101f1565b816001600160801b0381161561092d575f610889610ac0565b90505f61089582610b26565b6001600160a01b03166323b872dd6108ab610b8f565b84866040518463ffffffff1660e01b81526004016108cb93929190611499565b6020604051808303815f875af11580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b91906114c5565b90508061092a5760405162461bcd60e51b81526004016101f1906114e4565b50505b600480545f91309190836109408361168c565b9091555060405160609290921b6001600160601b03191660208301526034820152605401604051602081830303815290604052805190602001209050610984610b8f565b6001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516109c29493929190611573565b60405180910390a295945050505050565b6001546001600160a01b0316610a2b5760405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e617465640000000000000060448201526064016101f1565b5f610a3c610a37610ac0565b610b26565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610a80573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa491906116b0565b600154909150610abd906001600160a01b031682610dc1565b50565b5f306001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2191906116c7565b905090565b5f5f826001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8891906116c7565b9392505050565b5f80546001600160a01b03163303610ba657503290565b503390565b5f6060815b83811015610c3f5736858583818110610bcb57610bcb6116e2565b9050602002810190610bdd91906116f6565b905082610bf1610bec836117eb565b610eab565b604051602001610c029291906118dd565b60408051601f19818403018152919052925060808101355f03610c2d57610c2881610ef8565b610c36565b610c3681611063565b50600101610bb0565b5080516020909101209392505050565b5f6060815b83811015610c3f5736858583818110610c6f57610c6f6116e2565b905060600201905082610c9182803603810190610c8c91906118f5565b611209565b604051602001610ca292919061195b565b6040516020818303038152906040529250610cde816020016020810190610cc991906115e8565b610cd9606084016040850161136a565b610dc1565b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838135610d11606084016040850161136a565b604080519283526001600160801b0390911660208301520160405180910390a150600101610c54565b6001546001600160a01b031615610d635760405162461bcd60e51b81526004016101f19061141f565b600180546001600160a01b0319166001600160a01b038316179055610abd6109d3565b60038190556040518181527f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809309060200160405180910390a150565b6001600160801b03811615610ea7575f610ddc610a37610ac0565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526001600160801b0385166024830152919091169063a9059cbb906044016020604051808303815f875af1158015610e32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5691906114c5565b905080610ea55760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e73666572205756617261000000000000000060448201526064016101f1565b505b5050565b80516020808301516040808501516060860151608087015180519086015193515f97610edb979096959101611977565b604051602081830303815290604052805190602001209050919050565b5f546001600160a01b031615610ffa575f6374fad4ef60e01b8235610f2360408501602086016115e8565b610f3060408601866119d5565b610f40608088016060890161136a565b604051602401610f54959493929190611a17565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092525f80549251919350916001600160a01b0316906207a12090610fa9908590611a5c565b5f604051808303815f8787f1925050503d805f8114610fe3576040519150601f19603f3d011682016040523d82523d5f602084013e610fe8565b606091505b505090508015610ff757505050565b50505b61100a60408201602083016115e8565b6001600160a01b03167f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f8011773823561104360408501856119d5565b611053608087016060880161136a565b6040516105979493929190611573565b61108661107660408301602084016115e8565b610cd9608084016060850161136a565b5f546001600160a01b03161561119c575f639649744960e01b6110af60408401602085016115e8565b6110bc60408501856119d5565b6110cc608087016060880161136a565b60808701356110e160c0890160a08a01611a67565b6040516024016110f696959493929190611a80565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092525f80549251919350916001600160a01b0316906207a1209061114b908590611a5c565b5f604051808303815f8787f1925050503d805f8114611185576040519150601f19603f3d011682016040523d82523d5f602084013e61118a565b606091505b50509050801561119957505050565b50505b6111ac60c0820160a08301611a67565b6001600160e01b0319167fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c66111e460408401846119d5565b6111f4608086016060870161136a565b60405161059793929190608088013590611ad5565b6060815f0151826020015183604001516040516020016112569392919092835260609190911b6001600160601b031916602083015260801b6001600160801b031916603482015260440190565b6040516020818303038152906040529050919050565b5f5f83601f84011261127c575f5ffd5b5081356001600160401b03811115611292575f5ffd5b6020830191508360208285010111156112a9575f5ffd5b9250929050565b80356001600160801b0381168114610791575f5ffd5b5f5f5f5f606085870312156112d9575f5ffd5b8435935060208501356001600160401b038111156112f5575f5ffd5b6113018782880161126c565b90945092506113149050604086016112b0565b905092959194509250565b6001600160a01b0381168114610abd575f5ffd5b5f5f60408385031215611344575f5ffd5b823561134f8161131f565b9150602083013561135f8161131f565b809150509250929050565b5f6020828403121561137a575f5ffd5b610b88826112b0565b5f60208284031215611393575f5ffd5b5035919050565b5f602082840312156113aa575f5ffd5b81356001600160401b038111156113bf575f5ffd5b820160c08185031215610b88575f5ffd5b5f5f5f604084860312156113e2575f5ffd5b83356001600160401b038111156113f7575f5ffd5b6114038682870161126c565b90945092506114169050602085016112b0565b90509250925092565b6020808252601590820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b604082015260600190565b6020808252602b908201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060408201526a1b595cdcd859d9481e595d60aa1b606082015260800190565b6001600160a01b0393841681529190921660208201526001600160801b03909116604082015260600190565b5f602082840312156114d5575f5ffd5b81518015158114610b88575f5ffd5b60208082526041908201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560408201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656060820152603960f91b608082015260a00190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f61158c60608301858761154b565b90506001600160801b038316604083015295945050505050565b60208082526022908201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604082015261636560f01b606082015260800190565b5f602082840312156115f8575f5ffd5b8135610b888161131f565b5f5f8335601e19843603018112611618575f5ffd5b8301803591506001600160401b03821115611631575f5ffd5b6020019150600581901b36038213156112a9575f5ffd5b5f5f8335601e1984360301811261165d575f5ffd5b8301803591506001600160401b03821115611676575f5ffd5b60200191506060810236038213156112a9575f5ffd5b5f600182016116a957634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f602082840312156116c0575f5ffd5b5051919050565b5f602082840312156116d7575f5ffd5b8151610b888161131f565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261170a575f5ffd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561174a5761174a611714565b60405290565b604051601f8201601f191681016001600160401b038111828210171561177857611778611714565b604052919050565b80356001600160e01b031981168114610791575f5ffd5b5f604082840312156117a7575f5ffd5b604080519081016001600160401b03811182821017156117c9576117c9611714565b604052823581529050806117df60208401611780565b60208201525092915050565b5f60c082360312156117fb575f5ffd5b611803611728565b8235815260208301356118158161131f565b602082015260408301356001600160401b03811115611832575f5ffd5b830136601f820112611842575f5ffd5b80356001600160401b0381111561185b5761185b611714565b61186e601f8201601f1916602001611750565b818152366020838501011115611882575f5ffd5b816020840160208301375f602083830101528060408501525050506118a9606084016112b0565b60608201526118bb3660808501611797565b608082015292915050565b5f81518060208401855e5f93019283525090919050565b5f6118e882856118c6565b9283525050602001919050565b5f6060828403128015611906575f5ffd5b50604051606081016001600160401b038111828210171561192957611929611714565b60405282358152602083013561193e8161131f565b602082015261194f604084016112b0565b60408201529392505050565b5f61196f61196983866118c6565b846118c6565b949350505050565b8681526bffffffffffffffffffffffff198660601b1660208201525f6119a060348301876118c6565b60809590951b6001600160801b0319168552505060108301919091526001600160e01b03191660308201526034019392505050565b5f5f8335601e198436030181126119ea575f5ffd5b8301803591506001600160401b03821115611a03575f5ffd5b6020019150368190038213156112a9575f5ffd5b8581526001600160a01b03851660208201526080604082018190525f90611a41908301858761154b565b90506001600160801b03831660608301529695505050505050565b5f610b8882846118c6565b5f60208284031215611a77575f5ffd5b610b8882611780565b6001600160a01b038716815260a0602082018190525f90611aa4908301878961154b565b6001600160801b039590951660408301525060608101929092526001600160e01b0319166080909101529392505050565b606081525f611ae860608301868861154b565b6001600160801b0394909416602083015250604001529291505056fea2646970667358221220f6ee23037cacdd27656539e4e99d8eac4cdb03bcb01d6d962cbd126239be50f464736f6c634300081c0033","sourceMap":"403:9266:118:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80639cb3300511610088578063affed0e011610063578063affed0e01461019c578063d5624222146101a5578063e43f3433146101b8578063f887ea40146101c0575f5ffd5b80639cb33005146101645780639ce110d7146101765780639ed3235014610189575f5ffd5b806329336f39146100cf57806336a52a18146100e4578063485cc95514610114578063701da98e14610127578063704ed5421461013e57806391d5a64c14610151575b5f5ffd5b6100e26100dd3660046112c6565b6101c8565b005b6001546100f7906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e2610122366004611333565b61032d565b61013060035481565b60405190815260200161010b565b6100e261014c36600461136a565b61040e565b6100e261015f366004611383565b610534565b5f546100f7906001600160a01b031681565b6002546100f7906001600160a01b031681565b61013061019736600461139a565b6105a2565b61013060045481565b6101306101b33660046113d0565b610796565b6100e26109d3565b6100f7610ac0565b6001546001600160a01b0316156101fa5760405162461bcd60e51b81526004016101f19061141f565b60405180910390fd5b5f6004541161021b5760405162461bcd60e51b81526004016101f19061144e565b806001600160801b038116156102d8575f610234610ac0565b90505f61024082610b26565b6001600160a01b03166323b872dd610256610b8f565b84866040518463ffffffff1660e01b815260040161027693929190611499565b6020604051808303815f875af1158015610292573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906114c5565b9050806102d55760405162461bcd60e51b81526004016101f1906114e4565b50505b6102e0610b8f565b6001600160a01b03167fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8686868660405161031e9493929190611573565b60405180910390a25050505050565b610335610ac0565b6001600160a01b0316336001600160a01b0316146103905760405162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a3432903937baba32b960411b60448201526064016101f1565b6002546001600160a01b0316156103b95760405162461bcd60e51b81526004016101f1906115a6565b5f546001600160a01b0316156103e15760405162461bcd60e51b81526004016101f1906115a6565b600280546001600160a01b039384166001600160a01b0319918216179091555f8054929093169116179055565b6001546001600160a01b0316156104375760405162461bcd60e51b81526004016101f19061141f565b806001600160801b038116156104f4575f610450610ac0565b90505f61045c82610b26565b6001600160a01b03166323b872dd610472610b8f565b84866040518463ffffffff1660e01b815260040161049293929190611499565b6020604051808303815f875af11580156104ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d291906114c5565b9050806104f15760405162461bcd60e51b81526004016101f1906114e4565b50505b6040516001600160801b03831681527f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366679060200160405180910390a15050565b5f600454116105555760405162461bcd60e51b81526004016101f19061144e565b61055d610b8f565b6001600160a01b03167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49788260405161059791815260200190565b60405180910390a250565b5f6105ab610ac0565b6001600160a01b0316336001600160a01b0316146106065760405162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a3432903937baba32b960411b60448201526064016101f1565b3061061460208401846115e8565b6001600160a01b03161461066a5760405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e747261637400000060448201526064016101f1565b5f61068061067b60a0850185611603565b610bab565b90505f6106986106936080860186611648565b610c4f565b90505f6106ab60608601604087016115e8565b6001600160a01b0316146106d1576106d16106cc60608601604087016115e8565b610d3a565b8360200135600354146106eb576106eb8460200135610d86565b61078c6106fb60208601866115e8565b602086013561071060608801604089016115e8565b6107206080890160608a0161136a565b60408051606095861b6001600160601b031990811660208084019190915260348301969096529390951b909216605485015260801b6001600160801b03191660688401526078830185905260988084018790528151808503909101815260b89093019052815191012090565b925050505b919050565b6001545f906001600160a01b0316156107c15760405162461bcd60e51b81526004016101f19061141f565b5f60045411806107eb57506002546001600160a01b03166107e0610b8f565b6001600160a01b0316145b6108705760405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a4016101f1565b816001600160801b0381161561092d575f610889610ac0565b90505f61089582610b26565b6001600160a01b03166323b872dd6108ab610b8f565b84866040518463ffffffff1660e01b81526004016108cb93929190611499565b6020604051808303815f875af11580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b91906114c5565b90508061092a5760405162461bcd60e51b81526004016101f1906114e4565b50505b600480545f91309190836109408361168c565b9091555060405160609290921b6001600160601b03191660208301526034820152605401604051602081830303815290604052805190602001209050610984610b8f565b6001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516109c29493929190611573565b60405180910390a295945050505050565b6001546001600160a01b0316610a2b5760405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e617465640000000000000060448201526064016101f1565b5f610a3c610a37610ac0565b610b26565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610a80573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa491906116b0565b600154909150610abd906001600160a01b031682610dc1565b50565b5f306001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2191906116c7565b905090565b5f5f826001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8891906116c7565b9392505050565b5f80546001600160a01b03163303610ba657503290565b503390565b5f6060815b83811015610c3f5736858583818110610bcb57610bcb6116e2565b9050602002810190610bdd91906116f6565b905082610bf1610bec836117eb565b610eab565b604051602001610c029291906118dd565b60408051601f19818403018152919052925060808101355f03610c2d57610c2881610ef8565b610c36565b610c3681611063565b50600101610bb0565b5080516020909101209392505050565b5f6060815b83811015610c3f5736858583818110610c6f57610c6f6116e2565b905060600201905082610c9182803603810190610c8c91906118f5565b611209565b604051602001610ca292919061195b565b6040516020818303038152906040529250610cde816020016020810190610cc991906115e8565b610cd9606084016040850161136a565b610dc1565b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838135610d11606084016040850161136a565b604080519283526001600160801b0390911660208301520160405180910390a150600101610c54565b6001546001600160a01b031615610d635760405162461bcd60e51b81526004016101f19061141f565b600180546001600160a01b0319166001600160a01b038316179055610abd6109d3565b60038190556040518181527f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809309060200160405180910390a150565b6001600160801b03811615610ea7575f610ddc610a37610ac0565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526001600160801b0385166024830152919091169063a9059cbb906044016020604051808303815f875af1158015610e32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5691906114c5565b905080610ea55760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e73666572205756617261000000000000000060448201526064016101f1565b505b5050565b80516020808301516040808501516060860151608087015180519086015193515f97610edb979096959101611977565b604051602081830303815290604052805190602001209050919050565b5f546001600160a01b031615610ffa575f6374fad4ef60e01b8235610f2360408501602086016115e8565b610f3060408601866119d5565b610f40608088016060890161136a565b604051602401610f54959493929190611a17565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092525f80549251919350916001600160a01b0316906207a12090610fa9908590611a5c565b5f604051808303815f8787f1925050503d805f8114610fe3576040519150601f19603f3d011682016040523d82523d5f602084013e610fe8565b606091505b505090508015610ff757505050565b50505b61100a60408201602083016115e8565b6001600160a01b03167f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f8011773823561104360408501856119d5565b611053608087016060880161136a565b6040516105979493929190611573565b61108661107660408301602084016115e8565b610cd9608084016060850161136a565b5f546001600160a01b03161561119c575f639649744960e01b6110af60408401602085016115e8565b6110bc60408501856119d5565b6110cc608087016060880161136a565b60808701356110e160c0890160a08a01611a67565b6040516024016110f696959493929190611a80565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092525f80549251919350916001600160a01b0316906207a1209061114b908590611a5c565b5f604051808303815f8787f1925050503d805f8114611185576040519150601f19603f3d011682016040523d82523d5f602084013e61118a565b606091505b50509050801561119957505050565b50505b6111ac60c0820160a08301611a67565b6001600160e01b0319167fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c66111e460408401846119d5565b6111f4608086016060870161136a565b60405161059793929190608088013590611ad5565b6060815f0151826020015183604001516040516020016112569392919092835260609190911b6001600160601b031916602083015260801b6001600160801b031916603482015260440190565b6040516020818303038152906040529050919050565b5f5f83601f84011261127c575f5ffd5b5081356001600160401b03811115611292575f5ffd5b6020830191508360208285010111156112a9575f5ffd5b9250929050565b80356001600160801b0381168114610791575f5ffd5b5f5f5f5f606085870312156112d9575f5ffd5b8435935060208501356001600160401b038111156112f5575f5ffd5b6113018782880161126c565b90945092506113149050604086016112b0565b905092959194509250565b6001600160a01b0381168114610abd575f5ffd5b5f5f60408385031215611344575f5ffd5b823561134f8161131f565b9150602083013561135f8161131f565b809150509250929050565b5f6020828403121561137a575f5ffd5b610b88826112b0565b5f60208284031215611393575f5ffd5b5035919050565b5f602082840312156113aa575f5ffd5b81356001600160401b038111156113bf575f5ffd5b820160c08185031215610b88575f5ffd5b5f5f5f604084860312156113e2575f5ffd5b83356001600160401b038111156113f7575f5ffd5b6114038682870161126c565b90945092506114169050602085016112b0565b90509250925092565b6020808252601590820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b604082015260600190565b6020808252602b908201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060408201526a1b595cdcd859d9481e595d60aa1b606082015260800190565b6001600160a01b0393841681529190921660208201526001600160801b03909116604082015260600190565b5f602082840312156114d5575f5ffd5b81518015158114610b88575f5ffd5b60208082526041908201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560408201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656060820152603960f91b608082015260a00190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f61158c60608301858761154b565b90506001600160801b038316604083015295945050505050565b60208082526022908201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604082015261636560f01b606082015260800190565b5f602082840312156115f8575f5ffd5b8135610b888161131f565b5f5f8335601e19843603018112611618575f5ffd5b8301803591506001600160401b03821115611631575f5ffd5b6020019150600581901b36038213156112a9575f5ffd5b5f5f8335601e1984360301811261165d575f5ffd5b8301803591506001600160401b03821115611676575f5ffd5b60200191506060810236038213156112a9575f5ffd5b5f600182016116a957634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f602082840312156116c0575f5ffd5b5051919050565b5f602082840312156116d7575f5ffd5b8151610b888161131f565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261170a575f5ffd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561174a5761174a611714565b60405290565b604051601f8201601f191681016001600160401b038111828210171561177857611778611714565b604052919050565b80356001600160e01b031981168114610791575f5ffd5b5f604082840312156117a7575f5ffd5b604080519081016001600160401b03811182821017156117c9576117c9611714565b604052823581529050806117df60208401611780565b60208201525092915050565b5f60c082360312156117fb575f5ffd5b611803611728565b8235815260208301356118158161131f565b602082015260408301356001600160401b03811115611832575f5ffd5b830136601f820112611842575f5ffd5b80356001600160401b0381111561185b5761185b611714565b61186e601f8201601f1916602001611750565b818152366020838501011115611882575f5ffd5b816020840160208301375f602083830101528060408501525050506118a9606084016112b0565b60608201526118bb3660808501611797565b608082015292915050565b5f81518060208401855e5f93019283525090919050565b5f6118e882856118c6565b9283525050602001919050565b5f6060828403128015611906575f5ffd5b50604051606081016001600160401b038111828210171561192957611929611714565b60405282358152602083013561193e8161131f565b602082015261194f604084016112b0565b60408201529392505050565b5f61196f61196983866118c6565b846118c6565b949350505050565b8681526bffffffffffffffffffffffff198660601b1660208201525f6119a060348301876118c6565b60809590951b6001600160801b0319168552505060108301919091526001600160e01b03191660308201526034019392505050565b5f5f8335601e198436030181126119ea575f5ffd5b8301803591506001600160401b03821115611a03575f5ffd5b6020019150368190038213156112a9575f5ffd5b8581526001600160a01b03851660208201526080604082018190525f90611a41908301858761154b565b90506001600160801b03831660608301529695505050505050565b5f610b8882846118c6565b5f60208284031215611a77575f5ffd5b610b8882611780565b6001600160a01b038716815260a0602082018190525f90611aa4908301878961154b565b6001600160801b039590951660408301525060608101929092526001600160e01b0319166080909101529392505050565b606081525f611ae860608301868861154b565b6001600160801b0394909416602083015250604001529291505056fea2646970667358221220f6ee23037cacdd27656539e4e99d8eac4cdb03bcb01d6d962cbd126239be50f464736f6c634300081c0033","sourceMap":"403:9266:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3139:269;;;;;;:::i;:::-;;:::i;:::-;;464:24;;;;;-1:-1:-1;;;;;464:24:118;;;;;;-1:-1:-1;;;;;1325:32:128;;;1307:51;;1295:2;1280:18;464:24:118;;;;;;;;3970:310;;;;;;:::i;:::-;;:::i;696:24::-;;;;;;;;;2044:25:128;;;2032:2;2017:18;696:24:118;1898:177:128;3559:154:118;;;;;;:::i;:::-;;:::i;3414:139::-;;;;;;:::i;:::-;;:::i;436:22::-;;;;;-1:-1:-1;;;;;436:22:118;;;664:26;;;;;-1:-1:-1;;;;;664:26:118;;;4363:1163;;;;;;:::i;:::-;;:::i;726:20::-;;;;;;2750:383;;;;;;:::i;:::-;;:::i;3719:193::-;;;:::i;2606:108::-;;;:::i;3139:269::-;2500:9;;-1:-1:-1;;;;;2500:9:118;:23;2492:57;;;;-1:-1:-1;;;2492:57:118;;;;;;;:::i;:::-;;;;;;;;;1890:1:::1;1882:5;;:9;1874:65;;;;-1:-1:-1::0;;;1874:65:118::1;;;;;;;:::i;:::-;3311:6:::0;-1:-1:-1;;;;;1107:10:118;::::2;::::0;1103:259:::2;;1133:18;1154:8;:6;:8::i;:::-;1133:29;;1176:12;1191:18;1198:10;1191:6;:18::i;:::-;-1:-1:-1::0;;;;;1191:31:118::2;;1223:9;:7;:9::i;:::-;1234:10;1246:5;1191:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1176:76;;1274:7;1266:85;;;;-1:-1:-1::0;;;1266:85:118::2;;;;;;;:::i;:::-;1119:243;;1103:259;3373:9:::3;:7;:9::i;:::-;-1:-1:-1::0;;;;;3338:63:118::3;;3361:10;3384:8;;3394:6;3338:63;;;;;;;;;:::i;:::-;;;;;;;;1949:1:::2;3139:269:::0;;;;:::o;3970:310::-;882:8;:6;:8::i;:::-;-1:-1:-1;;;;;868:22:118;:10;-1:-1:-1;;;;;868:22:118;;860:59;;;;-1:-1:-1;;;860:59:118;;6413:2:128;860:59:118;;;6395:21:128;6452:2;6432:18;;;6425:30;-1:-1:-1;;;6471:18:128;;;6464:54;6535:18;;860:59:118;6211:348:128;860:59:118;4066:11:::1;::::0;-1:-1:-1;;;;;4066:11:118::1;:25:::0;4058:72:::1;;;;-1:-1:-1::0;;;4058:72:118::1;;;;;;;:::i;:::-;4167:1;4148:7:::0;-1:-1:-1;;;;;4148:7:118::1;:21:::0;4140:68:::1;;;;-1:-1:-1::0;;;4140:68:118::1;;;;;;;:::i;:::-;4219:11;:26:::0;;-1:-1:-1;;;;;4219:26:118;;::::1;-1:-1:-1::0;;;;;;4219:26:118;;::::1;;::::0;;;:11:::1;4255:18:::0;;;;;::::1;::::0;::::1;;::::0;;3970:310::o;3559:154::-;2500:9;;-1:-1:-1;;;;;2500:9:118;:23;2492:57;;;;-1:-1:-1;;;2492:57:118;;;;;;;:::i;:::-;3644:6;-1:-1:-1;;;;;1107:10:118;::::1;::::0;1103:259:::1;;1133:18;1154:8;:6;:8::i;:::-;1133:29;;1176:12;1191:18;1198:10;1191:6;:18::i;:::-;-1:-1:-1::0;;;;;1191:31:118::1;;1223:9;:7;:9::i;:::-;1234:10;1246:5;1191:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1176:76;;1274:7;1266:85;;;;-1:-1:-1::0;;;1266:85:118::1;;;;;;;:::i;:::-;1119:243;;1103:259;3667:39:::2;::::0;-1:-1:-1;;;;;7131:47:128;;7113:66;;3667:39:118::2;::::0;7101:2:128;7086:18;3667:39:118::2;;;;;;;2559:1:::1;3559:154:::0;:::o;3414:139::-;1890:1;1882:5;;:9;1874:65;;;;-1:-1:-1;;;1874:65:118;;;;;;;:::i;:::-;3536:9:::1;:7;:9::i;:::-;-1:-1:-1::0;;;;;3501:45:118::1;;3524:10;3501:45;;;;2044:25:128::0;;2032:2;2017:18;;1898:177;3501:45:118::1;;;;;;;;3414:139:::0;:::o;4363:1163::-;4467:7;882:8;:6;:8::i;:::-;-1:-1:-1;;;;;868:22:118;:10;-1:-1:-1;;;;;868:22:118;;860:59;;;;-1:-1:-1;;;860:59:118;;6413:2:128;860:59:118;;;6395:21:128;6452:2;6432:18;;;6425:30;-1:-1:-1;;;6471:18:128;;;6464:54;6535:18;;860:59:118;6211:348:128;860:59:118;4595:4:::1;4564:19;;::::0;::::1;:11:::0;:19:::1;:::i;:::-;-1:-1:-1::0;;;;;4564:36:118::1;;4556:78;;;::::0;-1:-1:-1;;;4556:78:118;;7644:2:128;4556:78:118::1;::::0;::::1;7626:21:128::0;7683:2;7663:18;;;7656:30;7722:31;7702:18;;;7695:59;7771:18;;4556:78:118::1;7442:353:128::0;4556:78:118::1;4690:26;4719:35;4733:20;;::::0;::::1;:11:::0;:20:::1;:::i;:::-;4719:13;:35::i;:::-;4690:64:::0;-1:-1:-1;4809:23:118::1;4835:37;4848:23;;::::0;::::1;:11:::0;:23:::1;:::i;:::-;4835:12;:37::i;:::-;4809:63:::0;-1:-1:-1;4965:1:118::1;4932:21;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;4932:35:118::1;;4928:102;;4983:36;4997:21;::::0;;;::::1;::::0;::::1;;:::i;:::-;4983:13;:36::i;:::-;5108:11;:24;;;5095:9;;:37;5091:110;;5148:42;5165:11;:24;;;5148:16;:42::i;:::-;5278:241;5316:19;;::::0;::::1;:11:::0;:19:::1;:::i;:::-;5349:24;::::0;::::1;;5387:21;::::0;;;::::1;::::0;::::1;;:::i;:::-;5422:26;::::0;;;::::1;::::0;::::1;;:::i;:::-;5080:101:122::0;;;16089:2:128;16085:15;;;-1:-1:-1;;;;;;16081:53:128;;;5080:101:122;;;;16069:66:128;;;;16151:12;;;16144:28;;;;16206:15;;;;16202:53;;;16188:12;;;16181:75;16294:3;16290:16;-1:-1:-1;;;;;;16286:62:128;16272:12;;;16265:84;16365:12;;;16358:28;;;16402:13;;;;16395:29;;;5080:101:122;;;;;;;;;;16440:13:128;;;;5080:101:122;;5057:134;;;;;;4792:406;5278:241:118::1;5271:248;;;;929:1;4363:1163:::0;;;:::o;2750:383::-;2500:9;;2946:7;;-1:-1:-1;;;;;2500:9:118;:23;2492:57;;;;-1:-1:-1;;;2492:57:118;;;;;;;:::i;:::-;2212:1:::1;2204:5;;:9;:37;;;-1:-1:-1::0;2230:11:118::1;::::0;-1:-1:-1;;;;;2230:11:118::1;2217:9;:7;:9::i;:::-;-1:-1:-1::0;;;;;2217:24:118::1;;2204:37;2183:158;;;::::0;-1:-1:-1;;;2183:158:118;;9164:2:128;2183:158:118::1;::::0;::::1;9146:21:128::0;9203:2;9183:18;;;9176:30;9242:34;9222:18;;;9215:62;9313:34;9293:18;;;9286:62;-1:-1:-1;;;9364:19:128;;;9357:41;9415:19;;2183:158:118::1;8962:478:128::0;2183:158:118::1;2921:6:::0;-1:-1:-1;;;;;1107:10:118;::::2;::::0;1103:259:::2;;1133:18;1154:8;:6;:8::i;:::-;1133:29;;1176:12;1191:18;1198:10;1191:6;:18::i;:::-;-1:-1:-1::0;;;;;1191:31:118::2;;1223:9;:7;:9::i;:::-;1234:10;1246:5;1191:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1176:76;;1274:7;1266:85;;;;-1:-1:-1::0;;;1266:85:118::2;;;;;;;:::i;:::-;1119:243;;1103:259;3024:5:::3;:7:::0;;2969:10:::3;::::0;3017:4:::3;::::0;3024:7;2969:10;3024:7:::3;::::0;::::3;:::i;:::-;::::0;;;-1:-1:-1;2992:40:118::3;::::0;9859:2:128;9855:15;;;;-1:-1:-1;;;;;;9851:53:128;2992:40:118::3;::::0;::::3;9839:66:128::0;9921:12;;;9914:28;9958:12;;2992:40:118::3;;;;;;;;;;;;2982:51;;;;;;2969:64;;3078:9;:7;:9::i;:::-;-1:-1:-1::0;;;;;3049:57:118::3;;3074:2;3089:8;;3099:6;3049:57;;;;;;;;;:::i;:::-;;;;;;;;3124:2:::0;2750:383;-1:-1:-1;;;;;2750:383:118:o;3719:193::-;1633:9;;-1:-1:-1;;;;;1633:9:118;1625:61;;;;-1:-1:-1;;;1625:61:118;;10183:2:128;1625:61:118;;;10165:21:128;10222:2;10202:18;;;10195:30;10261:27;10241:18;;;10234:55;10306:18;;1625:61:118;9981:349:128;1625:61:118;3793:15:::1;3811:16;3818:8;:6;:8::i;:::-;3811:6;:16::i;:::-;:41;::::0;-1:-1:-1;;;3811:41:118;;3846:4:::1;3811:41;::::0;::::1;1307:51:128::0;-1:-1:-1;;;;;3811:26:118;;;::::1;::::0;::::1;::::0;1280:18:128;;3811:41:118::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3877:9;::::0;3793:59;;-1:-1:-1;3862:43:118::1;::::0;-1:-1:-1;;;;;3877:9:118::1;3793:59:::0;3862:14:::1;:43::i;:::-;3783:129;3719:193::o:0;2606:108::-;2645:7;2692:4;-1:-1:-1;;;;;2671:34:118;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2664:43;;2606:108;:::o;9048:182::-;9106:12;9130:17;9158:10;-1:-1:-1;;;;;9150:31:118;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9130:53;9048:182;-1:-1:-1;;;9048:182:118:o;9236:::-;9277:7;9314;;-1:-1:-1;;;;;9314:7:118;9300:10;:21;9296:116;;-1:-1:-1;9344:9:118;;9236:182::o;9296:116::-;-1:-1:-1;9391:10:118;;9236:182::o;5734:627::-;5809:7;5828:27;5809:7;5866:446;5886:20;;;5866:446;;;5927:29;5959:9;;5969:1;5959:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;5927:44;-1:-1:-1;6016:14:118;6032:25;;5927:44;6032:25;:::i;:::-;:16;:25::i;:::-;6003:55;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6003:55:118;;;;;;;;;;-1:-1:-1;6144:20:118;;;:23;;:28;6140:162;;6192:30;6214:7;6192:21;:30::i;:::-;6140:162;;;6261:26;6279:7;6261:17;:26::i;:::-;-1:-1:-1;5908:3:118;;5866:446;;;-1:-1:-1;6329:25:118;;;;;;;;5734:627;-1:-1:-1;;;5734:627:118:o;7938:514::-;8013:7;8032:29;8013:7;8072:329;8092:18;;;8072:329;;;8131:30;8164:7;;8172:1;8164:10;;;;;;;:::i;:::-;;;;;;8131:43;;8221:16;8239:27;8260:5;8239:27;;;;;;;;;;:::i;:::-;:20;:27::i;:::-;8208:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8189:78;;8282:46;8297:5;:17;;;;;;;;;;:::i;:::-;8316:11;;;;;;;;:::i;:::-;8282:14;:46::i;:::-;8348:42;8361:15;;8378:11;;;;;;;;:::i;:::-;8348:42;;;15680:25:128;;;-1:-1:-1;;;;;15741:47:128;;;15736:2;15721:18;;15714:75;15653:18;8348:42:118;;;;;;;-1:-1:-1;8112:3:118;;8072:329;;8524:243;2500:9;;-1:-1:-1;;;;;2500:9:118;:23;2492:57;;;;-1:-1:-1;;;2492:57:118;;;;;;;:::i;:::-;8629:9:::1;:22:::0;;-1:-1:-1;;;;;;8629:22:118::1;-1:-1:-1::0;;;;;8629:22:118;::::1;;::::0;;8728:32:::1;:30;:32::i;8773:235::-:0;8870:9;:22;;;8978:23;;2044:25:128;;;8978:23:118;;2032:2:128;2017:18;8978:23:118;;;;;;;8773:235;:::o;9424:243::-;-1:-1:-1;;;;;9506:10:118;;;9502:159;;9532:12;9547:16;9554:8;:6;:8::i;9547:16::-;:45;;-1:-1:-1;;;9547:45:118;;-1:-1:-1;;;;;16656:32:128;;;9547:45:118;;;16638:51:128;-1:-1:-1;;;;;16725:47:128;;16705:18;;;16698:75;9547:25:118;;;;;;;16611:18:128;;9547:45:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9532:60;;9614:7;9606:44;;;;-1:-1:-1;;;9606:44:118;;16986:2:128;9606:44:118;;;16968:21:128;17025:2;17005:18;;;16998:30;17064:26;17044:18;;;17037:54;17108:18;;9606:44:118;16784:348:128;9606:44:118;9518:143;9502:159;9424:243;;:::o;4234:377:122:-;4385:10;;4413:19;;;;;4450:15;;;;;4483:13;;;;4514:20;;;;:23;;4555:25;;;;4351:243;;4302:7;;4351:243;;4385:10;;4413:19;4555:25;4351:243;;:::i;:::-;;;;;;;;;;;;;4328:276;;;;;;4321:283;;4234:377;;;:::o;6420:653:118:-;6524:1;6505:7;-1:-1:-1;;;;;6505:7:118;:21;6501:474;;6542:21;-1:-1:-1;;;6661:11:118;;6690:20;;;;;;;;:::i;:::-;6728:16;;;;:8;:16;:::i;:::-;6762:14;;;;;;;;:::i;:::-;6566:224;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6566:224:118;;;;;;;;;;;;;;-1:-1:-1;;;;;6566:224:118;-1:-1:-1;;;;;;6566:224:118;;;;;;;;;;-1:-1:-1;6862:7:118;;:36;;6566:224;;-1:-1:-1;;;;;;;6862:7:118;;6880;;6862:36;;6566:224;;6862:36;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6844:54;;;6917:7;6913:52;;;6944:7;;6420:653;:::o;6913:52::-;6528:447;;6501:474;7011:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6990:76:118;;6998:11;;7033:16;;;;6998:8;7033:16;:::i;:::-;7051:14;;;;;;;;:::i;:::-;6990:76;;;;;;;;;:::i;7148:784::-;7225:52;7240:20;;;;;;;;:::i;:::-;7262:14;;;;;;;;:::i;7225:52::-;7311:1;7292:7;-1:-1:-1;;;;;7292:7:118;:21;7288:529;;7329:21;-1:-1:-1;;;7446:20:118;;;;;;;;:::i;:::-;7484:16;;;;:8;:16;:::i;:::-;7518:14;;;;;;;;:::i;:::-;7550:21;;;:24;7592:26;;;;;;;;:::i;:::-;7353:279;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7353:279:118;;;;;;;;;;;;;;-1:-1:-1;;;;;7353:279:118;-1:-1:-1;;;;;;7353:279:118;;;;;;;;;;-1:-1:-1;7704:7:118;;:36;;7353:279;;-1:-1:-1;;;;;;;7704:7:118;;7722;;7704:36;;7353:279;;7704:36;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7686:54;;;7759:7;7755:52;;;7786:7;;7148:784;:::o;7755:52::-;7315:502;;7288:529;7898:26;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;7832:93:118;;7838:16;;;;:8;:16;:::i;:::-;7856:14;;;;;;;;:::i;:::-;7832:93;;;;;;;7872:21;;;:24;;7832:93;:::i;9781:176:122:-;9854:12;9902:5;:15;;;9919:5;:17;;;9938:5;:11;;;9885:65;;;;;;;;;20502:19:128;;;20559:2;20555:15;;;;-1:-1:-1;;;;;;20551:53:128;20546:2;20537:12;;20530:75;20643:3;20639:16;-1:-1:-1;;;;;;20635:62:128;20630:2;20621:12;;20614:84;20723:2;20714:12;;20317:415;9885:65:122;;;;;;;;;;;;;9878:72;;9781:176;;;:::o;14:347:128:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:128;;-1:-1:-1;;;;;202:30:128;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:188::-;434:20;;-1:-1:-1;;;;;483:46:128;;473:57;;463:85;;544:1;541;534:12;559:597;647:6;655;663;671;724:2;712:9;703:7;699:23;695:32;692:52;;;740:1;737;730:12;692:52;785:23;;;-1:-1:-1;883:2:128;868:18;;855:32;-1:-1:-1;;;;;899:30:128;;896:50;;;942:1;939;932:12;896:50;981:58;1031:7;1022:6;1011:9;1007:22;981:58;:::i;:::-;1058:8;;-1:-1:-1;955:84:128;-1:-1:-1;1112:38:128;;-1:-1:-1;1146:2:128;1131:18;;1112:38;:::i;:::-;1102:48;;559:597;;;;;;;:::o;1369:131::-;-1:-1:-1;;;;;1444:31:128;;1434:42;;1424:70;;1490:1;1487;1480:12;1505:388;1573:6;1581;1634:2;1622:9;1613:7;1609:23;1605:32;1602:52;;;1650:1;1647;1640:12;1602:52;1689:9;1676:23;1708:31;1733:5;1708:31;:::i;:::-;1758:5;-1:-1:-1;1815:2:128;1800:18;;1787:32;1828:33;1787:32;1828:33;:::i;:::-;1880:7;1870:17;;;1505:388;;;;;:::o;2080:186::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2231:29;2250:9;2231:29;:::i;2271:226::-;2330:6;2383:2;2371:9;2362:7;2358:23;2354:32;2351:52;;;2399:1;2396;2389:12;2351:52;-1:-1:-1;2444:23:128;;2271:226;-1:-1:-1;2271:226:128:o;2502:396::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2706:9;2693:23;-1:-1:-1;;;;;2731:6:128;2728:30;2725:50;;;2771:1;2768;2761:12;2725:50;2794:22;;2850:3;2832:16;;;2828:26;2825:46;;;2867:1;2864;2857:12;3085:483;3164:6;3172;3180;3233:2;3221:9;3212:7;3208:23;3204:32;3201:52;;;3249:1;3246;3239:12;3201:52;3289:9;3276:23;-1:-1:-1;;;;;3314:6:128;3311:30;3308:50;;;3354:1;3351;3344:12;3308:50;3393:58;3443:7;3434:6;3423:9;3419:22;3393:58;:::i;:::-;3470:8;;-1:-1:-1;3367:84:128;-1:-1:-1;3524:38:128;;-1:-1:-1;3558:2:128;3543:18;;3524:38;:::i;:::-;3514:48;;3085:483;;;;;:::o;3573:345::-;3775:2;3757:21;;;3814:2;3794:18;;;3787:30;-1:-1:-1;;;3848:2:128;3833:18;;3826:51;3909:2;3894:18;;3573:345::o;3923:407::-;4125:2;4107:21;;;4164:2;4144:18;;;4137:30;4203:34;4198:2;4183:18;;4176:62;-1:-1:-1;;;4269:2:128;4254:18;;4247:41;4320:3;4305:19;;3923:407::o;4335:412::-;-1:-1:-1;;;;;4555:32:128;;;4537:51;;4624:32;;;;4619:2;4604:18;;4597:60;-1:-1:-1;;;;;4693:47:128;;;4688:2;4673:18;;4666:75;4525:2;4510:18;;4335:412::o;4752:277::-;4819:6;4872:2;4860:9;4851:7;4847:23;4843:32;4840:52;;;4888:1;4885;4878:12;4840:52;4920:9;4914:16;4973:5;4966:13;4959:21;4952:5;4949:32;4939:60;;4995:1;4992;4985:12;5034:469;5236:2;5218:21;;;5275:2;5255:18;;;5248:30;5314:34;5309:2;5294:18;;5287:62;5385:34;5380:2;5365:18;;5358:62;-1:-1:-1;;;5451:3:128;5436:19;;5429:32;5493:3;5478:19;;5034:469::o;5508:266::-;5596:6;5591:3;5584:19;5648:6;5641:5;5634:4;5629:3;5625:14;5612:43;-1:-1:-1;5700:1:128;5675:16;;;5693:4;5671:27;;;5664:38;;;;5756:2;5735:15;;;-1:-1:-1;;5731:29:128;5722:39;;;5718:50;;5508:266::o;5779:427::-;5992:6;5981:9;5974:25;6035:2;6030;6019:9;6015:18;6008:30;5955:4;6055:61;6112:2;6101:9;6097:18;6089:6;6081;6055:61;:::i;:::-;6047:69;;-1:-1:-1;;;;;6156:6:128;6152:47;6147:2;6136:9;6132:18;6125:75;5779:427;;;;;;;:::o;6564:398::-;6766:2;6748:21;;;6805:2;6785:18;;;6778:30;6844:34;6839:2;6824:18;;6817:62;-1:-1:-1;;;6910:2:128;6895:18;;6888:32;6952:3;6937:19;;6564:398::o;7190:247::-;7249:6;7302:2;7290:9;7281:7;7277:23;7273:32;7270:52;;;7318:1;7315;7308:12;7270:52;7357:9;7344:23;7376:31;7401:5;7376:31;:::i;7800:573::-;7921:4;7927:6;7987:11;7974:25;8081:2;8077:7;8066:8;8050:14;8046:29;8042:43;8022:18;8018:68;8008:96;;8100:1;8097;8090:12;8008:96;8127:33;;8179:20;;;-1:-1:-1;;;;;;8211:30:128;;8208:50;;;8254:1;8251;8244:12;8208:50;8287:4;8275:17;;-1:-1:-1;8338:1:128;8334:14;;;8318;8314:35;8304:46;;8301:66;;;8363:1;8360;8353:12;8378:579;8502:4;8508:6;8568:11;8555:25;8662:2;8658:7;8647:8;8631:14;8627:29;8623:43;8603:18;8599:68;8589:96;;8681:1;8678;8671:12;8589:96;8708:33;;8760:20;;;-1:-1:-1;;;;;;8792:30:128;;8789:50;;;8835:1;8832;8825:12;8789:50;8868:4;8856:17;;-1:-1:-1;8927:4:128;8915:17;;8899:14;8895:38;8885:49;;8882:69;;;8947:1;8944;8937:12;9445:232;9484:3;9505:17;;;9502:140;;9564:10;9559:3;9555:20;9552:1;9545:31;9599:4;9596:1;9589:15;9627:4;9624:1;9617:15;9502:140;-1:-1:-1;9669:1:128;9658:13;;9445:232::o;10335:184::-;10405:6;10458:2;10446:9;10437:7;10433:23;10429:32;10426:52;;;10474:1;10471;10464:12;10426:52;-1:-1:-1;10497:16:128;;10335:184;-1:-1:-1;10335:184:128:o;10524:251::-;10594:6;10647:2;10635:9;10626:7;10622:23;10618:32;10615:52;;;10663:1;10660;10653:12;10615:52;10695:9;10689:16;10714:31;10739:5;10714:31;:::i;10780:127::-;10841:10;10836:3;10832:20;10829:1;10822:31;10872:4;10869:1;10862:15;10896:4;10893:1;10886:15;10912:326;11006:4;11064:11;11051:25;11158:3;11154:8;11143;11127:14;11123:29;11119:44;11099:18;11095:69;11085:97;;11178:1;11175;11168:12;11085:97;11199:33;;;;;10912:326;-1:-1:-1;;10912:326:128:o;11243:127::-;11304:10;11299:3;11295:20;11292:1;11285:31;11335:4;11332:1;11325:15;11359:4;11356:1;11349:15;11375:253;11447:2;11441:9;11489:4;11477:17;;-1:-1:-1;;;;;11509:34:128;;11545:22;;;11506:62;11503:88;;;11571:18;;:::i;:::-;11607:2;11600:22;11375:253;:::o;11633:275::-;11704:2;11698:9;11769:2;11750:13;;-1:-1:-1;;11746:27:128;11734:40;;-1:-1:-1;;;;;11789:34:128;;11825:22;;;11786:62;11783:88;;;11851:18;;:::i;:::-;11887:2;11880:22;11633:275;;-1:-1:-1;11633:275:128:o;11913:173::-;11980:20;;-1:-1:-1;;;;;;12029:32:128;;12019:43;;12009:71;;12076:1;12073;12066:12;12091:558;12150:5;12198:4;12186:9;12181:3;12177:19;12173:30;12170:50;;;12216:1;12213;12206:12;12170:50;12269:4;12263:11;;;12301:17;;-1:-1:-1;;;;;12333:34:128;;12369:22;;;12330:62;12327:88;;;12395:18;;:::i;:::-;12431:4;12424:24;12517:23;;12549;;12466:6;-1:-1:-1;12466:6:128;12605:37;12638:2;12623:18;;12605:37;:::i;:::-;12600:2;12592:6;12588:15;12581:62;;12091:558;;;;:::o;12654:1316::-;12758:9;12817:4;12809:5;12793:14;12789:26;12785:37;12782:57;;;12835:1;12832;12825:12;12782:57;12863:22;;:::i;:::-;12930:19;;12958:24;;13030:2;13019:14;;13006:28;13043:33;13006:28;13043:33;:::i;:::-;13105:2;13092:16;;13085:33;13165:2;13154:14;;13141:28;-1:-1:-1;;;;;13181:30:128;;13178:50;;;13224:1;13221;13214:12;13178:50;13247:18;;13303:14;13296:4;13288:13;;13284:34;13274:62;;13332:1;13329;13322:12;13274:62;13372:2;13359:16;-1:-1:-1;;;;;13390:6:128;13387:30;13384:56;;;13420:18;;:::i;:::-;13462:57;13509:2;13486:17;;-1:-1:-1;;13482:31:128;13515:2;13478:40;13462:57;:::i;:::-;13542:6;13535:5;13528:21;13590:14;13585:2;13576:6;13572:2;13568:15;13564:24;13561:44;13558:64;;;13618:1;13615;13608:12;13558:64;13673:6;13668:2;13664;13660:11;13655:2;13648:5;13644:14;13631:49;13725:1;13720:2;13711:6;13704:5;13700:18;13696:27;13689:38;13761:5;13756:2;13747:7;13743:16;13736:31;;;;13801:34;13831:2;13824:5;13820:14;13801:34;:::i;:::-;13796:2;13787:7;13783:16;13776:60;13871:63;13919:14;13913:3;13906:5;13902:15;13871:63;:::i;:::-;13865:3;13852:17;;13845:90;13856:7;12654:1316;-1:-1:-1;;12654:1316:128:o;13975:211::-;14016:3;14054:5;14048:12;14098:6;14091:4;14084:5;14080:16;14075:3;14069:36;14160:1;14124:16;;14149:13;;;-1:-1:-1;14124:16:128;;13975:211;-1:-1:-1;13975:211:128:o;14191:283::-;14348:3;14379:29;14404:3;14396:6;14379:29;:::i;:::-;14417:21;;;-1:-1:-1;;14465:2:128;14454:14;;14191:283;-1:-1:-1;14191:283:128:o;14479:756::-;14567:6;14627:2;14615:9;14606:7;14602:23;14598:32;14642:2;14639:22;;;14657:1;14654;14647:12;14639:22;-1:-1:-1;14726:2:128;14720:9;14768:2;14756:15;;-1:-1:-1;;;;;14786:34:128;;14822:22;;;14783:62;14780:88;;;14848:18;;:::i;:::-;14884:2;14877:22;14940:23;;14972:21;;15045:2;15030:18;;15017:32;15058:33;15017:32;15058:33;:::i;:::-;15119:2;15107:15;;15100:32;15165:38;15199:2;15184:18;;15165:38;:::i;:::-;15160:2;15148:15;;15141:63;15152:6;14479:756;-1:-1:-1;;;14479:756:128:o;15240:261::-;15415:3;15440:55;15465:29;15490:3;15482:6;15465:29;:::i;:::-;15457:6;15440:55;:::i;:::-;15433:62;15240:261;-1:-1:-1;;;;15240:261:128:o;17137:675::-;17434:6;17429:3;17422:19;17496:26;17492:31;17483:6;17479:2;17475:15;17471:53;17466:2;17461:3;17457:12;17450:75;17404:3;17547:38;17581:2;17576:3;17572:12;17564:6;17547:38;:::i;:::-;17616:3;17612:16;;;;-1:-1:-1;;;;;;17608:62:128;17594:77;;-1:-1:-1;;17698:2:128;17687:14;;17680:30;;;;-1:-1:-1;;;;;;17742:33:128;17737:2;17726:14;;17719:57;17803:2;17792:14;;17137:675;-1:-1:-1;;;17137:675:128:o;17817:521::-;17894:4;17900:6;17960:11;17947:25;18054:2;18050:7;18039:8;18023:14;18019:29;18015:43;17995:18;17991:68;17981:96;;18073:1;18070;18063:12;17981:96;18100:33;;18152:20;;;-1:-1:-1;;;;;;18184:30:128;;18181:50;;;18227:1;18224;18217:12;18181:50;18260:4;18248:17;;-1:-1:-1;18291:14:128;18287:27;;;18277:38;;18274:58;;;18328:1;18325;18318:12;18343:526;18566:25;;;-1:-1:-1;;;;;18627:32:128;;18622:2;18607:18;;18600:60;18696:3;18691:2;18676:18;;18669:31;;;-1:-1:-1;;18717:62:128;;18759:19;;18751:6;18743;18717:62;:::i;:::-;18709:70;;-1:-1:-1;;;;;18819:6:128;18815:47;18810:2;18799:9;18795:18;18788:75;18343:526;;;;;;;;:::o;18874:189::-;19003:3;19028:29;19053:3;19045:6;19028:29;:::i;19068:184::-;19126:6;19179:2;19167:9;19158:7;19154:23;19150:32;19147:52;;;19195:1;19192;19185:12;19147:52;19218:28;19236:9;19218:28;:::i;19257:623::-;-1:-1:-1;;;;;19524:32:128;;19506:51;;19544:3;19588:2;19573:18;;19566:31;;;-1:-1:-1;;19614:62:128;;19656:19;;19648:6;19640;19614:62;:::i;:::-;-1:-1:-1;;;;;19712:47:128;;;;19707:2;19692:18;;19685:75;-1:-1:-1;19791:2:128;19776:18;;19769:34;;;;-1:-1:-1;;;;;;19840:33:128;19834:3;19819:19;;;19812:62;19606:70;19257:623;-1:-1:-1;;;19257:623:128:o;19885:427::-;20098:2;20087:9;20080:21;20061:4;20118:61;20175:2;20164:9;20160:18;20152:6;20144;20118:61;:::i;:::-;-1:-1:-1;;;;;20215:47:128;;;;20210:2;20195:18;;20188:75;-1:-1:-1;20294:2:128;20279:18;20272:34;20110:69;19885:427;-1:-1:-1;;19885:427:128: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/\"]},\"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\":\"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2\",\"dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr\"]}},\"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":{}},"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":"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840","urls":["bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2","dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":67048,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67050,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67053,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67055,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67057,"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":67775,"exportedSymbols":{"Clones":[42512],"Gear":[70341],"IMirror":[65179],"IMirrorDecoder":[65216],"IMirrorProxy":[65224],"IRouter":[65487],"IWrappedVara":[65498],"Mirror":[67774]},"nodeType":"SourceUnit","src":"39:9631:118","nodes":[{"id":67030,"nodeType":"PragmaDirective","src":"39:24:118","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67032,"nodeType":"ImportDirective","src":"65:48:118","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":65225,"symbolAliases":[{"foreign":{"id":67031,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65224,"src":"73:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67034,"nodeType":"ImportDirective","src":"114:38:118","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":65180,"symbolAliases":[{"foreign":{"id":67033,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65179,"src":"122:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67036,"nodeType":"ImportDirective","src":"153:38:118","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":65488,"symbolAliases":[{"foreign":{"id":67035,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65487,"src":"161:7:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67038,"nodeType":"ImportDirective","src":"192:48:118","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":65499,"symbolAliases":[{"foreign":{"id":67037,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65498,"src":"200:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67040,"nodeType":"ImportDirective","src":"241:52:118","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":65217,"symbolAliases":[{"foreign":{"id":67039,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65216,"src":"249:14:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67042,"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":67775,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67041,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"302:6:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67044,"nodeType":"ImportDirective","src":"359:42:118","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":67775,"sourceUnit":70342,"symbolAliases":[{"foreign":{"id":67043,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"367:4:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67774,"nodeType":"ContractDefinition","src":"403:9266:118","nodes":[{"id":67048,"nodeType":"VariableDeclaration","src":"436:22:118","nodes":[],"baseFunctions":[65132],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:118","scope":67774,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67047,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67050,"nodeType":"VariableDeclaration","src":"464:24:118","nodes":[],"baseFunctions":[65117],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:118","scope":67774,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67049,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67053,"nodeType":"VariableDeclaration","src":"664:26:118","nodes":[],"constant":false,"documentation":{"id":67051,"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":67774,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67052,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67055,"nodeType":"VariableDeclaration","src":"696:24:118","nodes":[],"baseFunctions":[65112],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:118","scope":67774,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67057,"nodeType":"VariableDeclaration","src":"726:20:118","nodes":[],"baseFunctions":[65122],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:118","scope":67774,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67056,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67071,"nodeType":"ModifierDefinition","src":"828:109:118","nodes":[],"body":{"id":67070,"nodeType":"Block","src":"850:87:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67061,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67062,"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":67063,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67179,"src":"882:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67064,"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":67066,"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":67060,"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":67067,"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":67068,"nodeType":"ExpressionStatement","src":"860:59:118"},{"id":67069,"nodeType":"PlaceholderStatement","src":"929:1:118"}]},"documentation":{"id":67058,"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":67059,"nodeType":"ParameterList","parameters":[],"src":"847:2:118"},"virtual":false,"visibility":"internal"},{"id":67105,"nodeType":"ModifierDefinition","src":"1053:326:118","nodes":[],"body":{"id":67104,"nodeType":"Block","src":"1093:286:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67076,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67074,"src":"1107:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67077,"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":67102,"nodeType":"IfStatement","src":"1103:259:118","trueBody":{"id":67101,"nodeType":"Block","src":"1119:243:118","statements":[{"assignments":[67080],"declarations":[{"constant":false,"id":67080,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:118","nodeType":"VariableDeclaration","scope":67101,"src":"1133:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67079,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67083,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67081,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67179,"src":"1154:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67082,"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":[67085],"declarations":[{"constant":false,"id":67085,"mutability":"mutable","name":"success","nameLocation":"1181:7:118","nodeType":"VariableDeclaration","scope":67101,"src":"1176:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67084,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67095,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67090,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67744,"src":"1223:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67091,"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":67092,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67080,"src":"1234:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67093,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67074,"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":67087,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67080,"src":"1198:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67086,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67725,"src":"1191:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65498_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67088,"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_$65498","typeString":"contract IWrappedVara"}},"id":67089,"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":67094,"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":67097,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67085,"src":"1274:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":67098,"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":67096,"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":67099,"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":67100,"nodeType":"ExpressionStatement","src":"1266:85:118"}]}},{"id":67103,"nodeType":"PlaceholderStatement","src":"1371:1:118"}]},"documentation":{"id":67072,"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":67075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67074,"mutability":"mutable","name":"value","nameLocation":"1086:5:118","nodeType":"VariableDeclaration","scope":67105,"src":"1078:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67073,"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":67120,"nodeType":"ModifierDefinition","src":"1589:115:118","nodes":[],"body":{"id":67119,"nodeType":"Block","src":"1615:89:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67109,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67050,"src":"1633:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67112,"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":67111,"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":67110,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:118","typeDescriptions":{}}},"id":67113,"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":67115,"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":67108,"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":67116,"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":67117,"nodeType":"ExpressionStatement","src":"1625:61:118"},{"id":67118,"nodeType":"PlaceholderStatement","src":"1696:1:118"}]},"documentation":{"id":67106,"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":67107,"nodeType":"ParameterList","parameters":[],"src":"1612:2:118"},"virtual":false,"visibility":"internal"},{"id":67132,"nodeType":"ModifierDefinition","src":"1830:127:118","nodes":[],"body":{"id":67131,"nodeType":"Block","src":"1864:93:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67124,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67057,"src":"1882:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67125,"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":67127,"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":67123,"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":67128,"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":67129,"nodeType":"ExpressionStatement","src":"1874:65:118"},{"id":67130,"nodeType":"PlaceholderStatement","src":"1949:1:118"}]},"documentation":{"id":67121,"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":67122,"nodeType":"ParameterList","parameters":[],"src":"1861:2:118"},"virtual":false,"visibility":"internal"},{"id":67149,"nodeType":"ModifierDefinition","src":"2122:237:118","nodes":[],"body":{"id":67148,"nodeType":"Block","src":"2173:186:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":67143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67136,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67057,"src":"2204:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67137,"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":67142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":67139,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67744,"src":"2217:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67140,"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":67141,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67053,"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":67144,"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":67135,"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":67145,"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":67146,"nodeType":"ExpressionStatement","src":"2183:158:118"},{"id":67147,"nodeType":"PlaceholderStatement","src":"2351:1:118"}]},"documentation":{"id":67133,"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":67134,"nodeType":"ParameterList","parameters":[],"src":"2170:2:118"},"virtual":false,"visibility":"internal"},{"id":67164,"nodeType":"ModifierDefinition","src":"2459:108:118","nodes":[],"body":{"id":67163,"nodeType":"Block","src":"2482:85:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67153,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67050,"src":"2500:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67156,"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":67155,"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":67154,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:118","typeDescriptions":{}}},"id":67157,"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":67159,"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":67152,"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":67160,"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":67161,"nodeType":"ExpressionStatement","src":"2492:57:118"},{"id":67162,"nodeType":"PlaceholderStatement","src":"2559:1:118"}]},"documentation":{"id":67150,"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":67151,"nodeType":"ParameterList","parameters":[],"src":"2479:2:118"},"virtual":false,"visibility":"internal"},{"id":67179,"nodeType":"FunctionDefinition","src":"2606:108:118","nodes":[],"body":{"id":67178,"nodeType":"Block","src":"2654:60:118","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":67172,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}],"id":67171,"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":67170,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:118","typeDescriptions":{}}},"id":67173,"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":67169,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65224,"src":"2671:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$65224_$","typeString":"type(contract IMirrorProxy)"}},"id":67174,"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_$65224","typeString":"contract IMirrorProxy"}},"id":67175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:118","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":65223,"src":"2671:34:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67176,"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":67168,"id":67177,"nodeType":"Return","src":"2664:43:118"}]},"baseFunctions":[65127],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:118","parameters":{"id":67165,"nodeType":"ParameterList","parameters":[],"src":"2621:2:118"},"returnParameters":{"id":67168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67179,"src":"2645:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67166,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:118"},"scope":67774,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":67220,"nodeType":"FunctionDefinition","src":"2750:383:118","nodes":[],"body":{"id":67219,"nodeType":"Block","src":"2959:174:118","nodes":[],"statements":[{"assignments":[67196],"declarations":[{"constant":false,"id":67196,"mutability":"mutable","name":"id","nameLocation":"2977:2:118","nodeType":"VariableDeclaration","scope":67219,"src":"2969:10:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":67208,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":67202,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}],"id":67201,"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":67200,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:118","typeDescriptions":{}}},"id":67203,"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":67205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:118","subExpression":{"id":67204,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67057,"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":67198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67199,"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":67206,"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":67197,"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":67207,"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":67210,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67196,"src":"3074:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67211,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67744,"src":"3078:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67212,"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":67213,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67181,"src":"3089:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67214,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67183,"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":67209,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65055,"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":67215,"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":67216,"nodeType":"EmitStatement","src":"3044:62:118"},{"expression":{"id":67217,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67196,"src":"3124:2:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":67194,"id":67218,"nodeType":"Return","src":"3117:9:118"}]},"baseFunctions":[65141],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":67186,"kind":"modifierInvocation","modifierName":{"id":67185,"name":"whileActive","nameLocations":["2837:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67164,"src":"2837:11:118"},"nodeType":"ModifierInvocation","src":"2837:11:118"},{"id":67188,"kind":"modifierInvocation","modifierName":{"id":67187,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:118"],"nodeType":"IdentifierPath","referencedDeclaration":67149,"src":"2857:39:118"},"nodeType":"ModifierInvocation","src":"2857:39:118"},{"arguments":[{"id":67190,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67183,"src":"2921:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67191,"kind":"modifierInvocation","modifierName":{"id":67189,"name":"retrievingValue","nameLocations":["2905:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67105,"src":"2905:15:118"},"nodeType":"ModifierInvocation","src":"2905:23:118"}],"name":"sendMessage","nameLocation":"2759:11:118","parameters":{"id":67184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67181,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:118","nodeType":"VariableDeclaration","scope":67220,"src":"2771:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67180,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67183,"mutability":"mutable","name":"_value","nameLocation":"2804:6:118","nodeType":"VariableDeclaration","scope":67220,"src":"2796:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67182,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:118"},"returnParameters":{"id":67194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67220,"src":"2946:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67245,"nodeType":"FunctionDefinition","src":"3139:269:118","nodes":[],"body":{"id":67244,"nodeType":"Block","src":"3323:85:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67237,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67222,"src":"3361:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67238,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67744,"src":"3373:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67239,"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":67240,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67224,"src":"3384:8:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":67241,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67226,"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":67236,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65066,"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":67242,"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":67243,"nodeType":"EmitStatement","src":"3333:68:118"}]},"baseFunctions":[65150],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":67229,"kind":"modifierInvocation","modifierName":{"id":67228,"name":"whileActive","nameLocations":["3244:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67164,"src":"3244:11:118"},"nodeType":"ModifierInvocation","src":"3244:11:118"},{"id":67231,"kind":"modifierInvocation","modifierName":{"id":67230,"name":"whenInitMessageCreated","nameLocations":["3264:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67132,"src":"3264:22:118"},"nodeType":"ModifierInvocation","src":"3264:22:118"},{"arguments":[{"id":67233,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67226,"src":"3311:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67234,"kind":"modifierInvocation","modifierName":{"id":67232,"name":"retrievingValue","nameLocations":["3295:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67105,"src":"3295:15:118"},"nodeType":"ModifierInvocation","src":"3295:23:118"}],"name":"sendReply","nameLocation":"3148:9:118","parameters":{"id":67227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67222,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:118","nodeType":"VariableDeclaration","scope":67245,"src":"3158:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67221,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67224,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:118","nodeType":"VariableDeclaration","scope":67245,"src":"3178:23:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67223,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67226,"mutability":"mutable","name":"_value","nameLocation":"3211:6:118","nodeType":"VariableDeclaration","scope":67245,"src":"3203:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67225,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:118"},"returnParameters":{"id":67235,"nodeType":"ParameterList","parameters":[],"src":"3323:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67259,"nodeType":"FunctionDefinition","src":"3414:139:118","nodes":[],"body":{"id":67258,"nodeType":"Block","src":"3486:67:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67253,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67247,"src":"3524:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":67254,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67744,"src":"3536:7:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67255,"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":67252,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65073,"src":"3501:22:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":67256,"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":67257,"nodeType":"EmitStatement","src":"3496:50:118"}]},"baseFunctions":[65155],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":67250,"kind":"modifierInvocation","modifierName":{"id":67249,"name":"whenInitMessageCreated","nameLocations":["3463:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":67132,"src":"3463:22:118"},"nodeType":"ModifierInvocation","src":"3463:22:118"}],"name":"claimValue","nameLocation":"3423:10:118","parameters":{"id":67248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67247,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:118","nodeType":"VariableDeclaration","scope":67259,"src":"3434:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:118"},"returnParameters":{"id":67251,"nodeType":"ParameterList","parameters":[],"src":"3486:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67274,"nodeType":"FunctionDefinition","src":"3559:154:118","nodes":[],"body":{"id":67273,"nodeType":"Block","src":"3652:61:118","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":67270,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67261,"src":"3699:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67269,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65078,"src":"3667:31:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":67271,"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":67272,"nodeType":"EmitStatement","src":"3662:44:118"}]},"baseFunctions":[65160],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":67264,"kind":"modifierInvocation","modifierName":{"id":67263,"name":"whileActive","nameLocations":["3616:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67164,"src":"3616:11:118"},"nodeType":"ModifierInvocation","src":"3616:11:118"},{"arguments":[{"id":67266,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67261,"src":"3644:6:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":67267,"kind":"modifierInvocation","modifierName":{"id":67265,"name":"retrievingValue","nameLocations":["3628:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":67105,"src":"3628:15:118"},"nodeType":"ModifierInvocation","src":"3628:23:118"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:118","parameters":{"id":67262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67261,"mutability":"mutable","name":"_value","nameLocation":"3599:6:118","nodeType":"VariableDeclaration","scope":67274,"src":"3591:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67260,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:118"},"returnParameters":{"id":67268,"nodeType":"ParameterList","parameters":[],"src":"3652:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67301,"nodeType":"FunctionDefinition","src":"3719:193:118","nodes":[],"body":{"id":67300,"nodeType":"Block","src":"3783:129:118","nodes":[],"statements":[{"assignments":[67280],"declarations":[{"constant":false,"id":67280,"mutability":"mutable","name":"balance","nameLocation":"3801:7:118","nodeType":"VariableDeclaration","scope":67300,"src":"3793:15:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67279,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67291,"initialValue":{"arguments":[{"arguments":[{"id":67288,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}],"id":67287,"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":67286,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:118","typeDescriptions":{}}},"id":67289,"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":67282,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67179,"src":"3818:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67283,"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":67281,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67725,"src":"3811:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65498_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67284,"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_$65498","typeString":"contract IWrappedVara"}},"id":67285,"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":67290,"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":67293,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67050,"src":"3877:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":67296,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67280,"src":"3896:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":67295,"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":67294,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:118","typeDescriptions":{}}},"id":67297,"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":67292,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67773,"src":"3862:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67298,"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":67299,"nodeType":"ExpressionStatement","src":"3862:43:118"}]},"baseFunctions":[65163],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":67277,"kind":"modifierInvocation","modifierName":{"id":67276,"name":"whenTerminated","nameLocations":["3768:14:118"],"nodeType":"IdentifierPath","referencedDeclaration":67120,"src":"3768:14:118"},"nodeType":"ModifierInvocation","src":"3768:14:118"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:118","parameters":{"id":67275,"nodeType":"ParameterList","parameters":[],"src":"3758:2:118"},"returnParameters":{"id":67278,"nodeType":"ParameterList","parameters":[],"src":"3783:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67339,"nodeType":"FunctionDefinition","src":"3970:310:118","nodes":[],"body":{"id":67338,"nodeType":"Block","src":"4048:232:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67311,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67053,"src":"4066:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67314,"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":67313,"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":67312,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:118","typeDescriptions":{}}},"id":67315,"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":67317,"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":67310,"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":67318,"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":67319,"nodeType":"ExpressionStatement","src":"4058:72:118"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67321,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"4148:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":67324,"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":67323,"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":67322,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:118","typeDescriptions":{}}},"id":67325,"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":67327,"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":67320,"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":67328,"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":67329,"nodeType":"ExpressionStatement","src":"4140:68:118"},{"expression":{"id":67332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67330,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67053,"src":"4219:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67331,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67303,"src":"4233:12:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67333,"nodeType":"ExpressionStatement","src":"4219:26:118"},{"expression":{"id":67336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67334,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"4255:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67335,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67305,"src":"4265:8:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67337,"nodeType":"ExpressionStatement","src":"4255:18:118"}]},"baseFunctions":[65170],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":67308,"kind":"modifierInvocation","modifierName":{"id":67307,"name":"onlyRouter","nameLocations":["4037:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67071,"src":"4037:10:118"},"nodeType":"ModifierInvocation","src":"4037:10:118"}],"name":"initialize","nameLocation":"3979:10:118","parameters":{"id":67306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67303,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:118","nodeType":"VariableDeclaration","scope":67339,"src":"3990:20:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67302,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67305,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:118","nodeType":"VariableDeclaration","scope":67339,"src":"4012:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67304,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:118"},"returnParameters":{"id":67309,"nodeType":"ParameterList","parameters":[],"src":"4048:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67416,"nodeType":"FunctionDefinition","src":"4363:1163:118","nodes":[],"body":{"id":67415,"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":67356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67350,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"4564:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69698,"src":"4564:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":67354,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$67774","typeString":"contract Mirror"}],"id":67353,"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":67352,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:118","typeDescriptions":{}}},"id":67355,"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":67357,"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":67349,"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":67358,"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":67359,"nodeType":"ExpressionStatement","src":"4556:78:118"},{"assignments":[67362],"declarations":[{"constant":false,"id":67362,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:118","nodeType":"VariableDeclaration","scope":67415,"src":"4690:26:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67361,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":67367,"initialValue":{"arguments":[{"expression":{"id":67364,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"4733:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:118","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":69712,"src":"4733:20:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":67363,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67483,"src":"4719:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":67366,"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":[67370],"declarations":[{"constant":false,"id":67370,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:118","nodeType":"VariableDeclaration","scope":67415,"src":"4809:23:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67369,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":67375,"initialValue":{"arguments":[{"expression":{"id":67372,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"4848:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:118","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":69708,"src":"4848:23:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":67371,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67675,"src":"4835:12:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":67374,"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":67382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67376,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"4932:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69702,"src":"4932:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67380,"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":67379,"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":67378,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:118","typeDescriptions":{}}},"id":67381,"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":67389,"nodeType":"IfStatement","src":"4928:102:118","trueBody":{"id":67388,"nodeType":"Block","src":"4969:61:118","statements":[{"expression":{"arguments":[{"expression":{"id":67384,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"4997:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5009:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69702,"src":"4997:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67383,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67690,"src":"4983:13:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67386,"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":67387,"nodeType":"ExpressionStatement","src":"4983:36:118"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67390,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67055,"src":"5095:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":67391,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5108:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5120:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69700,"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":67400,"nodeType":"IfStatement","src":"5091:110:118","trueBody":{"id":67399,"nodeType":"Block","src":"5134:67:118","statements":[{"expression":{"arguments":[{"expression":{"id":67395,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5165:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69700,"src":"5165:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67394,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67704,"src":"5148:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67397,"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":67398,"nodeType":"ExpressionStatement","src":"5148:42:118"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":67403,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5316:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:7:118","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69698,"src":"5316:19:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67405,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5349:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5361:12:118","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":69700,"src":"5349:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67407,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5387:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:9:118","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":69702,"src":"5387:21:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67409,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67342,"src":"5422:11:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":67410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:14:118","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69704,"src":"5422:26:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":67411,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67370,"src":"5462:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":67412,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67362,"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":67401,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5278:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":67402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:118","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":69940,"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":67413,"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":67348,"id":67414,"nodeType":"Return","src":"5271:248:118"}]},"baseFunctions":[65178],"functionSelector":"9ed32350","implemented":true,"kind":"function","modifiers":[{"id":67345,"kind":"modifierInvocation","modifierName":{"id":67344,"name":"onlyRouter","nameLocations":["4447:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":67071,"src":"4447:10:118"},"nodeType":"ModifierInvocation","src":"4447:10:118"}],"name":"performStateTransition","nameLocation":"4372:22:118","parameters":{"id":67343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67342,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:118","nodeType":"VariableDeclaration","scope":67416,"src":"4395:41:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":67341,"nodeType":"UserDefinedTypeName","pathNode":{"id":67340,"name":"Gear.StateTransition","nameLocations":["4395:4:118","4400:15:118"],"nodeType":"IdentifierPath","referencedDeclaration":69713,"src":"4395:20:118"},"referencedDeclaration":69713,"src":"4395:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:118"},"returnParameters":{"id":67348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67416,"src":"4467:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67483,"nodeType":"FunctionDefinition","src":"5734:627:118","nodes":[],"body":{"id":67482,"nodeType":"Block","src":"5818:543:118","nodes":[],"statements":[{"assignments":[67426],"declarations":[{"constant":false,"id":67426,"mutability":"mutable","name":"messagesHashes","nameLocation":"5841:14:118","nodeType":"VariableDeclaration","scope":67482,"src":"5828:27:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67425,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67427,"nodeType":"VariableDeclarationStatement","src":"5828:27:118"},{"body":{"id":67476,"nodeType":"Block","src":"5913:399:118","statements":[{"assignments":[67443],"declarations":[{"constant":false,"id":67443,"mutability":"mutable","name":"message","nameLocation":"5949:7:118","nodeType":"VariableDeclaration","scope":67476,"src":"5927:29:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67442,"nodeType":"UserDefinedTypeName","pathNode":{"id":67441,"name":"Gear.Message","nameLocations":["5927:4:118","5932:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69677,"src":"5927:12:118"},"referencedDeclaration":69677,"src":"5927:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":67447,"initialValue":{"baseExpression":{"id":67444,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67420,"src":"5959:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67446,"indexExpression":{"id":67445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67429,"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_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5927:44:118"},{"expression":{"id":67458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67448,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67426,"src":"5986:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67452,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67426,"src":"6016:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67455,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67443,"src":"6049:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":67453,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"6032:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":67454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:118","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":69886,"src":"6032:16:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$69677_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":67456,"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":67450,"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":67449,"name":"bytes","nodeType":"ElementaryTypeName","src":"6003:5:118","typeDescriptions":{}}},"id":67451,"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":67457,"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":67459,"nodeType":"ExpressionStatement","src":"5986:72:118"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":67464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":67460,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67443,"src":"6144:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69676,"src":"6144:20:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69696_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6165:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69693,"src":"6144:23:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":67463,"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":67474,"nodeType":"Block","src":"6243:59:118","statements":[{"expression":{"arguments":[{"id":67471,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67443,"src":"6279:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67470,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67610,"src":"6261:17:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69677_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67472,"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":67473,"nodeType":"ExpressionStatement","src":"6261:26:118"}]},"id":67475,"nodeType":"IfStatement","src":"6140:162:118","trueBody":{"id":67469,"nodeType":"Block","src":"6174:63:118","statements":[{"expression":{"arguments":[{"id":67466,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67443,"src":"6214:7:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":67465,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67540,"src":"6192:21:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$69677_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":67467,"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":67468,"nodeType":"ExpressionStatement","src":"6192:30:118"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67432,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67429,"src":"5886:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67433,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67420,"src":"5890:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":67434,"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":67477,"initializationExpression":{"assignments":[67429],"declarations":[{"constant":false,"id":67429,"mutability":"mutable","name":"i","nameLocation":"5879:1:118","nodeType":"VariableDeclaration","scope":67477,"src":"5871:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67428,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67431,"initialValue":{"hexValue":"30","id":67430,"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":67437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5908:3:118","subExpression":{"id":67436,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67429,"src":"5908:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67438,"nodeType":"ExpressionStatement","src":"5908:3:118"},"nodeType":"ForStatement","src":"5866:446:118"},{"expression":{"arguments":[{"id":67479,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67426,"src":"6339:14:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67478,"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":67480,"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":67424,"id":67481,"nodeType":"Return","src":"6322:32:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5743:13:118","parameters":{"id":67421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67420,"mutability":"mutable","name":"_messages","nameLocation":"5781:9:118","nodeType":"VariableDeclaration","scope":67483,"src":"5757:33:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69677_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":67418,"nodeType":"UserDefinedTypeName","pathNode":{"id":67417,"name":"Gear.Message","nameLocations":["5757:4:118","5762:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69677,"src":"5757:12:118"},"referencedDeclaration":69677,"src":"5757:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_storage_ptr","typeString":"struct Gear.Message"}},"id":67419,"nodeType":"ArrayTypeName","src":"5757:14:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$69677_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5756:35:118"},"returnParameters":{"id":67424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67483,"src":"5809:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67422,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5809:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5808:9:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67540,"nodeType":"FunctionDefinition","src":"6420:653:118","nodes":[],"body":{"id":67539,"nodeType":"Block","src":"6491:582:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67490,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"6505:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67493,"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":67492,"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":67491,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:118","typeDescriptions":{}}},"id":67494,"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":67527,"nodeType":"IfStatement","src":"6501:474:118","trueBody":{"id":67526,"nodeType":"Block","src":"6528:447:118","statements":[{"assignments":[67497],"declarations":[{"constant":false,"id":67497,"mutability":"mutable","name":"callData","nameLocation":"6555:8:118","nodeType":"VariableDeclaration","scope":67526,"src":"6542:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67496,"name":"bytes","nodeType":"ElementaryTypeName","src":"6542:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67512,"initialValue":{"arguments":[{"expression":{"expression":{"id":67500,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65216,"src":"6606:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65216_$","typeString":"type(contract IMirrorDecoder)"}},"id":67501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6621:13:118","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":65202,"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":67502,"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":67503,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"6661:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69667,"src":"6661:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67505,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"6690:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69669,"src":"6690:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67507,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"6728:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69671,"src":"6728:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67509,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"6762:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69673,"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":67498,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6566:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67499,"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":67511,"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":[67514,null],"declarations":[{"constant":false,"id":67514,"mutability":"mutable","name":"success","nameLocation":"6850:7:118","nodeType":"VariableDeclaration","scope":67526,"src":"6845:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67513,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67521,"initialValue":{"arguments":[{"id":67519,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67497,"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":67515,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"6862:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67516,"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":67518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67517,"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":67520,"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":67522,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67514,"src":"6917:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67525,"nodeType":"IfStatement","src":"6913:52:118","trueBody":{"id":67524,"nodeType":"Block","src":"6926:39:118","statements":[{"functionReturnParameters":67489,"id":67523,"nodeType":"Return","src":"6944:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67529,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"6998:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7007:2:118","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69667,"src":"6998:11:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67531,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"7011:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7020:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69669,"src":"7011:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67533,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"7033:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7042:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69671,"src":"7033:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67535,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67487,"src":"7051:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7060:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69673,"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":67528,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65089,"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":67537,"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":67538,"nodeType":"EmitStatement","src":"6985:81:118"}]},"documentation":{"id":67484,"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":67488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67487,"mutability":"mutable","name":"_message","nameLocation":"6473:8:118","nodeType":"VariableDeclaration","scope":67540,"src":"6451:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67486,"nodeType":"UserDefinedTypeName","pathNode":{"id":67485,"name":"Gear.Message","nameLocations":["6451:4:118","6456:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69677,"src":"6451:12:118"},"referencedDeclaration":69677,"src":"6451:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6450:32:118"},"returnParameters":{"id":67489,"nodeType":"ParameterList","parameters":[],"src":"6491:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67610,"nodeType":"FunctionDefinition","src":"7148:784:118","nodes":[],"body":{"id":67609,"nodeType":"Block","src":"7215:717:118","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":67548,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7240:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7249:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69669,"src":"7240:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67550,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7262:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7271:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69673,"src":"7262:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67547,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67773,"src":"7225:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67552,"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":67553,"nodeType":"ExpressionStatement","src":"7225:52:118"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67554,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"7292:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":67557,"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":67556,"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":67555,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:118","typeDescriptions":{}}},"id":67558,"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":67595,"nodeType":"IfStatement","src":"7288:529:118","trueBody":{"id":67594,"nodeType":"Block","src":"7315:502:118","statements":[{"assignments":[67561],"declarations":[{"constant":false,"id":67561,"mutability":"mutable","name":"callData","nameLocation":"7342:8:118","nodeType":"VariableDeclaration","scope":67594,"src":"7329:21:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67560,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67580,"initialValue":{"arguments":[{"expression":{"expression":{"id":67564,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65216,"src":"7393:14:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65216_$","typeString":"type(contract IMirrorDecoder)"}},"id":67565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7408:11:118","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":65215,"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":67566,"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":67567,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7446:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69669,"src":"7446:20:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67569,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7484:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7493:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69671,"src":"7484:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67571,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7518:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69673,"src":"7518:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67573,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7550:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7559:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69676,"src":"7550:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69696_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7572:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69693,"src":"7550:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67576,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7592:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7601:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69676,"src":"7592:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69696_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69695,"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":67562,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7353:3:118","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":67563,"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":67579,"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":[67582,null],"declarations":[{"constant":false,"id":67582,"mutability":"mutable","name":"success","nameLocation":"7692:7:118","nodeType":"VariableDeclaration","scope":67594,"src":"7687:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67581,"name":"bool","nodeType":"ElementaryTypeName","src":"7687:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":67589,"initialValue":{"arguments":[{"id":67587,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67561,"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":67583,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"7704:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67584,"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":67586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":67585,"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":67588,"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":67590,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67582,"src":"7759:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":67593,"nodeType":"IfStatement","src":"7755:52:118","trueBody":{"id":67592,"nodeType":"Block","src":"7768:39:118","statements":[{"functionReturnParameters":67546,"id":67591,"nodeType":"Return","src":"7786:7:118"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":67597,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7838:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7847:7:118","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":69671,"src":"7838:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":67599,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7856:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69673,"src":"7856:14:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":67601,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7872:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7881:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69676,"src":"7872:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69696_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:2:118","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":69693,"src":"7872:24:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":67604,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67544,"src":"7898:8:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":67605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:118","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":69676,"src":"7898:21:118","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$69696_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":67606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:4:118","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":69695,"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":67596,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65100,"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":67607,"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":67608,"nodeType":"EmitStatement","src":"7827:98:118"}]},"documentation":{"id":67541,"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":67545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67544,"mutability":"mutable","name":"_message","nameLocation":"7197:8:118","nodeType":"VariableDeclaration","scope":67610,"src":"7175:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":67543,"nodeType":"UserDefinedTypeName","pathNode":{"id":67542,"name":"Gear.Message","nameLocations":["7175:4:118","7180:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":69677,"src":"7175:12:118"},"referencedDeclaration":69677,"src":"7175:12:118","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$69677_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7174:32:118"},"returnParameters":{"id":67546,"nodeType":"ParameterList","parameters":[],"src":"7215:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67675,"nodeType":"FunctionDefinition","src":"7938:514:118","nodes":[],"body":{"id":67674,"nodeType":"Block","src":"8022:430:118","nodes":[],"statements":[{"assignments":[67620],"declarations":[{"constant":false,"id":67620,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8045:16:118","nodeType":"VariableDeclaration","scope":67674,"src":"8032:29:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":67619,"name":"bytes","nodeType":"ElementaryTypeName","src":"8032:5:118","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":67621,"nodeType":"VariableDeclarationStatement","src":"8032:29:118"},{"body":{"id":67668,"nodeType":"Block","src":"8117:284:118","statements":[{"assignments":[67637],"declarations":[{"constant":false,"id":67637,"mutability":"mutable","name":"claim","nameLocation":"8156:5:118","nodeType":"VariableDeclaration","scope":67668,"src":"8131:30:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":67636,"nodeType":"UserDefinedTypeName","pathNode":{"id":67635,"name":"Gear.ValueClaim","nameLocations":["8131:4:118","8136:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69736,"src":"8131:15:118"},"referencedDeclaration":69736,"src":"8131:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":67641,"initialValue":{"baseExpression":{"id":67638,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67614,"src":"8164:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67640,"indexExpression":{"id":67639,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67623,"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_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8131:43:118"},{"expression":{"id":67652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67642,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67620,"src":"8189:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67646,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67620,"src":"8221:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":67649,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67637,"src":"8260:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":67647,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"8239:4:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":67648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:118","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":70294,"src":"8239:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$69736_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":67650,"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":67644,"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":67643,"name":"bytes","nodeType":"ElementaryTypeName","src":"8208:5:118","typeDescriptions":{}}},"id":67645,"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":67651,"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":67653,"nodeType":"ExpressionStatement","src":"8189:78:118"},{"expression":{"arguments":[{"expression":{"id":67655,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67637,"src":"8297:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8303:11:118","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":69733,"src":"8297:17:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":67657,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67637,"src":"8316:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69735,"src":"8316:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67654,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67773,"src":"8282:14:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":67659,"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":67660,"nodeType":"ExpressionStatement","src":"8282:46:118"},{"eventCall":{"arguments":[{"expression":{"id":67662,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67637,"src":"8361:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8367:9:118","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":69731,"src":"8361:15:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":67664,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67637,"src":"8378:5:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":67665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:5:118","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":69735,"src":"8378:11:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":67661,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65107,"src":"8348:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":67666,"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":67667,"nodeType":"EmitStatement","src":"8343:47:118"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67623,"src":"8092:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":67627,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67614,"src":"8096:7:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":67628,"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":67669,"initializationExpression":{"assignments":[67623],"declarations":[{"constant":false,"id":67623,"mutability":"mutable","name":"i","nameLocation":"8085:1:118","nodeType":"VariableDeclaration","scope":67669,"src":"8077:9:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67622,"name":"uint256","nodeType":"ElementaryTypeName","src":"8077:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":67625,"initialValue":{"hexValue":"30","id":67624,"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":67631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8112:3:118","subExpression":{"id":67630,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67623,"src":"8112:1:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67632,"nodeType":"ExpressionStatement","src":"8112:3:118"},"nodeType":"ForStatement","src":"8072:329:118"},{"expression":{"arguments":[{"id":67671,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67620,"src":"8428:16:118","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":67670,"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":67672,"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":67618,"id":67673,"nodeType":"Return","src":"8411:34:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7947:12:118","parameters":{"id":67615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67614,"mutability":"mutable","name":"_claims","nameLocation":"7987:7:118","nodeType":"VariableDeclaration","scope":67675,"src":"7960:34:118","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":67612,"nodeType":"UserDefinedTypeName","pathNode":{"id":67611,"name":"Gear.ValueClaim","nameLocations":["7960:4:118","7965:10:118"],"nodeType":"IdentifierPath","referencedDeclaration":69736,"src":"7960:15:118"},"referencedDeclaration":69736,"src":"7960:15:118","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$69736_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":67613,"nodeType":"ArrayTypeName","src":"7960:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$69736_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7959:36:118"},"returnParameters":{"id":67618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67617,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67675,"src":"8013:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8012:9:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67690,"nodeType":"FunctionDefinition","src":"8524:243:118","nodes":[],"body":{"id":67689,"nodeType":"Block","src":"8587:180:118","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":67684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67682,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67050,"src":"8629:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67683,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67677,"src":"8641:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8629:22:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67685,"nodeType":"ExpressionStatement","src":"8629:22:118"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67686,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67301,"src":"8728:30:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67687,"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":67688,"nodeType":"ExpressionStatement","src":"8728:32:118"}]},"implemented":true,"kind":"function","modifiers":[{"id":67680,"kind":"modifierInvocation","modifierName":{"id":67679,"name":"whileActive","nameLocations":["8575:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":67164,"src":"8575:11:118"},"nodeType":"ModifierInvocation","src":"8575:11:118"}],"name":"_setInheritor","nameLocation":"8533:13:118","parameters":{"id":67678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67677,"mutability":"mutable","name":"_inheritor","nameLocation":"8555:10:118","nodeType":"VariableDeclaration","scope":67690,"src":"8547:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67676,"name":"address","nodeType":"ElementaryTypeName","src":"8547:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8546:20:118"},"returnParameters":{"id":67681,"nodeType":"ParameterList","parameters":[],"src":"8587:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67704,"nodeType":"FunctionDefinition","src":"8773:235:118","nodes":[],"body":{"id":67703,"nodeType":"Block","src":"8827:181:118","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":67697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67695,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67055,"src":"8870:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67696,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67692,"src":"8882:10:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8870:22:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":67698,"nodeType":"ExpressionStatement","src":"8870:22:118"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":67700,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67055,"src":"8991:9:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":67699,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65044,"src":"8978:12:118","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":67701,"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":67702,"nodeType":"EmitStatement","src":"8973:28:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8782:16:118","parameters":{"id":67693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67692,"mutability":"mutable","name":"_stateHash","nameLocation":"8807:10:118","nodeType":"VariableDeclaration","scope":67704,"src":"8799:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8799:7:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8798:20:118"},"returnParameters":{"id":67694,"nodeType":"ParameterList","parameters":[],"src":"8827:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":67725,"nodeType":"FunctionDefinition","src":"9048:182:118","nodes":[],"body":{"id":67724,"nodeType":"Block","src":"9120:110:118","nodes":[],"statements":[{"assignments":[67713],"declarations":[{"constant":false,"id":67713,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9138:9:118","nodeType":"VariableDeclaration","scope":67724,"src":"9130:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67712,"name":"address","nodeType":"ElementaryTypeName","src":"9130:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":67719,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67715,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67706,"src":"9158:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67714,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65487,"src":"9150:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65487_$","typeString":"type(contract IRouter)"}},"id":67716,"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_$65487","typeString":"contract IRouter"}},"id":67717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:11:118","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":65330,"src":"9150:31:118","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67718,"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":67721,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67713,"src":"9213:9:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67720,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65498,"src":"9200:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65498_$","typeString":"type(contract IWrappedVara)"}},"id":67722,"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_$65498","typeString":"contract IWrappedVara"}},"functionReturnParameters":67711,"id":67723,"nodeType":"Return","src":"9193:30:118"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9057:6:118","parameters":{"id":67707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67706,"mutability":"mutable","name":"routerAddr","nameLocation":"9072:10:118","nodeType":"VariableDeclaration","scope":67725,"src":"9064:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67705,"name":"address","nodeType":"ElementaryTypeName","src":"9064:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9063:20:118"},"returnParameters":{"id":67711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67725,"src":"9106:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65498","typeString":"contract IWrappedVara"},"typeName":{"id":67709,"nodeType":"UserDefinedTypeName","pathNode":{"id":67708,"name":"IWrappedVara","nameLocations":["9106:12:118"],"nodeType":"IdentifierPath","referencedDeclaration":65498,"src":"9106:12:118"},"referencedDeclaration":65498,"src":"9106:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65498","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9105:14:118"},"scope":67774,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67744,"nodeType":"FunctionDefinition","src":"9236:182:118","nodes":[],"body":{"id":67743,"nodeType":"Block","src":"9286:132:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":67733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67730,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9300:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67731,"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":67732,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67048,"src":"9314:7:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9300:21:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":67741,"nodeType":"Block","src":"9370:42:118","statements":[{"expression":{"expression":{"id":67738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9391:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":67739,"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":67729,"id":67740,"nodeType":"Return","src":"9384:17:118"}]},"id":67742,"nodeType":"IfStatement","src":"9296:116:118","trueBody":{"id":67737,"nodeType":"Block","src":"9323:41:118","statements":[{"expression":{"expression":{"id":67734,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9344:2:118","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":67735,"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":67729,"id":67736,"nodeType":"Return","src":"9337:16:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9245:7:118","parameters":{"id":67726,"nodeType":"ParameterList","parameters":[],"src":"9252:2:118"},"returnParameters":{"id":67729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67744,"src":"9277:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67727,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9276:9:118"},"scope":67774,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":67773,"nodeType":"FunctionDefinition","src":"9424:243:118","nodes":[],"body":{"id":67772,"nodeType":"Block","src":"9492:175:118","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":67753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67748,"src":"9506:5:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":67752,"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":67771,"nodeType":"IfStatement","src":"9502:159:118","trueBody":{"id":67770,"nodeType":"Block","src":"9518:143:118","statements":[{"assignments":[67755],"declarations":[{"constant":false,"id":67755,"mutability":"mutable","name":"success","nameLocation":"9537:7:118","nodeType":"VariableDeclaration","scope":67770,"src":"9532:12:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67754,"name":"bool","nodeType":"ElementaryTypeName","src":"9532:4:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":67764,"initialValue":{"arguments":[{"id":67761,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67746,"src":"9573:11:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67748,"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":67757,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67179,"src":"9554:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67758,"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":67756,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67725,"src":"9547:6:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$65498_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":67759,"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_$65498","typeString":"contract IWrappedVara"}},"id":67760,"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":67763,"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":67766,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67755,"src":"9614:7:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":67767,"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":67765,"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":67768,"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":67769,"nodeType":"ExpressionStatement","src":"9606:44:118"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9433:14:118","parameters":{"id":67749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67746,"mutability":"mutable","name":"destination","nameLocation":"9456:11:118","nodeType":"VariableDeclaration","scope":67773,"src":"9448:19:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67745,"name":"address","nodeType":"ElementaryTypeName","src":"9448:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67748,"mutability":"mutable","name":"value","nameLocation":"9477:5:118","nodeType":"VariableDeclaration","scope":67773,"src":"9469:13:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67747,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:118","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9447:36:118"},"returnParameters":{"id":67750,"nodeType":"ParameterList","parameters":[],"src":"9492:0:118"},"scope":67774,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67045,"name":"IMirror","nameLocations":["422:7:118"],"nodeType":"IdentifierPath","referencedDeclaration":65179,"src":"422:7:118"},"id":67046,"nodeType":"InheritanceSpecifier","src":"422:7:118"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67774,65179],"name":"Mirror","nameLocation":"412:6:118","scope":67775,"usedErrors":[],"usedEvents":[65044,65055,65066,65073,65078,65089,65100,65107]}],"license":"UNLICENSED"},"id":118} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index 51d0a9b1f2a..15de5d82a16 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":"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":"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":"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":[],"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"}],"bytecode":{"object":"0x60a034606d57601f61049a38819003918201601f19168301916001600160401b03831184841017607157808492602094604052833981010312606d57516001600160a01b0381168103606d57608052604051610414908161008682396080518181816102ba01526102fe0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436106102e9575f3560e01c806329336f39146100bb57806336a52a18146100b6578063701da98e146100b1578063704ed542146100ac57806391d5a64c146100a75780639cb33005146100a25780639ce110d71461009d578063affed0e014610098578063d562422214610093578063e43f34331461008e5763f887ea40036102e9576102a5565b610290565b610255565b610238565b610210565b6101e9565b6101d3565b6101ba565b61019d565b610175565b610134565b9181601f840112156100ee5782359167ffffffffffffffff83116100ee57602083818601950101116100ee57565b5f80fd5b604435906001600160801b03821682036100ee57565b600435906001600160801b03821682036100ee57565b602435906001600160801b03821682036100ee57565b346100ee5760603660031901126100ee5760243567ffffffffffffffff81116100ee576101659036906004016100c0565b505061016f6100f2565b506102e9565b346100ee575f3660031901126100ee576001546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576020600354604051908152f35b346100ee5760203660031901126100ee5761016f610108565b346100ee576020366003190112156102e9575f80fd5b346100ee575f3660031901126100ee575f546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576002546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576020600454604051908152f35b346100ee5760403660031901126100ee5760043567ffffffffffffffff81116100ee576102869036906004016100c0565b505061016f61011e565b346100ee575f366003190112156102e9575f80fd5b346100ee575f3660031901126100ee576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60405163e6fabc0960e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610397575f9161033c575b506103c1565b602091503d821161038f575b601f8201601f191681019167ffffffffffffffff83118284101761037b57610375926040528101906103a2565b5f610336565b634e487b7160e01b5f52604160045260245ffd5b3d9150610348565b6040513d5f823e3d90fd5b908160209103126100ee57516001600160a01b03811681036100ee5790565b5f8091368280378136915af43d5f803e156103da573d5ff35b3d5ffdfea2646970667358221220a423a432a65943cc09c3e04e3e9411c13648dcc4fed36524adc25f89c0e3a25464736f6c634300081c0033","sourceMap":"259:1084:119:-:0;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;-1:-1:-1;;;;;259:1084:119;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:1084:119;;;;;;533:16;;259:1084;;;;;;;;533:16;259:1084;;;;;;;;;;;;-1:-1:-1;259:1084:119;;;;;;-1:-1:-1;259:1084:119;;;;;-1:-1:-1;259:1084:119","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102e9575f3560e01c806329336f39146100bb57806336a52a18146100b6578063701da98e146100b1578063704ed542146100ac57806391d5a64c146100a75780639cb33005146100a25780639ce110d71461009d578063affed0e014610098578063d562422214610093578063e43f34331461008e5763f887ea40036102e9576102a5565b610290565b610255565b610238565b610210565b6101e9565b6101d3565b6101ba565b61019d565b610175565b610134565b9181601f840112156100ee5782359167ffffffffffffffff83116100ee57602083818601950101116100ee57565b5f80fd5b604435906001600160801b03821682036100ee57565b600435906001600160801b03821682036100ee57565b602435906001600160801b03821682036100ee57565b346100ee5760603660031901126100ee5760243567ffffffffffffffff81116100ee576101659036906004016100c0565b505061016f6100f2565b506102e9565b346100ee575f3660031901126100ee576001546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576020600354604051908152f35b346100ee5760203660031901126100ee5761016f610108565b346100ee576020366003190112156102e9575f80fd5b346100ee575f3660031901126100ee575f546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576002546040516001600160a01b039091168152602090f35b346100ee575f3660031901126100ee576020600454604051908152f35b346100ee5760403660031901126100ee5760043567ffffffffffffffff81116100ee576102869036906004016100c0565b505061016f61011e565b346100ee575f366003190112156102e9575f80fd5b346100ee575f3660031901126100ee576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60405163e6fabc0960e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610397575f9161033c575b506103c1565b602091503d821161038f575b601f8201601f191681019167ffffffffffffffff83118284101761037b57610375926040528101906103a2565b5f610336565b634e487b7160e01b5f52604160045260245ffd5b3d9150610348565b6040513d5f823e3d90fd5b908160209103126100ee57516001600160a01b03811681036100ee5790565b5f8091368280378136915af43d5f803e156103da573d5ff35b3d5ffdfea2646970667358221220a423a432a65943cc09c3e04e3e9411c13648dcc4fed36524adc25f89c0e3a25464736f6c634300081c0033","sourceMap":"259:1084:119:-:0;;;;;;1009:79;259:1084;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:79;259:1084;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;259:1084:119;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;259:1084:119;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;259:1084:119;;;;;;:::o;:::-;;;;;;-1:-1:-1;;259:1084:119;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;717:114;:::i;259:1084::-;;;;;;-1:-1:-1;;259:1084:119;;;;;;;;-1:-1:-1;;;;;259:1084:119;;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;;437:24;259:1084;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;;;:::i;:::-;;;;;;-1:-1:-1;;259:1084:119;;;919:84;259:1084;-1:-1:-1;259:1084:119;;;;;;;;-1:-1:-1;;259:1084:119;;;;;;;;-1:-1:-1;;;;;259:1084:119;;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;405:26;259:1084;;;-1:-1:-1;;;;;259:1084:119;;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;259:1084:119;;;1009:79;259:1084;;;;;;;;;;-1:-1:-1;;259:1084:119;;;;;;309:31;-1:-1:-1;;;;;259:1084:119;;;;;;1132:75;259:1084;;-1:-1:-1;;;1306:28:119;;;259:1084;1306:28;259:1084;1314:6;-1:-1:-1;;;;;259:1084:119;1306:28;;;;;;;-1:-1:-1;1306:28:119;;;1132:75;1182:17;;:::i;1306:28::-;;;-1:-1:-1;1306:28:119;;;;;;259:1084;;;-1:-1:-1;;259:1084:119;;;;;;;;;;;;;1306:28;259:1084;;;1306:28;;;;:::i;:::-;;;;259:1084;;;;-1:-1:-1;259:1084:119;;1306:28;259:1084;;-1:-1:-1;259:1084:119;1306:28;;;-1:-1:-1;1306:28:119;;;259:1084;;;-1:-1:-1;259:1084:119;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:1084:119;;;;;;;:::o;949:895:40:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"67787":[{"start":698,"length":32},{"start":766,"length":32}]}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initializer()":"9ce110d7","nonce()":"affed0e0","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\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"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\":[],\"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\":[],\"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\":[],\"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\":{\"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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/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\":\"0xea9241893d35f9d7516e21a9e6be79d645b2d62d123b0e0ef8c47dc530fa1baa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6a6ca6dcc8735f695dc92f722a37bd2ff6229d9bbcb67f7c4a09f94d1f9f80bd\",\"dweb:/ipfs/QmWyzmeuUtc5ZNg2TjPSx2GczrBYNHrTqbLWiJj9asHbZd\"]},\"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":[{"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":[],"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":[],"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"},{"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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/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":"0xea9241893d35f9d7516e21a9e6be79d645b2d62d123b0e0ef8c47dc530fa1baa","urls":["bzz-raw://6a6ca6dcc8735f695dc92f722a37bd2ff6229d9bbcb67f7c4a09f94d1f9f80bd","dweb:/ipfs/QmWyzmeuUtc5ZNg2TjPSx2GczrBYNHrTqbLWiJj9asHbZd"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa95dec92e5eadb21249fdec7b3246d666e2fbaf6d994030bb75176c642fa15de","urls":["bzz-raw://c05bd2a8dacd478bea5797e034f782d8859dcf9a047d1a8250f71f587d9b7831","dweb:/ipfs/QmSTqy7XvzeDpAqtVkSXXCwtyXspe2zkFqVeuDamguoqRF"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":67789,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67791,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67793,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67795,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67797,"contract":"src/MirrorProxy.sol:MirrorProxy","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/MirrorProxy.sol","id":67880,"exportedSymbols":{"IMirrorProxy":[65223],"IRouter":[65486],"MirrorProxy":[67879],"Proxy":[42880]},"nodeType":"SourceUnit","src":"39:1305: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":67880,"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":67880,"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":67880,"sourceUnit":65487,"symbolAliases":[{"foreign":{"id":67780,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"185:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67879,"nodeType":"ContractDefinition","src":"259:1084: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":67879,"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":67789,"nodeType":"VariableDeclaration","src":"347:22:119","nodes":[],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"362:7:119","scope":67879,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67788,"name":"address","nodeType":"ElementaryTypeName","src":"347:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67791,"nodeType":"VariableDeclaration","src":"375:24:119","nodes":[],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"390:9:119","scope":67879,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67790,"name":"address","nodeType":"ElementaryTypeName","src":"375:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67793,"nodeType":"VariableDeclaration","src":"405:26:119","nodes":[],"constant":false,"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"420:11:119","scope":67879,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67792,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67795,"nodeType":"VariableDeclaration","src":"437:24:119","nodes":[],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"452:9:119","scope":67879,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"437:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67797,"nodeType":"VariableDeclaration","src":"467:20:119","nodes":[],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"482:5:119","scope":67879,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67796,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67807,"nodeType":"FunctionDefinition","src":"494:62:119","nodes":[],"body":{"id":67806,"nodeType":"Block","src":"523:33:119","nodes":[],"statements":[{"expression":{"id":67804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67802,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67787,"src":"533:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67803,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67799,"src":"542:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"533:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67805,"nodeType":"ExpressionStatement","src":"533:16:119"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67799,"mutability":"mutable","name":"_router","nameLocation":"514:7:119","nodeType":"VariableDeclaration","scope":67807,"src":"506:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67798,"name":"address","nodeType":"ElementaryTypeName","src":"506:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"505:17:119"},"returnParameters":{"id":67801,"nodeType":"ParameterList","parameters":[],"src":"523:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67818,"nodeType":"FunctionDefinition","src":"592:119:119","nodes":[],"body":{"id":67817,"nodeType":"Block","src":"683:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67814,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":67865,"src":"693:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"693:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67816,"nodeType":"ExpressionStatement","src":"693:11:119"}]},"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"601:11:119","parameters":{"id":67812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67809,"mutability":"mutable","name":"payload","nameLocation":"628:7:119","nodeType":"VariableDeclaration","scope":67818,"src":"613:22:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67808,"name":"bytes","nodeType":"ElementaryTypeName","src":"613:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67811,"mutability":"mutable","name":"value","nameLocation":"645:5:119","nodeType":"VariableDeclaration","scope":67818,"src":"637:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67810,"name":"uint128","nodeType":"ElementaryTypeName","src":"637:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"612:39:119"},"returnParameters":{"id":67813,"nodeType":"ParameterList","parameters":[],"src":"683:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67831,"nodeType":"FunctionDefinition","src":"717:114:119","nodes":[],"body":{"id":67830,"nodeType":"Block","src":"803:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67827,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":67865,"src":"813:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"813:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67829,"nodeType":"ExpressionStatement","src":"813:11:119"}]},"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"726:9:119","parameters":{"id":67825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67820,"mutability":"mutable","name":"repliedTo","nameLocation":"744:9:119","nodeType":"VariableDeclaration","scope":67831,"src":"736:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67819,"name":"bytes32","nodeType":"ElementaryTypeName","src":"736:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67822,"mutability":"mutable","name":"payload","nameLocation":"770:7:119","nodeType":"VariableDeclaration","scope":67831,"src":"755:22:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67821,"name":"bytes","nodeType":"ElementaryTypeName","src":"755:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67824,"mutability":"mutable","name":"value","nameLocation":"787:5:119","nodeType":"VariableDeclaration","scope":67831,"src":"779:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67823,"name":"uint128","nodeType":"ElementaryTypeName","src":"779:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"735:58:119"},"returnParameters":{"id":67826,"nodeType":"ParameterList","parameters":[],"src":"803:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67840,"nodeType":"FunctionDefinition","src":"837:76:119","nodes":[],"body":{"id":67839,"nodeType":"Block","src":"885:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67836,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":67865,"src":"895:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"895:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67838,"nodeType":"ExpressionStatement","src":"895:11:119"}]},"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"846:10:119","parameters":{"id":67834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67833,"mutability":"mutable","name":"claimedId","nameLocation":"865:9:119","nodeType":"VariableDeclaration","scope":67840,"src":"857:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"857:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"856:19:119"},"returnParameters":{"id":67835,"nodeType":"ParameterList","parameters":[],"src":"885:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67849,"nodeType":"FunctionDefinition","src":"919:84:119","nodes":[],"body":{"id":67848,"nodeType":"Block","src":"975:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67845,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":67865,"src":"985:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"985:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67847,"nodeType":"ExpressionStatement","src":"985:11:119"}]},"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"928:22:119","parameters":{"id":67843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67842,"mutability":"mutable","name":"value","nameLocation":"959:5:119","nodeType":"VariableDeclaration","scope":67849,"src":"951:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67841,"name":"uint128","nodeType":"ElementaryTypeName","src":"951:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"950:15:119"},"returnParameters":{"id":67844,"nodeType":"ParameterList","parameters":[],"src":"975:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67856,"nodeType":"FunctionDefinition","src":"1009:79:119","nodes":[],"body":{"id":67855,"nodeType":"Block","src":"1060:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67852,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":67865,"src":"1070:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67854,"nodeType":"ExpressionStatement","src":"1070:11:119"}]},"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[],"name":"transferLockedValueToInheritor","nameLocation":"1018:30:119","parameters":{"id":67850,"nodeType":"ParameterList","parameters":[],"src":"1048:2:119"},"returnParameters":{"id":67851,"nodeType":"ParameterList","parameters":[],"src":"1060:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67865,"nodeType":"FunctionDefinition","src":"1132:75:119","nodes":[],"body":{"id":67864,"nodeType":"Block","src":"1162:45:119","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67860,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[67878],"referencedDeclaration":67878,"src":"1182:15:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1182:17:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67859,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67865,42855],"referencedDeclaration":42855,"src":"1172:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1172:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67863,"nodeType":"ExpressionStatement","src":"1172:28:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"1141:9:119","parameters":{"id":67857,"nodeType":"ParameterList","parameters":[],"src":"1150:2:119"},"returnParameters":{"id":67858,"nodeType":"ParameterList","parameters":[],"src":"1162:0:119"},"scope":67879,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":67878,"nodeType":"FunctionDefinition","src":"1213:128:119","nodes":[],"body":{"id":67877,"nodeType":"Block","src":"1289:52:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67872,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67787,"src":"1314:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67871,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"1306:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65486_$","typeString":"type(contract IRouter)"}},"id":67873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:15:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65486","typeString":"contract IRouter"}},"id":67874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1322:10:119","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":65319,"src":"1306:26:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67870,"id":67876,"nodeType":"Return","src":"1299:35:119"}]},"baseFunctions":[42861],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1222:15:119","overrides":{"id":67867,"nodeType":"OverrideSpecifier","overrides":[],"src":"1262:8:119"},"parameters":{"id":67866,"nodeType":"ParameterList","parameters":[],"src":"1237:2:119"},"returnParameters":{"id":67870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67878,"src":"1280:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67868,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1279:9:119"},"scope":67879,"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":[67879,42880,65223],"name":"MirrorProxy","nameLocation":"268:11:119","scope":67880,"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":"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":"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":"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":[],"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"}],"bytecode":{"object":"0x60a0604052348015600e575f5ffd5b50604051610523380380610523833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161049e6100855f395f81816101f20152610257015261049e5ff3fe60806040526004361061009b575f3560e01c80639cb33005116100635780639cb330051461015c5780639ce110d71461017a578063affed0e014610199578063d5624222146101ae578063e43f3433146101cd578063f887ea40146101e15761009b565b806329336f39146100a557806336a52a18146100c4578063701da98e14610100578063704ed5421461012357806391d5a64c14610142575b6100a3610214565b005b3480156100b0575f5ffd5b506100a36100bf366004610361565b610226565b3480156100cf575f5ffd5b506001546100e3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010b575f5ffd5b5061011560035481565b6040519081526020016100f7565b34801561012e575f5ffd5b506100a361013d3660046103bb565b610234565b34801561014d575f5ffd5b506100a361013d3660046103db565b348015610167575f5ffd5b505f546100e3906001600160a01b031681565b348015610185575f5ffd5b506002546100e3906001600160a01b031681565b3480156101a4575f5ffd5b5061011560045481565b3480156101b9575f5ffd5b506100a36101c83660046103f2565b61023f565b3480156101d8575f5ffd5b506100a361024c565b3480156101ec575f5ffd5b506100e37f000000000000000000000000000000000000000000000000000000000000000081565b61022461021f610254565b6102da565b565b61022e610214565b50505050565b61023c610214565b50565b610247610214565b505050565b610224610214565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6fabc096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d59190610442565b905090565b365f5f375f5f365f845af43d5f5f3e8080156102f4573d5ff35b3d5ffd5b5f5f83601f840112610308575f5ffd5b50813567ffffffffffffffff81111561031f575f5ffd5b602083019150836020828501011115610336575f5ffd5b9250929050565b80356fffffffffffffffffffffffffffffffff8116811461035c575f5ffd5b919050565b5f5f5f5f60608587031215610374575f5ffd5b84359350602085013567ffffffffffffffff811115610391575f5ffd5b61039d878288016102f8565b90945092506103b090506040860161033d565b905092959194509250565b5f602082840312156103cb575f5ffd5b6103d48261033d565b9392505050565b5f602082840312156103eb575f5ffd5b5035919050565b5f5f5f60408486031215610404575f5ffd5b833567ffffffffffffffff81111561041a575f5ffd5b610426868287016102f8565b909450925061043990506020850161033d565b90509250925092565b5f60208284031215610452575f5ffd5b81516001600160a01b03811681146103d4575f5ffdfea2646970667358221220e5229ec113a29a7bfce3cc83d68dfa6c4b608cfc84452d9dd743a8ad2631d40a64736f6c634300081c0033","sourceMap":"259:1084:119:-:0;;;494:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;533:16:119;;;259:1084;;14:290:128;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:128;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:128:o;:::-;259:1084:119;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009b575f3560e01c80639cb33005116100635780639cb330051461015c5780639ce110d71461017a578063affed0e014610199578063d5624222146101ae578063e43f3433146101cd578063f887ea40146101e15761009b565b806329336f39146100a557806336a52a18146100c4578063701da98e14610100578063704ed5421461012357806391d5a64c14610142575b6100a3610214565b005b3480156100b0575f5ffd5b506100a36100bf366004610361565b610226565b3480156100cf575f5ffd5b506001546100e3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010b575f5ffd5b5061011560035481565b6040519081526020016100f7565b34801561012e575f5ffd5b506100a361013d3660046103bb565b610234565b34801561014d575f5ffd5b506100a361013d3660046103db565b348015610167575f5ffd5b505f546100e3906001600160a01b031681565b348015610185575f5ffd5b506002546100e3906001600160a01b031681565b3480156101a4575f5ffd5b5061011560045481565b3480156101b9575f5ffd5b506100a36101c83660046103f2565b61023f565b3480156101d8575f5ffd5b506100a361024c565b3480156101ec575f5ffd5b506100e37f000000000000000000000000000000000000000000000000000000000000000081565b61022461021f610254565b6102da565b565b61022e610214565b50505050565b61023c610214565b50565b610247610214565b505050565b610224610214565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6fabc096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d59190610442565b905090565b365f5f375f5f365f845af43d5f5f3e8080156102f4573d5ff35b3d5ffd5b5f5f83601f840112610308575f5ffd5b50813567ffffffffffffffff81111561031f575f5ffd5b602083019150836020828501011115610336575f5ffd5b9250929050565b80356fffffffffffffffffffffffffffffffff8116811461035c575f5ffd5b919050565b5f5f5f5f60608587031215610374575f5ffd5b84359350602085013567ffffffffffffffff811115610391575f5ffd5b61039d878288016102f8565b90945092506103b090506040860161033d565b905092959194509250565b5f602082840312156103cb575f5ffd5b6103d48261033d565b9392505050565b5f602082840312156103eb575f5ffd5b5035919050565b5f5f5f60408486031215610404575f5ffd5b833567ffffffffffffffff81111561041a575f5ffd5b610426868287016102f8565b909450925061043990506020850161033d565b90509250925092565b5f60208284031215610452575f5ffd5b81516001600160a01b03811681146103d4575f5ffdfea2646970667358221220e5229ec113a29a7bfce3cc83d68dfa6c4b608cfc84452d9dd743a8ad2631d40a64736f6c634300081c0033","sourceMap":"259:1084:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2649:11:40;:9;:11::i;:::-;259:1084:119;717:114;;;;;;;;;;-1:-1:-1;717:114:119;;;;;:::i;:::-;;:::i;375:24::-;;;;;;;;;;-1:-1:-1;375:24:119;;;;-1:-1:-1;;;;;375:24:119;;;;;;-1:-1:-1;;;;;1325:32:128;;;1307:51;;1295:2;1280:18;375:24:119;;;;;;;;437;;;;;;;;;;;;;;;;;;;1515:25:128;;;1503:2;1488:18;437:24:119;1369:177:128;919:84:119;;;;;;;;;;-1:-1:-1;919:84:119;;;;;:::i;:::-;;:::i;837:76::-;;;;;;;;;;-1:-1:-1;837:76:119;;;;;:::i;347:22::-;;;;;;;;;;-1:-1:-1;347:22:119;;;;-1:-1:-1;;;;;347:22:119;;;405:26;;;;;;;;;;-1:-1:-1;405:26:119;;;;-1:-1:-1;;;;;405:26:119;;;467:20;;;;;;;;;;;;;;;;592:119;;;;;;;;;;-1:-1:-1;592:119:119;;;;;:::i;:::-;;:::i;1009:79::-;;;;;;;;;;;;;:::i;309:31::-;;;;;;;;;;;;;;;2323:83:40;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;717:114:119:-;813:11;:9;:11::i;:::-;717:114;;;;:::o;919:84::-;985:11;:9;:11::i;:::-;919:84;:::o;592:119::-;693:11;:9;:11::i;:::-;592:119;;;:::o;1009:79::-;1070:11;:9;:11::i;1213:128::-;1280:7;1314:6;-1:-1:-1;;;;;1306:26:119;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1299:35;;1213:128;:::o;949:895:40:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;14:347:128;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:128;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:188::-;434:20;;494:34;483:46;;473:57;;463:85;;544:1;541;534:12;463:85;366:188;;;:::o;559:597::-;647:6;655;663;671;724:2;712:9;703:7;699:23;695:32;692:52;;;740:1;737;730:12;692:52;785:23;;;-1:-1:-1;883:2:128;868:18;;855:32;910:18;899:30;;896:50;;;942:1;939;932:12;896:50;981:58;1031:7;1022:6;1011:9;1007:22;981:58;:::i;:::-;1058:8;;-1:-1:-1;955:84:128;-1:-1:-1;1112:38:128;;-1:-1:-1;1146:2:128;1131:18;;1112:38;:::i;:::-;1102:48;;559:597;;;;;;;:::o;1551:186::-;1610:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1702:29;1721:9;1702:29;:::i;:::-;1692:39;1551:186;-1:-1:-1;;;1551:186:128:o;1742:226::-;1801:6;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;-1:-1:-1;1915:23:128;;1742:226;-1:-1:-1;1742:226:128:o;2155:483::-;2234:6;2242;2250;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;2359:9;2346:23;2392:18;2384:6;2381:30;2378:50;;;2424:1;2421;2414:12;2378:50;2463:58;2513:7;2504:6;2493:9;2489:22;2463:58;:::i;:::-;2540:8;;-1:-1:-1;2437:84:128;-1:-1:-1;2594:38:128;;-1:-1:-1;2628:2:128;2613:18;;2594:38;:::i;:::-;2584:48;;2155:483;;;;;:::o;2643:290::-;2713:6;2766:2;2754:9;2745:7;2741:23;2737:32;2734:52;;;2782:1;2779;2772:12;2734:52;2808:16;;-1:-1:-1;;;;;2853:31:128;;2843:42;;2833:70;;2899:1;2896;2889:12","linkReferences":{},"immutableReferences":{"67788":[{"start":498,"length":32},{"start":599,"length":32}]}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initializer()":"9ce110d7","nonce()":"affed0e0","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\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"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\":[],\"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\":[],\"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\":[],\"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\":{\"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/\"]},\"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\":\"0xea9241893d35f9d7516e21a9e6be79d645b2d62d123b0e0ef8c47dc530fa1baa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6a6ca6dcc8735f695dc92f722a37bd2ff6229d9bbcb67f7c4a09f94d1f9f80bd\",\"dweb:/ipfs/QmWyzmeuUtc5ZNg2TjPSx2GczrBYNHrTqbLWiJj9asHbZd\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2\",\"dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr\"]}},\"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":[{"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":[],"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":[],"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"},{"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/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{}},"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":"0xea9241893d35f9d7516e21a9e6be79d645b2d62d123b0e0ef8c47dc530fa1baa","urls":["bzz-raw://6a6ca6dcc8735f695dc92f722a37bd2ff6229d9bbcb67f7c4a09f94d1f9f80bd","dweb:/ipfs/QmWyzmeuUtc5ZNg2TjPSx2GczrBYNHrTqbLWiJj9asHbZd"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840","urls":["bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2","dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":67790,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":67792,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":67794,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":67796,"contract":"src/MirrorProxy.sol:MirrorProxy","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":67798,"contract":"src/MirrorProxy.sol:MirrorProxy","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/MirrorProxy.sol","id":67881,"exportedSymbols":{"IMirrorProxy":[65224],"IRouter":[65487],"MirrorProxy":[67880],"Proxy":[42880]},"nodeType":"SourceUnit","src":"39:1305:119","nodes":[{"id":67776,"nodeType":"PragmaDirective","src":"39:24:119","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67778,"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":67881,"sourceUnit":42881,"symbolAliases":[{"foreign":{"id":67777,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42880,"src":"73:5:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67780,"nodeType":"ImportDirective","src":"128:48:119","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":67881,"sourceUnit":65225,"symbolAliases":[{"foreign":{"id":67779,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65224,"src":"136:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67782,"nodeType":"ImportDirective","src":"177:38:119","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":67881,"sourceUnit":65488,"symbolAliases":[{"foreign":{"id":67781,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65487,"src":"185:7:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67880,"nodeType":"ContractDefinition","src":"259:1084:119","nodes":[{"id":67788,"nodeType":"VariableDeclaration","src":"309:31:119","nodes":[],"baseFunctions":[65223],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67787,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67790,"nodeType":"VariableDeclaration","src":"347:22:119","nodes":[],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"362:7:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67789,"name":"address","nodeType":"ElementaryTypeName","src":"347:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67792,"nodeType":"VariableDeclaration","src":"375:24:119","nodes":[],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"390:9:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67791,"name":"address","nodeType":"ElementaryTypeName","src":"375:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67794,"nodeType":"VariableDeclaration","src":"405:26:119","nodes":[],"constant":false,"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"420:11:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67793,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":67796,"nodeType":"VariableDeclaration","src":"437:24:119","nodes":[],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"452:9:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"437:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":67798,"nodeType":"VariableDeclaration","src":"467:20:119","nodes":[],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"482:5:119","scope":67880,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67797,"name":"uint256","nodeType":"ElementaryTypeName","src":"467:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":67808,"nodeType":"FunctionDefinition","src":"494:62:119","nodes":[],"body":{"id":67807,"nodeType":"Block","src":"523:33:119","nodes":[],"statements":[{"expression":{"id":67805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":67803,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67788,"src":"533:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":67804,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67800,"src":"542:7:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"533:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67806,"nodeType":"ExpressionStatement","src":"533:16:119"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":67801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67800,"mutability":"mutable","name":"_router","nameLocation":"514:7:119","nodeType":"VariableDeclaration","scope":67808,"src":"506:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67799,"name":"address","nodeType":"ElementaryTypeName","src":"506:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"505:17:119"},"returnParameters":{"id":67802,"nodeType":"ParameterList","parameters":[],"src":"523:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":67819,"nodeType":"FunctionDefinition","src":"592:119:119","nodes":[],"body":{"id":67818,"nodeType":"Block","src":"683:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67815,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":67866,"src":"693:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"693:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67817,"nodeType":"ExpressionStatement","src":"693:11:119"}]},"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"601:11:119","parameters":{"id":67813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67810,"mutability":"mutable","name":"payload","nameLocation":"628:7:119","nodeType":"VariableDeclaration","scope":67819,"src":"613:22:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67809,"name":"bytes","nodeType":"ElementaryTypeName","src":"613:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67812,"mutability":"mutable","name":"value","nameLocation":"645:5:119","nodeType":"VariableDeclaration","scope":67819,"src":"637:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67811,"name":"uint128","nodeType":"ElementaryTypeName","src":"637:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"612:39:119"},"returnParameters":{"id":67814,"nodeType":"ParameterList","parameters":[],"src":"683:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67832,"nodeType":"FunctionDefinition","src":"717:114:119","nodes":[],"body":{"id":67831,"nodeType":"Block","src":"803:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67828,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":67866,"src":"813:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"813:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67830,"nodeType":"ExpressionStatement","src":"813:11:119"}]},"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"726:9:119","parameters":{"id":67826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67821,"mutability":"mutable","name":"repliedTo","nameLocation":"744:9:119","nodeType":"VariableDeclaration","scope":67832,"src":"736:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67820,"name":"bytes32","nodeType":"ElementaryTypeName","src":"736:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67823,"mutability":"mutable","name":"payload","nameLocation":"770:7:119","nodeType":"VariableDeclaration","scope":67832,"src":"755:22:119","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":67822,"name":"bytes","nodeType":"ElementaryTypeName","src":"755:5:119","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":67825,"mutability":"mutable","name":"value","nameLocation":"787:5:119","nodeType":"VariableDeclaration","scope":67832,"src":"779:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67824,"name":"uint128","nodeType":"ElementaryTypeName","src":"779:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"735:58:119"},"returnParameters":{"id":67827,"nodeType":"ParameterList","parameters":[],"src":"803:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67841,"nodeType":"FunctionDefinition","src":"837:76:119","nodes":[],"body":{"id":67840,"nodeType":"Block","src":"885:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67837,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":67866,"src":"895:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"895:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67839,"nodeType":"ExpressionStatement","src":"895:11:119"}]},"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"846:10:119","parameters":{"id":67835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67834,"mutability":"mutable","name":"claimedId","nameLocation":"865:9:119","nodeType":"VariableDeclaration","scope":67841,"src":"857:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"857:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"856:19:119"},"returnParameters":{"id":67836,"nodeType":"ParameterList","parameters":[],"src":"885:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67850,"nodeType":"FunctionDefinition","src":"919:84:119","nodes":[],"body":{"id":67849,"nodeType":"Block","src":"975:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67846,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":67866,"src":"985:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"985:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67848,"nodeType":"ExpressionStatement","src":"985:11:119"}]},"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"928:22:119","parameters":{"id":67844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67843,"mutability":"mutable","name":"value","nameLocation":"959:5:119","nodeType":"VariableDeclaration","scope":67850,"src":"951:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":67842,"name":"uint128","nodeType":"ElementaryTypeName","src":"951:7:119","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"950:15:119"},"returnParameters":{"id":67845,"nodeType":"ParameterList","parameters":[],"src":"975:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67857,"nodeType":"FunctionDefinition","src":"1009:79:119","nodes":[],"body":{"id":67856,"nodeType":"Block","src":"1060:28:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67853,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":67866,"src":"1070:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:11:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67855,"nodeType":"ExpressionStatement","src":"1070:11:119"}]},"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[],"name":"transferLockedValueToInheritor","nameLocation":"1018:30:119","parameters":{"id":67851,"nodeType":"ParameterList","parameters":[],"src":"1048:2:119"},"returnParameters":{"id":67852,"nodeType":"ParameterList","parameters":[],"src":"1060:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67866,"nodeType":"FunctionDefinition","src":"1132:75:119","nodes":[],"body":{"id":67865,"nodeType":"Block","src":"1162:45:119","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":67861,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[67879],"referencedDeclaration":67879,"src":"1182:15:119","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":67862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1182:17:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67860,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[67866,42855],"referencedDeclaration":42855,"src":"1172:9:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1172:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67864,"nodeType":"ExpressionStatement","src":"1172:28:119"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"1141:9:119","parameters":{"id":67858,"nodeType":"ParameterList","parameters":[],"src":"1150:2:119"},"returnParameters":{"id":67859,"nodeType":"ParameterList","parameters":[],"src":"1162:0:119"},"scope":67880,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":67879,"nodeType":"FunctionDefinition","src":"1213:128:119","nodes":[],"body":{"id":67878,"nodeType":"Block","src":"1289:52:119","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":67873,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67788,"src":"1314:6:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67872,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65487,"src":"1306:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$65487_$","typeString":"type(contract IRouter)"}},"id":67874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:15:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$65487","typeString":"contract IRouter"}},"id":67875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1322:10:119","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":65320,"src":"1306:26:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":67876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:28:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":67871,"id":67877,"nodeType":"Return","src":"1299:35:119"}]},"baseFunctions":[42861],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1222:15:119","overrides":{"id":67868,"nodeType":"OverrideSpecifier","overrides":[],"src":"1262:8:119"},"parameters":{"id":67867,"nodeType":"ParameterList","parameters":[],"src":"1237:2:119"},"returnParameters":{"id":67871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67879,"src":"1280:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67869,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1279:9:119"},"scope":67880,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":67783,"name":"IMirrorProxy","nameLocations":["283:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":65224,"src":"283:12:119"},"id":67784,"nodeType":"InheritanceSpecifier","src":"283:12:119"},{"baseName":{"id":67785,"name":"Proxy","nameLocations":["297:5:119"],"nodeType":"IdentifierPath","referencedDeclaration":42880,"src":"297:5:119"},"id":67786,"nodeType":"InheritanceSpecifier","src":"297:5:119"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[67880,42880,65224],"name":"MirrorProxy","nameLocation":"268:11:119","scope":67881,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":119} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index da603721246..5b22a2d610f 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":"0x6080806040523460aa575f516020612e715f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051612dc290816100af8239f35b6001600160401b0319166001600160401b039081175f516020612e715f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e7146121415750806301b1d15614611a035780631c149d8a146118aa57806328e24b3d146118805780633d43b4181461182e578063527de0f9146117ac57806365ecfea2146117735780636c2eb3501461148c578063715018a61461142357806382bdeaad1461130b57806384d22a4f146112a257806388f50cf0146112695780638b1edf1e146111a25780638da5cb5b1461116d5780638f381dbe146111275780639067088e146110de57806396a2ddfa146110b0578063aaf0fe6a14610d13578063b1669a3314610865578063baaf020114610768578063c13911e814610724578063c9f16a11146106f6578063ca1e781914610675578063cacf66ab1461063d578063e6fabc0914610604578063e7006a74146104e3578063e97d3eb3146102b0578063ed612f8c1461027a578063edc8722514610231578063efd81abc146101ff578063f2fde38b146101d25763facd743b1461017d575f80fd5b346101cf5760203660031901126101cf576101966121b1565b6101ad5f516020612d4d5f395f51905f52546128d5565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101cf5760203660031901126101cf576101fc6101ef6121b1565b6101f7612729565b61254b565b80f35b50346101cf57806003193601126101cf57602061ffff60075f516020612d4d5f395f51905f5254015416604051908152f35b50346101cf57806003193601126101cf5760206102725f516020612d4d5f395f51905f525461ffff60076001610266846128d5565b01549201541690612a22565b604051908152f35b50346101cf57806003193601126101cf57602060016102a65f516020612d4d5f395f51905f52546128d5565b0154604051908152f35b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf57366023830112156101cf578160040135916001600160401b0383116104df573660248460061b830101116104df576024356001600160401b0381116104db57906103238492369060040161216b565b935f516020612d4d5f395f51905f525492610340845415156121e8565b606095829360118601975b878610156104be578560061b84016024810135918287528a60205260ff60408820541660038110156104aa57600103610447576001926103fa6044610427940161039481612530565b1561042f57828a528d60205260408a20600260ff1982541617905560148c016103bd815461253d565b90555b6103c981612530565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612530565b6040519060208201928352151560f81b60408201526021815261041e6041826122a4565b519020906122c5565b95019461034b565b828a528d60205260408a2060ff1981541690556103c0565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926101fc92886104d69360208151910120906125cf565b6122f4565b8280fd5b5080fd5b50346101cf5760603660031901126101cf576104fd6121b1565b6024359061054560443591610512838561275c565b9360405193602085019182526040850152604084526105326060856122a4565b92519092206001600160a01b0392612c47565b16803b156104db5760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156105f9576105e4575b5050813b156104db576040519063485cc95560e01b82523360048301526024820152828160448183865af180156105d9576105c4575b602082604051908152f35b6105cf8380926122a4565b6104df57816105b9565b6040513d85823e3d90fd5b816105ee916122a4565b6104db57825f610583565b6040513d84823e3d90fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf57602065ffffffffffff60015f516020612d4d5f395f51905f52540154821c16604051908152f35b50346101cf57806003193601126101cf576106a860016106a25f516020612d4d5f395f51905f52546128d5565b01612340565b90604051918291602083016020845282518091526020604085019301915b8181106106d4575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c6565b50346101cf57806003193601126101cf57602060025f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf5760ff604060209260115f516020612d4d5f395f51905f5254016004358252845220541661076660405180926121db565bf35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761079990369060040161216b565b905f516020612d4d5f395f51905f5254906107b383612391565b916107c160405193846122a4565b8383526107cd84612391565b602084019490601f19013686376012869201915b81811061082c57868587604051928392602084019060208552518091526040840192915b818110610813575050500390f35b8251845285945060209384019390920191600101610805565b8061084261083d60019385886123a8565b6123f8565b828060a01b03165f528360205260405f205461085e82886123cc565b52016107e1565b50346101cf5760e03660031901126101cf5761087f6121b1565b6024356001600160a01b03811691908290036104db576044356001600160a01b0381169290839003610d0f576064356001600160a01b0381169190829003610d0b576084359160a43560c4356001600160401b038111610d07576108e790369060040161216b565b9490925f516020612d6d5f395f51905f52549660ff8860401c1615976001600160401b03811680159081610cff575b6001149081610cf5575b159081610cec575b50610cdd5767ffffffffffffffff1981166001175f516020612d6d5f395f51905f5255610967919089610cb1575b5061095f612b82565b6101f7612b82565b4215610c5b578215610c055782821115610ba457604097885161098a8a826122a4565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526109be612729565b5190205f198101908111610b905792610b3697969592600895928b610b2f966109f48251926020840192835260208452836122a4565b60ff19915190201697885f516020612d4d5f395f51905f52558c610a16612890565b80518b5560018b019169ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff191617179055828d8051610a5e81612289565b8381526020810185905201526004890180546001600160a01b03199081166001600160a01b039384161790915560058a018054821693831693909317909255600689018054909216921691909117905560078601805461ffff1916611a0a179055610ac76123e0565b506509184e72a00060208b51610adc8161225a565b639502f90081520152600e860180546001600160c01b0319166d09184e72a000000000009502f90017905589518290602090610b178161225a565b8381520152600f8601556010850155429436916124a7565b91016128ef565b610b3e575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160018152a180f35b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f516020612d6d5f395f51905f52555f610956565b63f92ee8a960e01b8b5260048bfd5b9050155f610928565b303b159150610920565b8a9150610916565b8780fd5b8480fd5b8380fd5b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf5781600401604060031984360301126104df576024356001600160401b0381116104db57610d6890369060040161216b565b91905f516020612d4d5f395f51905f52549265ffffffffffff600185015460201c1691610d958342612473565b94600f81015495861561109c5786900495602489013596600181018091116110885787036110305786610dc791612494565b840180941161101c57610dde601082015485612473565b4210610fd757610ded81612a08565b954260028801541015610f775760405198610e078a61225a565b8635906001600160401b038211610f73570136602382011215610f6f576020610e3b839236906024600482013591016124a7565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f50575050506020828c610e7a93610e9f9a9b9c9d9e520380845201826122a4565b5190206040516020810191825260208152610e966040826122a4565b519020906125cf565b15610ef057610ee6817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ee0610ed9866020976124fb565b36916124a7565b906128ef565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e54565b8880fd5b8980fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b89526011600452602489fd5b634e487b7160e01b88526012600452602488fd5b50346101cf57806003193601126101cf57602060135f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf576110f86121b1565b60125f516020612d4d5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101cf5760203660031901126101cf57600435906001600160401b0382116101cf57602061116361115d366004860161216b565b9061240c565b6040519015158152f35b50346101cf57806003193601126101cf575f516020612d2d5f395f51905f52546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f525480546112245763ffffffff600182015416409081156111df575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf576112bb6123e0565b506040600e5f516020612d4d5f395f51905f5254016001600160801b038251916112e48361225a565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761133c90369060040161216b565b905f516020612d4d5f395f51905f52549061135683612391565b9161136460405193846122a4565b83835261137084612391565b602084019490601f19013686376011869201915b8181106113d957868587604051928392602084019060208552518091526040840192915b8181106113b6575050500390f35b91935091602080826113cb60019488516121db565b0194019101918493926113a8565b6113e48183866123a8565b3587528260205260ff6040882054166113fd82876123cc565b600382101561140f5752600101611384565b634e487b7160e01b89526021600452602489fd5b50346101cf57806003193601126101cf5761143c612729565b5f516020612d2d5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101cf57806003193601126101cf576114a5612729565b5f516020612d6d5f395f51905f525460ff8160401c16801561175f575b61175057680100000000000000029068ffffffffffffffffff1916175f516020612d6d5f395f51905f52555f516020612d4d5f395f51905f5254604090815161150b83826122a4565b6017815260208101907f726f757465722e73746f726167652e526f757465725632000000000000000000825261153f612729565b5190205f19810190811161173c57916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29382519084820190815284825261158984836122a4565b60ff19915190201690815f516020612d4d5f395f51905f52556115aa612890565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff1916171790556004810160048301908082036116ee575b505061ffff600782015416600783019061ffff19825416179055611630600161161c836128d5565b016116274291612340565b600885016128ef565b600e8101600e83019080820361169c575b5050600f8101600f830191818303611686575b5050505060ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160028152a180f35b601092839254905501549101555f808080611654565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611641565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490850180548416918316919091179055600680840154908501805490931691161790555f806115f4565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b03821610156114c2565b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600501546040516001600160a01b039091168152602090f35b3461182a576117cc6117bd3661219b565b6001600160a01b03929161275c565b16803b1561182a576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af191821561181f5760209261180f575b50604051908152f35b5f611819916122a4565b5f611806565b6040513d5f823e3d90fd5b5f80fd5b3461182a57602036600319011261182a576118476121b1565b61184f612729565b5f516020612d4d5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b3461182a575f36600319011261182a5760205f516020612d4d5f395f51905f525454604051908152f35b3461182a576118b83661219b565b9081158015906119f9575b156119be5760115f516020612d4d5f395f51905f52546118e5815415156121e8565b0190805f528160205260ff60405f20541660038110156119aa57611949577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f4915156118c3565b3461182a57604036600319011261182a576004356001600160401b03811161182a57611a3390369060040161216b565b6024356001600160401b03811161182a57611a5290369060040161216b565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6121325760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f516020612d4d5f395f51905f525491611aba835415156121e8565b60605f915b858310156120f6578260051b840135609e198536030181121561182a5784019060028601546040830135036120a357611afb6060830135612a44565b1561204f57949396959291906020611b148183016125bc565b65ffffffffffff60405191611b288361225a565b843583521691829101528135600287015565ffffffffffff19600387015416176003860155611b5a60808201826124fb565b9690946060995f925b89841015611fac578360051b88013560be198936030181121561182a5788019b611b8c8d6123f8565b6001600160a01b03165f90815260128b01602052604090205415611f4f5760068a01548d906001600160a01b03166060611bc5836123f8565b92019182356001600160801b03811680910361182a5760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af1801561181f57611f19575b506001600160a01b03611c298f6123f8565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b0390611c96906001600160a01b03611c67866121c7565b166024870152602085013560448701526001600160a01b03611c8b604087016121c7565b166064870152612a87565b16608484015236829003601e19019060808301358281121561182a57830190602082359201946001600160401b03831161182a57606083023603861361182a57826101049260c060a4840152520193905f905b808210611ecf575050509e9f939495969798999a9b9c9d9e60a08201359081121561182a570190813560208301926001600160401b03821161182a578160051b91823603851361182a578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b828510611dd6575050505050505091815f8160209503925af190811561181f575f91611da4575b50611d93906001926122c5565b9b9a99989796959401929190611b63565b90506020813d8211611dce575b81611dbe602093836122a4565b8101031261182a57516001611d86565b3d9150611db1565b9193959750919395601f1983820301875287358581121561182a57820160208101358252906001600160a01b03611e0f604084016121c7565b1660208201526060820135603e19368490030181121561182a5782602091010191602083359301906001600160401b03841161182a57833603821361182a578360c092836040860152818486015260e08501375f60e085850101526001600160801b03611e7e60808301612a87565b16606084015260a0810135608084015201359163ffffffff60e01b831680930361182a5760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492611d5f565b90919460608060019288358152838060a01b03611eee60208b016121c7565b1660208201526001600160801b03611f0860408b01612a87565b166040820152019601920190611ce9565b6020813d8211611f47575b81611f31602093836122a4565b8101031261182a57518015158114611c17575f80fd5b3d9150611f24565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b96509697509793986001939150916120469260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ffd602082016125bc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261041e60a6826122a4565b91960191611abf565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6104d690878661210d9460208151910120906125cf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b3461182a575f36600319011261182a5760209060145f516020612d4d5f395f51905f525401548152f35b9181601f8401121561182a578235916001600160401b03831161182a576020808501948460051b01011161182a57565b604090600319011261182a576004359060243590565b600435906001600160a01b038216820361182a57565b35906001600160a01b038216820361182a57565b9060038210156119aa5752565b156121ef57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b0382111761227557604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761227557604052565b90601f801991011681019081106001600160401b0382111761227557604052565b6020806122f2928195946040519682889351918291018585015e82019083820152030180855201836122a4565b565b156122fb57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b81811061236f5750506122f2925003836122a4565b84546001600160a01b031683526001948501948794506020909301920161235a565b6001600160401b0381116122755760051b60200190565b91908110156123b85760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156123b85760209160051b010190565b604051906123ed8261225a565b5f6020838281520152565b356001600160a01b038116810361182a5790565b6124235f516020612d4d5f395f51905f52546128d5565b905f5b8381106124365750505050600190565b61244461083d8286856123a8565b6001600160a01b03165f9081526020849052604090205460ff161561246b57600101612426565b505050505f90565b9190820391821161248057565b634e487b7160e01b5f52601160045260245ffd5b8181029291811591840414171561248057565b9291906124b381612391565b936124c160405195866122a4565b602085838152019160051b810192831161182a57905b8282106124e357505050565b602080916124f0846121c7565b8152019101906124d7565b903590601e198136030182121561182a57018035906001600160401b03821161182a57602001918160051b3603831361182a57565b35801515810361182a5790565b5f1981146124805760010190565b6001600160a01b031680156125a9575f516020612d2d5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff8116810361182a5790565b9190916125f36125de826128d5565b9161ffff600760018501549201541690612a22565b9260405190602082019081526020825261260e6040836122a4565b61264a603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f1981018352826122a4565b5190205f925f5b8681101561271e578060051b820135601e198336030181121561182a5782018035906001600160401b03821161182a576020810190823603821361182a57604051906126a7601f8501601f1916602001836122a4565b838252602084369201011161182a575f6020846126d9956126d095838601378301015285612bad565b90929192612be7565b6001600160a01b03165f9081526020859052604090205460ff16612700575b600101612651565b9361270a9061253d565b938585036126f85750505050505050600190565b505050505050505f90565b5f516020612d2d5f395f51905f52546001600160a01b0316330361274957565b63118cdaa760e01b5f523360045260245ffd5b5f516020612d4d5f395f51905f525491612778835415156121e8565b815f526011830160205260ff60405f20541660038110156119aa57600203612834576127d660139160018060a01b036005860154169060405160208101918683526040820152604081526127cd6060826122a4565b51902090612c47565b9260018060a01b0384165f52601281016020528260405f2055016127fa815461253d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161289e81612289565b82815282602082015201526040516128b581612289565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6128de81612a9b565b156128e957600b0190565b60080190565b905f5b6001830190815481101561292f575f91825260208083208201546001600160a01b031683528490526040909120805460ff191690556001016128f2565b50505f5b8151811015612974576001906001600160a01b0361295182856123cc565b5116828060a01b03165f528360205260405f208260ff1982541617905501612933565b50600182018151916001600160401b038311612275576801000000000000000083116122755781548383558084106129e2575b50602001905f5260205f205f5b8381106129c5575050505060020155565b82516001600160a01b0316818301556020909201916001016129b4565b825f528360205f2091820191015b8181106129fd57506129a7565b5f81556001016129f0565b612a1181612a9b565b15612a1c5760080190565b600b0190565b61ffff612a30921690612494565b61270f810180911161248057612710900490565b905f19430143811161248057805b612a5d575b505f9150565b8040838103612a6e57506001925050565b15612a82578015612480575f190180612a52565b612a57565b35906001600160801b038216820361182a57565b600d600a820154910154808214612b3e5780821091421090811590421015918190612b37575b15612ad65782612ad057505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081612ac1565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f516020612d6d5f395f51905f525460401c1615612b9e57565b631afcd79f60e31b5f5260045ffd5b8151919060418303612bdd57612bd69250602082015190606060408401519301515f1a90612caa565b9192909190565b50505f9160029190565b60048110156119aa5780612bf9575050565b60018103612c105763f645eedf60e01b5f5260045ffd5b60028103612c2b575063fce698f760e01b5f5260045260245ffd5b600314612c355750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b03821615612c9b57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d21579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561181f575f516001600160a01b03811615612d1757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c164a4d4527d17d89e1ed45b36e10a35d32234888a4f4dd101d6ee94fb149e864736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","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":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e7146121415750806301b1d15614611a035780631c149d8a146118aa57806328e24b3d146118805780633d43b4181461182e578063527de0f9146117ac57806365ecfea2146117735780636c2eb3501461148c578063715018a61461142357806382bdeaad1461130b57806384d22a4f146112a257806388f50cf0146112695780638b1edf1e146111a25780638da5cb5b1461116d5780638f381dbe146111275780639067088e146110de57806396a2ddfa146110b0578063aaf0fe6a14610d13578063b1669a3314610865578063baaf020114610768578063c13911e814610724578063c9f16a11146106f6578063ca1e781914610675578063cacf66ab1461063d578063e6fabc0914610604578063e7006a74146104e3578063e97d3eb3146102b0578063ed612f8c1461027a578063edc8722514610231578063efd81abc146101ff578063f2fde38b146101d25763facd743b1461017d575f80fd5b346101cf5760203660031901126101cf576101966121b1565b6101ad5f516020612d4d5f395f51905f52546128d5565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101cf5760203660031901126101cf576101fc6101ef6121b1565b6101f7612729565b61254b565b80f35b50346101cf57806003193601126101cf57602061ffff60075f516020612d4d5f395f51905f5254015416604051908152f35b50346101cf57806003193601126101cf5760206102725f516020612d4d5f395f51905f525461ffff60076001610266846128d5565b01549201541690612a22565b604051908152f35b50346101cf57806003193601126101cf57602060016102a65f516020612d4d5f395f51905f52546128d5565b0154604051908152f35b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf57366023830112156101cf578160040135916001600160401b0383116104df573660248460061b830101116104df576024356001600160401b0381116104db57906103238492369060040161216b565b935f516020612d4d5f395f51905f525492610340845415156121e8565b606095829360118601975b878610156104be578560061b84016024810135918287528a60205260ff60408820541660038110156104aa57600103610447576001926103fa6044610427940161039481612530565b1561042f57828a528d60205260408a20600260ff1982541617905560148c016103bd815461253d565b90555b6103c981612530565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612530565b6040519060208201928352151560f81b60408201526021815261041e6041826122a4565b519020906122c5565b95019461034b565b828a528d60205260408a2060ff1981541690556103c0565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926101fc92886104d69360208151910120906125cf565b6122f4565b8280fd5b5080fd5b50346101cf5760603660031901126101cf576104fd6121b1565b6024359061054560443591610512838561275c565b9360405193602085019182526040850152604084526105326060856122a4565b92519092206001600160a01b0392612c47565b16803b156104db5760405163189acdbd60e31b81526001600160a01b0390921660048301819052918390818160248183875af180156105f9576105e4575b5050813b156104db576040519063485cc95560e01b82523360048301526024820152828160448183865af180156105d9576105c4575b602082604051908152f35b6105cf8380926122a4565b6104df57816105b9565b6040513d85823e3d90fd5b816105ee916122a4565b6104db57825f610583565b6040513d84823e3d90fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf57602065ffffffffffff60015f516020612d4d5f395f51905f52540154821c16604051908152f35b50346101cf57806003193601126101cf576106a860016106a25f516020612d4d5f395f51905f52546128d5565b01612340565b90604051918291602083016020845282518091526020604085019301915b8181106106d4575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c6565b50346101cf57806003193601126101cf57602060025f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf5760ff604060209260115f516020612d4d5f395f51905f5254016004358252845220541661076660405180926121db565bf35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761079990369060040161216b565b905f516020612d4d5f395f51905f5254906107b383612391565b916107c160405193846122a4565b8383526107cd84612391565b602084019490601f19013686376012869201915b81811061082c57868587604051928392602084019060208552518091526040840192915b818110610813575050500390f35b8251845285945060209384019390920191600101610805565b8061084261083d60019385886123a8565b6123f8565b828060a01b03165f528360205260405f205461085e82886123cc565b52016107e1565b50346101cf5760e03660031901126101cf5761087f6121b1565b6024356001600160a01b03811691908290036104db576044356001600160a01b0381169290839003610d0f576064356001600160a01b0381169190829003610d0b576084359160a43560c4356001600160401b038111610d07576108e790369060040161216b565b9490925f516020612d6d5f395f51905f52549660ff8860401c1615976001600160401b03811680159081610cff575b6001149081610cf5575b159081610cec575b50610cdd5767ffffffffffffffff1981166001175f516020612d6d5f395f51905f5255610967919089610cb1575b5061095f612b82565b6101f7612b82565b4215610c5b578215610c055782821115610ba457604097885161098a8a826122a4565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526109be612729565b5190205f198101908111610b905792610b3697969592600895928b610b2f966109f48251926020840192835260208452836122a4565b60ff19915190201697885f516020612d4d5f395f51905f52558c610a16612890565b80518b5560018b019169ffffffffffff0000000063ffffffff60208401511691845493015160201b169169ffffffffffffffffffff191617179055828d8051610a5e81612289565b8381526020810185905201526004890180546001600160a01b03199081166001600160a01b039384161790915560058a018054821693831693909317909255600689018054909216921691909117905560078601805461ffff1916611a0a179055610ac76123e0565b506509184e72a00060208b51610adc8161225a565b639502f90081520152600e860180546001600160c01b0319166d09184e72a000000000009502f90017905589518290602090610b178161225a565b8381520152600f8601556010850155429436916124a7565b91016128ef565b610b3e575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160018152a180f35b634e487b7160e01b8b52601160045260248bfd5b60405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608490fd5b68ffffffffffffffffff191668010000000000000001175f516020612d6d5f395f51905f52555f610956565b63f92ee8a960e01b8b5260048bfd5b9050155f610928565b303b159150610920565b8a9150610916565b8780fd5b8480fd5b8380fd5b50346101cf5760403660031901126101cf57600435906001600160401b0382116101cf5781600401604060031984360301126104df576024356001600160401b0381116104db57610d6890369060040161216b565b91905f516020612d4d5f395f51905f52549265ffffffffffff600185015460201c1691610d958342612473565b94600f81015495861561109c5786900495602489013596600181018091116110885787036110305786610dc791612494565b840180941161101c57610dde601082015485612473565b4210610fd757610ded81612a08565b954260028801541015610f775760405198610e078a61225a565b8635906001600160401b038211610f73570136602382011215610f6f576020610e3b839236906024600482013591016124a7565b9a8b8152015260405160208101918260208c51919c01908b5b818110610f50575050506020828c610e7a93610e9f9a9b9c9d9e520380845201826122a4565b5190206040516020810191825260208152610e966040826122a4565b519020906125cf565b15610ef057610ee6817f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b94610ee0610ed9866020976124fb565b36916124a7565b906128ef565b604051908152a180f35b60405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b6064820152608490fd5b82516001600160a01b03168e5260209d8e019d90920191600101610e54565b8880fd5b8980fd5b60405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b6064820152608490fd5b60405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f7420796574207374617274656400000000006044820152606490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b6064820152608490fd5b634e487b7160e01b89526011600452602489fd5b634e487b7160e01b88526012600452602488fd5b50346101cf57806003193601126101cf57602060135f516020612d4d5f395f51905f52540154604051908152f35b50346101cf5760203660031901126101cf576110f86121b1565b60125f516020612d4d5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101cf5760203660031901126101cf57600435906001600160401b0382116101cf57602061116361115d366004860161216b565b9061240c565b6040519015158152f35b50346101cf57806003193601126101cf575f516020612d2d5f395f51905f52546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f525480546112245763ffffffff600182015416409081156111df575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101cf57806003193601126101cf576112bb6123e0565b506040600e5f516020612d4d5f395f51905f5254016001600160801b038251916112e48361225a565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101cf5760203660031901126101cf576004356001600160401b0381116104df5761133c90369060040161216b565b905f516020612d4d5f395f51905f52549061135683612391565b9161136460405193846122a4565b83835261137084612391565b602084019490601f19013686376011869201915b8181106113d957868587604051928392602084019060208552518091526040840192915b8181106113b6575050500390f35b91935091602080826113cb60019488516121db565b0194019101918493926113a8565b6113e48183866123a8565b3587528260205260ff6040882054166113fd82876123cc565b600382101561140f5752600101611384565b634e487b7160e01b89526021600452602489fd5b50346101cf57806003193601126101cf5761143c612729565b5f516020612d2d5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101cf57806003193601126101cf576114a5612729565b5f516020612d6d5f395f51905f525460ff8160401c16801561175f575b61175057680100000000000000029068ffffffffffffffffff1916175f516020612d6d5f395f51905f52555f516020612d4d5f395f51905f5254604090815161150b83826122a4565b6017815260208101907f726f757465722e73746f726167652e526f757465725632000000000000000000825261153f612729565b5190205f19810190811161173c57916020917fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29382519084820190815284825261158984836122a4565b60ff19915190201690815f516020612d4d5f395f51905f52556115aa612890565b80518355600183019063ffffffff868201511669ffffffffffff00000000868454930151881b169169ffffffffffffffffffff1916171790556004810160048301908082036116ee575b505061ffff600782015416600783019061ffff19825416179055611630600161161c836128d5565b016116274291612340565b600885016128ef565b600e8101600e83019080820361169c575b5050600f8101600f830191818303611686575b5050505060ff60401b195f516020612d6d5f395f51905f5254165f516020612d6d5f395f51905f52555160028152a180f35b601092839254905501549101555f808080611654565b806001600160401b03806001600160801b03935416166001600160401b031984541617835554851c16600160401b600160c01b03825491861b1690600160401b600160c01b0319161790555f80611641565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490850180548416918316919091179055600680840154908501805490931691161790555f806115f4565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b03821610156114c2565b50346101cf57806003193601126101cf575f516020612d4d5f395f51905f5254600501546040516001600160a01b039091168152602090f35b3461182a576117cc6117bd3661219b565b6001600160a01b03929161275c565b16803b1561182a576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af191821561181f5760209261180f575b50604051908152f35b5f611819916122a4565b5f611806565b6040513d5f823e3d90fd5b5f80fd5b3461182a57602036600319011261182a576118476121b1565b61184f612729565b5f516020612d4d5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b3461182a575f36600319011261182a5760205f516020612d4d5f395f51905f525454604051908152f35b3461182a576118b83661219b565b9081158015906119f9575b156119be5760115f516020612d4d5f395f51905f52546118e5815415156121e8565b0190805f528160205260ff60405f20541660038110156119aa57611949577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f4915156118c3565b3461182a57604036600319011261182a576004356001600160401b03811161182a57611a3390369060040161216b565b6024356001600160401b03811161182a57611a5290369060040161216b565b90927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6121325760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f516020612d4d5f395f51905f525491611aba835415156121e8565b60605f915b858310156120f6578260051b840135609e198536030181121561182a5784019060028601546040830135036120a357611afb6060830135612a44565b1561204f57949396959291906020611b148183016125bc565b65ffffffffffff60405191611b288361225a565b843583521691829101528135600287015565ffffffffffff19600387015416176003860155611b5a60808201826124fb565b9690946060995f925b89841015611fac578360051b88013560be198936030181121561182a5788019b611b8c8d6123f8565b6001600160a01b03165f90815260128b01602052604090205415611f4f5760068a01548d906001600160a01b03166060611bc5836123f8565b92019182356001600160801b03811680910361182a5760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af1801561181f57611f19575b506001600160a01b03611c298f6123f8565b6040516309ed323560e41b8152602060048201529f9116918f919060e48301906001600160801b0390611c96906001600160a01b03611c67866121c7565b166024870152602085013560448701526001600160a01b03611c8b604087016121c7565b166064870152612a87565b16608484015236829003601e19019060808301358281121561182a57830190602082359201946001600160401b03831161182a57606083023603861361182a57826101049260c060a4840152520193905f905b808210611ecf575050509e9f939495969798999a9b9c9d9e60a08201359081121561182a570190813560208301926001600160401b03821161182a578160051b91823603851361182a578684036023190160c48801528084528694928401602090810194908101925f923682900360de19019290915b828510611dd6575050505050505091815f8160209503925af190811561181f575f91611da4575b50611d93906001926122c5565b9b9a99989796959401929190611b63565b90506020813d8211611dce575b81611dbe602093836122a4565b8101031261182a57516001611d86565b3d9150611db1565b9193959750919395601f1983820301875287358581121561182a57820160208101358252906001600160a01b03611e0f604084016121c7565b1660208201526060820135603e19368490030181121561182a5782602091010191602083359301906001600160401b03841161182a57833603821361182a578360c092836040860152818486015260e08501375f60e085850101526001600160801b03611e7e60808301612a87565b16606084015260a0810135608084015201359163ffffffff60e01b831680930361182a5760e0826020939260019560a086950152601f80199101160101990197019501929091899796959492611d5f565b90919460608060019288358152838060a01b03611eee60208b016121c7565b1660208201526001600160801b03611f0860408b01612a87565b166040820152019601920190611ce9565b6020813d8211611f47575b81611f31602093836122a4565b8101031261182a57518015158114611c17575f80fd5b3d9150611f24565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b96509697509793986001939150916120469260208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ffd602082016125bc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261041e60a6826122a4565b91960191611abf565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b6104d690878661210d9460208151910120906125cf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b3461182a575f36600319011261182a5760209060145f516020612d4d5f395f51905f525401548152f35b9181601f8401121561182a578235916001600160401b03831161182a576020808501948460051b01011161182a57565b604090600319011261182a576004359060243590565b600435906001600160a01b038216820361182a57565b35906001600160a01b038216820361182a57565b9060038210156119aa5752565b156121ef57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b0382111761227557604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761227557604052565b90601f801991011681019081106001600160401b0382111761227557604052565b6020806122f2928195946040519682889351918291018585015e82019083820152030180855201836122a4565b565b156122fb57565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b81811061236f5750506122f2925003836122a4565b84546001600160a01b031683526001948501948794506020909301920161235a565b6001600160401b0381116122755760051b60200190565b91908110156123b85760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156123b85760209160051b010190565b604051906123ed8261225a565b5f6020838281520152565b356001600160a01b038116810361182a5790565b6124235f516020612d4d5f395f51905f52546128d5565b905f5b8381106124365750505050600190565b61244461083d8286856123a8565b6001600160a01b03165f9081526020849052604090205460ff161561246b57600101612426565b505050505f90565b9190820391821161248057565b634e487b7160e01b5f52601160045260245ffd5b8181029291811591840414171561248057565b9291906124b381612391565b936124c160405195866122a4565b602085838152019160051b810192831161182a57905b8282106124e357505050565b602080916124f0846121c7565b8152019101906124d7565b903590601e198136030182121561182a57018035906001600160401b03821161182a57602001918160051b3603831361182a57565b35801515810361182a5790565b5f1981146124805760010190565b6001600160a01b031680156125a9575f516020612d2d5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff8116810361182a5790565b9190916125f36125de826128d5565b9161ffff600760018501549201541690612a22565b9260405190602082019081526020825261260e6040836122a4565b61264a603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f1981018352826122a4565b5190205f925f5b8681101561271e578060051b820135601e198336030181121561182a5782018035906001600160401b03821161182a576020810190823603821361182a57604051906126a7601f8501601f1916602001836122a4565b838252602084369201011161182a575f6020846126d9956126d095838601378301015285612bad565b90929192612be7565b6001600160a01b03165f9081526020859052604090205460ff16612700575b600101612651565b9361270a9061253d565b938585036126f85750505050505050600190565b505050505050505f90565b5f516020612d2d5f395f51905f52546001600160a01b0316330361274957565b63118cdaa760e01b5f523360045260245ffd5b5f516020612d4d5f395f51905f525491612778835415156121e8565b815f526011830160205260ff60405f20541660038110156119aa57600203612834576127d660139160018060a01b036005860154169060405160208101918683526040820152604081526127cd6060826122a4565b51902090612c47565b9260018060a01b0384165f52601281016020528260405f2055016127fa815461253d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161289e81612289565b82815282602082015201526040516128b581612289565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6128de81612a9b565b156128e957600b0190565b60080190565b905f5b6001830190815481101561292f575f91825260208083208201546001600160a01b031683528490526040909120805460ff191690556001016128f2565b50505f5b8151811015612974576001906001600160a01b0361295182856123cc565b5116828060a01b03165f528360205260405f208260ff1982541617905501612933565b50600182018151916001600160401b038311612275576801000000000000000083116122755781548383558084106129e2575b50602001905f5260205f205f5b8381106129c5575050505060020155565b82516001600160a01b0316818301556020909201916001016129b4565b825f528360205f2091820191015b8181106129fd57506129a7565b5f81556001016129f0565b612a1181612a9b565b15612a1c5760080190565b600b0190565b61ffff612a30921690612494565b61270f810180911161248057612710900490565b905f19430143811161248057805b612a5d575b505f9150565b8040838103612a6e57506001925050565b15612a82578015612480575f190180612a52565b612a57565b35906001600160801b038216820361182a57565b600d600a820154910154808214612b3e5780821091421090811590421015918190612b37575b15612ad65782612ad057505090565b14919050565b60405162461bcd60e51b815260206004820152603360248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152720722063757272656e742074696d657374616d7606c1b6064820152608490fd5b5081612ac1565b606460405162461bcd60e51b815260206004820152602060248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c6044820152fd5b60ff5f516020612d6d5f395f51905f525460401c1615612b9e57565b631afcd79f60e31b5f5260045ffd5b8151919060418303612bdd57612bd69250602082015190606060408401519301515f1a90612caa565b9192909190565b50505f9160029190565b60048110156119aa5780612bf9575050565b60018103612c105763f645eedf60e01b5f5260045ffd5b60028103612c2b575063fce698f760e01b5f5260045260245ffd5b600314612c355750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b03821615612c9b57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d21579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561181f575f516001600160a01b03811615612d1757905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207c164a4d4527d17d89e1ed45b36e10a35d32234888a4f4dd101d6ee94fb149e864736f6c634300081c0033","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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/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":69434,"exportedSymbols":{"Clones":[42512],"Gear":[70148],"IMirror":[65178],"IMirrorDecoder":[65215],"IRouter":[65486],"IWrappedVara":[65497],"OwnableUpgradeable":[40332],"ReentrancyGuardTransient":[44307],"Router":[69433],"StorageSlot":[44431]},"nodeType":"SourceUnit","src":"39:16857:120","nodes":[{"id":67881,"nodeType":"PragmaDirective","src":"39:24:120","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67883,"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":69434,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67882,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"73:6:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67885,"nodeType":"ImportDirective","src":"130:42:120","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":69434,"sourceUnit":70149,"symbolAliases":[{"foreign":{"id":67884,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"138:4:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67887,"nodeType":"ImportDirective","src":"173:38:120","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":69434,"sourceUnit":65179,"symbolAliases":[{"foreign":{"id":67886,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"181:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67889,"nodeType":"ImportDirective","src":"212:52:120","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":69434,"sourceUnit":65216,"symbolAliases":[{"foreign":{"id":67888,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"220:14:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67891,"nodeType":"ImportDirective","src":"265:38:120","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":69434,"sourceUnit":65487,"symbolAliases":[{"foreign":{"id":67890,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65486,"src":"273:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67893,"nodeType":"ImportDirective","src":"304:48:120","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":69434,"sourceUnit":65498,"symbolAliases":[{"foreign":{"id":67892,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"312:12:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67895,"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":69434,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":67894,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"361:18:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67897,"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":69434,"sourceUnit":44308,"symbolAliases":[{"foreign":{"id":67896,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"463:24:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67899,"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":69434,"sourceUnit":44432,"symbolAliases":[{"foreign":{"id":67898,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"564:11:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69433,"nodeType":"ContractDefinition","src":"690:16205:120","nodes":[{"id":67908,"nodeType":"VariableDeclaration","src":"871:106:120","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"896:12:120","scope":69433,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"871:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":67907,"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":67916,"nodeType":"FunctionDefinition","src":"1037:53:120","nodes":[],"body":{"id":67915,"nodeType":"Block","src":"1051:39:120","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67912,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1061:20:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67913,"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":67914,"nodeType":"ExpressionStatement","src":"1061:22:120"}]},"documentation":{"id":67909,"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":67910,"nodeType":"ParameterList","parameters":[],"src":"1048:2:120"},"returnParameters":{"id":67911,"nodeType":"ParameterList","parameters":[],"src":"1051:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68028,"nodeType":"FunctionDefinition","src":"1096:1289:120","nodes":[],"body":{"id":68027,"nodeType":"Block","src":"1355:1030:120","nodes":[],"statements":[{"expression":{"arguments":[{"id":67937,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67918,"src":"1380:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67936,"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":67938,"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":67939,"nodeType":"ExpressionStatement","src":"1365:22:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67941,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1512:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":67942,"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":67943,"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":67945,"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":67940,"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":67946,"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":67947,"nodeType":"ExpressionStatement","src":"1504:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67949,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67928,"src":"1594:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67950,"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":67952,"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":67948,"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":67953,"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":67954,"nodeType":"ExpressionStatement","src":"1586:74:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67956,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67926,"src":"1678:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":67957,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67928,"src":"1693:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1678:32:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"657261206475726174696f6e206d7573742062652067726561746572207468616e20656c656374696f6e206475726174696f6e","id":67959,"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":67955,"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":67960,"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":67961,"nodeType":"ExpressionStatement","src":"1670:96:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":67963,"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":67962,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69432,"src":"1777:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67964,"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":67965,"nodeType":"ExpressionStatement","src":"1777:42:120"},{"assignments":[67968],"declarations":[{"constant":false,"id":67968,"mutability":"mutable","name":"router","nameLocation":"1845:6:120","nodeType":"VariableDeclaration","scope":68027,"src":"1829:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67967,"nodeType":"UserDefinedTypeName","pathNode":{"id":67966,"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":67971,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67969,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":67970,"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":67978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67972,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"1874:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67974,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67975,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"1896:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69868,"src":"1896:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69625_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67977,"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_$69625_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1874:39:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67979,"nodeType":"ExpressionStatement","src":"1874:39:120"},{"expression":{"id":67989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67980,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"1923:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67982,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":67985,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67920,"src":"1963:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67986,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67922,"src":"1972:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":67987,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67924,"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":67983,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"1946:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1951:11:120","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":69580,"src":"1946:16:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$69580_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":67988,"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_$69580_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1923:76:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":67990,"nodeType":"ExpressionStatement","src":"1923:76:120"},{"expression":{"id":67998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":67991,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"2009:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67994,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":67995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2035:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69680,"src":"2009:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":67996,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"2064:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":67997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2069:28:120","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":69560,"src":"2064:33:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2009:88:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":67999,"nodeType":"ExpressionStatement","src":"2009:88:120"},{"expression":{"id":68006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68000,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"2107:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68002,"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_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68003,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"2132:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2137:26:120","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":69815,"src":"2132:31:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$69618_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":68005,"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_$69618_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"2107:58:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68007,"nodeType":"ExpressionStatement","src":"2107:58:120"},{"expression":{"id":68016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68008,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"2175:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68010,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68013,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67926,"src":"2209:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":68014,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67928,"src":"2223:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":68011,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"2194:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2199:9:120","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":69678,"src":"2194:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$69678_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":68015,"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_$69678_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"2175:66:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68017,"nodeType":"ExpressionStatement","src":"2175:66:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":68019,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67968,"src":"2310:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68020,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2336:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69683,"src":"2310:37:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage","typeString":"struct Gear.Validators storage ref"}},{"id":68022,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67931,"src":"2349:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":68023,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2362:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68024,"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_$69573_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68018,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69362,"src":"2293:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69573_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68025,"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":68026,"nodeType":"ExpressionStatement","src":"2293:85:120"}]},"functionSelector":"b1669a33","implemented":true,"kind":"function","modifiers":[{"id":67934,"kind":"modifierInvocation","modifierName":{"id":67933,"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":67932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67918,"mutability":"mutable","name":"_owner","nameLocation":"1133:6:120","nodeType":"VariableDeclaration","scope":68028,"src":"1125:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67917,"name":"address","nodeType":"ElementaryTypeName","src":"1125:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67920,"mutability":"mutable","name":"_mirror","nameLocation":"1157:7:120","nodeType":"VariableDeclaration","scope":68028,"src":"1149:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67919,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67922,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1182:12:120","nodeType":"VariableDeclaration","scope":68028,"src":"1174:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67921,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67924,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1212:12:120","nodeType":"VariableDeclaration","scope":68028,"src":"1204:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67923,"name":"address","nodeType":"ElementaryTypeName","src":"1204:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67926,"mutability":"mutable","name":"_eraDuration","nameLocation":"1242:12:120","nodeType":"VariableDeclaration","scope":68028,"src":"1234:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67928,"mutability":"mutable","name":"_electionDuration","nameLocation":"1272:17:120","nodeType":"VariableDeclaration","scope":68028,"src":"1264:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1264:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67931,"mutability":"mutable","name":"_validators","nameLocation":"1318:11:120","nodeType":"VariableDeclaration","scope":68028,"src":"1299:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":67929,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67930,"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":67935,"nodeType":"ParameterList","parameters":[],"src":"1355:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68105,"nodeType":"FunctionDefinition","src":"2391:1409:120","nodes":[],"body":{"id":68104,"nodeType":"Block","src":"2449:1351:120","nodes":[],"statements":[{"assignments":[68038],"declarations":[{"constant":false,"id":68038,"mutability":"mutable","name":"oldRouter","nameLocation":"2475:9:120","nodeType":"VariableDeclaration","scope":68104,"src":"2459:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68037,"nodeType":"UserDefinedTypeName","pathNode":{"id":68036,"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":68041,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68039,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68040,"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":68043,"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":68042,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69432,"src":"2507:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":68044,"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":68045,"nodeType":"ExpressionStatement","src":"2507:42:120"},{"assignments":[68048],"declarations":[{"constant":false,"id":68048,"mutability":"mutable","name":"newRouter","nameLocation":"2575:9:120","nodeType":"VariableDeclaration","scope":68104,"src":"2559:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68047,"nodeType":"UserDefinedTypeName","pathNode":{"id":68046,"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":68051,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68049,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68050,"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":68058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68052,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"2648:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68054,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68055,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"2673:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2678:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69868,"src":"2673:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69625_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":68057,"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_$69625_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2648:42:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68059,"nodeType":"ExpressionStatement","src":"2648:42:120"},{"expression":{"id":68065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68060,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"2816:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68062,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68063,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68038,"src":"2842:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68064,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"2816:49:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68066,"nodeType":"ExpressionStatement","src":"2816:49:120"},{"expression":{"id":68075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68067,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"2942:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68070,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2971:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69680,"src":"2942:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68072,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68038,"src":"3012:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68073,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3041:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69680,"src":"3012:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2942:125:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68076,"nodeType":"ExpressionStatement","src":"2942:125:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":68078,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"3380:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68079,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3409:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69683,"src":"3380:40:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage","typeString":"struct Gear.Validators storage ref"}},{"expression":{"arguments":[{"id":68083,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68038,"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":68081,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"3422:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3427:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"3422:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68084,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3459:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"3422:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":68086,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3465:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68087,"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_$69573_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68077,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69362,"src":"3350:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69573_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68088,"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":68089,"nodeType":"ExpressionStatement","src":"3350:140:120"},{"expression":{"id":68095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68090,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"3559:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68092,"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_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68093,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68038,"src":"3587:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68094,"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_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"3559:53:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68096,"nodeType":"ExpressionStatement","src":"3559:53:120"},{"expression":{"id":68102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68097,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68048,"src":"3670:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68099,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68100,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68038,"src":"3692:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68101,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"src":"3670:41:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68103,"nodeType":"ExpressionStatement","src":"3670:41:120"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":68031,"kind":"modifierInvocation","modifierName":{"id":68030,"name":"onlyOwner","nameLocations":["2422:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"2422:9:120"},"nodeType":"ModifierInvocation","src":"2422:9:120"},{"arguments":[{"hexValue":"32","id":68033,"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":68034,"kind":"modifierInvocation","modifierName":{"id":68032,"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":68029,"nodeType":"ParameterList","parameters":[],"src":"2412:2:120"},"returnParameters":{"id":68035,"nodeType":"ParameterList","parameters":[],"src":"2449:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68116,"nodeType":"FunctionDefinition","src":"3822:109:120","nodes":[],"body":{"id":68115,"nodeType":"Block","src":"3880:51:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68110,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68111,"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":68112,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3920:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"3897:27:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68109,"id":68114,"nodeType":"Return","src":"3890:34:120"}]},"baseFunctions":[65304],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3831:16:120","parameters":{"id":68106,"nodeType":"ParameterList","parameters":[],"src":"3847:2:120"},"returnParameters":{"id":68109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68116,"src":"3871:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3871:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3870:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68127,"nodeType":"FunctionDefinition","src":"3937:113:120","nodes":[],"body":{"id":68126,"nodeType":"Block","src":"3994:56:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68121,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68122,"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":68123,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4034:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69624,"src":"4011:32:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":68120,"id":68125,"nodeType":"Return","src":"4004:39:120"}]},"baseFunctions":[65309],"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"3946:16:120","parameters":{"id":68117,"nodeType":"ParameterList","parameters":[],"src":"3962:2:120"},"returnParameters":{"id":68120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68127,"src":"3986:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":68118,"name":"uint48","nodeType":"ElementaryTypeName","src":"3986:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3985:8:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68138,"nodeType":"FunctionDefinition","src":"4056:125:120","nodes":[],"body":{"id":68137,"nodeType":"Block","src":"4122:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68132,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68133,"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":68134,"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_$69613_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4170:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"4139:35:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68131,"id":68136,"nodeType":"Return","src":"4132:42:120"}]},"baseFunctions":[65314],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"4065:24:120","parameters":{"id":68128,"nodeType":"ParameterList","parameters":[],"src":"4089:2:120"},"returnParameters":{"id":68131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68138,"src":"4113:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68129,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4113:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4112:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68149,"nodeType":"FunctionDefinition","src":"4187:106:120","nodes":[],"body":{"id":68148,"nodeType":"Block","src":"4239:54:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68143,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68144,"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":68145,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4280:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69575,"src":"4256:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68142,"id":68147,"nodeType":"Return","src":"4249:37:120"}]},"baseFunctions":[65319],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"4196:10:120","parameters":{"id":68139,"nodeType":"ParameterList","parameters":[],"src":"4206:2:120"},"returnParameters":{"id":68142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68149,"src":"4230:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68140,"name":"address","nodeType":"ElementaryTypeName","src":"4230:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4229:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68160,"nodeType":"FunctionDefinition","src":"4299:116:120","nodes":[],"body":{"id":68159,"nodeType":"Block","src":"4356:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68154,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68155,"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":68156,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4397:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69577,"src":"4373:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68153,"id":68158,"nodeType":"Return","src":"4366:42:120"}]},"baseFunctions":[65324],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"4308:15:120","parameters":{"id":68150,"nodeType":"ParameterList","parameters":[],"src":"4323:2:120"},"returnParameters":{"id":68153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68160,"src":"4347:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68151,"name":"address","nodeType":"ElementaryTypeName","src":"4347:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4346:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68171,"nodeType":"FunctionDefinition","src":"4421:112:120","nodes":[],"body":{"id":68170,"nodeType":"Block","src":"4474:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68165,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68166,"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":68167,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4515:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69579,"src":"4491:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68164,"id":68169,"nodeType":"Return","src":"4484:42:120"}]},"baseFunctions":[65329],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"4430:11:120","parameters":{"id":68161,"nodeType":"ParameterList","parameters":[],"src":"4441:2:120"},"returnParameters":{"id":68164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68171,"src":"4465:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68162,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4464:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68217,"nodeType":"FunctionDefinition","src":"4539:375:120","nodes":[],"body":{"id":68216,"nodeType":"Block","src":"4621:293:120","nodes":[],"statements":[{"assignments":[68183],"declarations":[{"constant":false,"id":68183,"mutability":"mutable","name":"_currentValidators","nameLocation":"4655:18:120","nodeType":"VariableDeclaration","scope":68216,"src":"4631:42:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68182,"nodeType":"UserDefinedTypeName","pathNode":{"id":68181,"name":"Gear.Validators","nameLocations":["4631:4:120","4636:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69573,"src":"4631:15:120"},"referencedDeclaration":69573,"src":"4631:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68189,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68186,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68187,"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":68184,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"4676:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4681:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"4676:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68188,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4631:81:120"},{"body":{"id":68212,"nodeType":"Block","src":"4772:114:120","statements":[{"condition":{"id":68207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4790:39:120","subExpression":{"baseExpression":{"expression":{"id":68201,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68183,"src":"4791:18:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4810:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69567,"src":"4791:22:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68206,"indexExpression":{"baseExpression":{"id":68203,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68174,"src":"4814:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68205,"indexExpression":{"id":68204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68191,"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":68211,"nodeType":"IfStatement","src":"4786:90:120","trueBody":{"id":68210,"nodeType":"Block","src":"4831:45:120","statements":[{"expression":{"hexValue":"66616c7365","id":68208,"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":68178,"id":68209,"nodeType":"Return","src":"4849:12:120"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68194,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68191,"src":"4743:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68195,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68174,"src":"4747:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68196,"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":68213,"initializationExpression":{"assignments":[68191],"declarations":[{"constant":false,"id":68191,"mutability":"mutable","name":"i","nameLocation":"4736:1:120","nodeType":"VariableDeclaration","scope":68213,"src":"4728:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68190,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68193,"initialValue":{"hexValue":"30","id":68192,"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":68199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4767:3:120","subExpression":{"id":68198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68191,"src":"4767:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68200,"nodeType":"ExpressionStatement","src":"4767:3:120"},"nodeType":"ForStatement","src":"4723:163:120"},{"expression":{"hexValue":"74727565","id":68214,"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":68178,"id":68215,"nodeType":"Return","src":"4896:11:120"}]},"baseFunctions":[65337],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"4548:13:120","parameters":{"id":68175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68174,"mutability":"mutable","name":"_validators","nameLocation":"4581:11:120","nodeType":"VariableDeclaration","scope":68217,"src":"4562:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68172,"name":"address","nodeType":"ElementaryTypeName","src":"4562:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68173,"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":68178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68217,"src":"4615:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68176,"name":"bool","nodeType":"ElementaryTypeName","src":"4615:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4614:6:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68234,"nodeType":"FunctionDefinition","src":"4920:144:120","nodes":[],"body":{"id":68233,"nodeType":"Block","src":"4988:76:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68226,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68227,"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":68224,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"5005:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5010:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"5005:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68228,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5042:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69567,"src":"5005:40:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68231,"indexExpression":{"id":68230,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68219,"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":68223,"id":68232,"nodeType":"Return","src":"4998:59:120"}]},"baseFunctions":[65344],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"4929:11:120","parameters":{"id":68220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68219,"mutability":"mutable","name":"_validator","nameLocation":"4949:10:120","nodeType":"VariableDeclaration","scope":68234,"src":"4941:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68218,"name":"address","nodeType":"ElementaryTypeName","src":"4941:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4940:20:120"},"returnParameters":{"id":68223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68234,"src":"4982:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68221,"name":"bool","nodeType":"ElementaryTypeName","src":"4982:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4981:6:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68245,"nodeType":"FunctionDefinition","src":"5070:146:120","nodes":[],"body":{"id":68244,"nodeType":"Block","src":"5137:79:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68239,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68240,"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":68241,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5183:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69680,"src":"5154:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":68238,"id":68243,"nodeType":"Return","src":"5147:62:120"}]},"baseFunctions":[65349],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"5079:26:120","parameters":{"id":68235,"nodeType":"ParameterList","parameters":[],"src":"5105:2:120"},"returnParameters":{"id":68238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68245,"src":"5129:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":68236,"name":"uint16","nodeType":"ElementaryTypeName","src":"5129:6:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5128:8:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68259,"nodeType":"FunctionDefinition","src":"5222:126:120","nodes":[],"body":{"id":68258,"nodeType":"Block","src":"5283:65:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68253,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68254,"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":68251,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"5300:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5305:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"5300:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68255,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5337:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"5300:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":68250,"id":68257,"nodeType":"Return","src":"5293:48:120"}]},"baseFunctions":[65355],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5231:10:120","parameters":{"id":68246,"nodeType":"ParameterList","parameters":[],"src":"5241:2:120"},"returnParameters":{"id":68250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68259,"src":"5265:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68247,"name":"address","nodeType":"ElementaryTypeName","src":"5265:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68248,"nodeType":"ArrayTypeName","src":"5265:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5264:18:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68273,"nodeType":"FunctionDefinition","src":"5354:129:120","nodes":[],"body":{"id":68272,"nodeType":"Block","src":"5411:72:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68266,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68267,"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":68264,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"5428:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5433:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"5428:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68268,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5465:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"5428:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68270,"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":68263,"id":68271,"nodeType":"Return","src":"5421:55:120"}]},"baseFunctions":[65360],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5363:15:120","parameters":{"id":68260,"nodeType":"ParameterList","parameters":[],"src":"5378:2:120"},"returnParameters":{"id":68263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68273,"src":"5402:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68261,"name":"uint256","nodeType":"ElementaryTypeName","src":"5402:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5401:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68300,"nodeType":"FunctionDefinition","src":"5489:284:120","nodes":[],"body":{"id":68299,"nodeType":"Block","src":"5550:223:120","nodes":[],"statements":[{"assignments":[68282],"declarations":[{"constant":false,"id":68282,"mutability":"mutable","name":"router","nameLocation":"5584:6:120","nodeType":"VariableDeclaration","scope":68299,"src":"5560:30:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68281,"nodeType":"UserDefinedTypeName","pathNode":{"id":68280,"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":68285,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68283,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68284,"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":68290,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68282,"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":68288,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"5657:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5662:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70014,"src":"5657:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68291,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5691:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"5657:38:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68293,"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":68294,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68282,"src":"5704:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68295,"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_$69687_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5730:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69680,"src":"5704:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":68286,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"5619:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5624:19:120","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":70128,"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":68297,"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":68277,"id":68298,"nodeType":"Return","src":"5612:154:120"}]},"baseFunctions":[65365],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"5498:19:120","parameters":{"id":68274,"nodeType":"ParameterList","parameters":[],"src":"5517:2:120"},"returnParameters":{"id":68277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68300,"src":"5541:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68275,"name":"uint256","nodeType":"ElementaryTypeName","src":"5541:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5540:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68311,"nodeType":"FunctionDefinition","src":"5779:130:120","nodes":[],"body":{"id":68310,"nodeType":"Block","src":"5860:49:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68306,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68307,"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":68308,"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_$69618_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":68305,"id":68309,"nodeType":"Return","src":"5870:32:120"}]},"baseFunctions":[65371],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"5788:15:120","parameters":{"id":68301,"nodeType":"ParameterList","parameters":[],"src":"5803:2:120"},"returnParameters":{"id":68305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68311,"src":"5827:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69618_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":68303,"nodeType":"UserDefinedTypeName","pathNode":{"id":68302,"name":"Gear.ComputationSettings","nameLocations":["5827:4:120","5832:19:120"],"nodeType":"IdentifierPath","referencedDeclaration":69618,"src":"5827:24:120"},"referencedDeclaration":69618,"src":"5827:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69618_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"5826:33:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68327,"nodeType":"FunctionDefinition","src":"5915:134:120","nodes":[],"body":{"id":68326,"nodeType":"Block","src":"5988:61:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68319,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68320,"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":68321,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6028:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"6005:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68324,"indexExpression":{"id":68323,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68313,"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_$69608","typeString":"enum Gear.CodeState"}},"functionReturnParameters":68318,"id":68325,"nodeType":"Return","src":"5998:44:120"}]},"baseFunctions":[65379],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"5924:9:120","parameters":{"id":68314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68313,"mutability":"mutable","name":"_codeId","nameLocation":"5942:7:120","nodeType":"VariableDeclaration","scope":68327,"src":"5934:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5934:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:17:120"},"returnParameters":{"id":68318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68327,"src":"5972:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"},"typeName":{"id":68316,"nodeType":"UserDefinedTypeName","pathNode":{"id":68315,"name":"Gear.CodeState","nameLocations":["5972:4:120","5977:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69608,"src":"5972:14:120"},"referencedDeclaration":69608,"src":"5972:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"5971:16:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68385,"nodeType":"FunctionDefinition","src":"6055:378:120","nodes":[],"body":{"id":68384,"nodeType":"Block","src":"6152:281:120","nodes":[],"statements":[{"assignments":[68339],"declarations":[{"constant":false,"id":68339,"mutability":"mutable","name":"router","nameLocation":"6178:6:120","nodeType":"VariableDeclaration","scope":68384,"src":"6162:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68338,"nodeType":"UserDefinedTypeName","pathNode":{"id":68337,"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":68342,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68340,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68341,"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":[68348],"declarations":[{"constant":false,"id":68348,"mutability":"mutable","name":"res","nameLocation":"6231:3:120","nodeType":"VariableDeclaration","scope":68384,"src":"6207:27:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68346,"nodeType":"UserDefinedTypeName","pathNode":{"id":68345,"name":"Gear.CodeState","nameLocations":["6207:4:120","6212:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69608,"src":"6207:14:120"},"referencedDeclaration":69608,"src":"6207:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68347,"nodeType":"ArrayTypeName","src":"6207:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":68356,"initialValue":{"arguments":[{"expression":{"id":68353,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68330,"src":"6258:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68354,"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":68352,"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_$69608_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":68350,"nodeType":"UserDefinedTypeName","pathNode":{"id":68349,"name":"Gear.CodeState","nameLocations":["6241:4:120","6246:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69608,"src":"6241:14:120"},"referencedDeclaration":69608,"src":"6241:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68351,"nodeType":"ArrayTypeName","src":"6241:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":68355,"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_$69608_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6207:68:120"},{"body":{"id":68380,"nodeType":"Block","src":"6333:73:120","statements":[{"expression":{"id":68378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68368,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68348,"src":"6347:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":68370,"indexExpression":{"id":68369,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68358,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68371,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68339,"src":"6356:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68372,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6376:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"6356:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68377,"indexExpression":{"baseExpression":{"id":68374,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68330,"src":"6382:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68376,"indexExpression":{"id":68375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68358,"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_$69608","typeString":"enum Gear.CodeState"}},"src":"6347:48:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68379,"nodeType":"ExpressionStatement","src":"6347:48:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68358,"src":"6306:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68362,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68330,"src":"6310:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68363,"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":68381,"initializationExpression":{"assignments":[68358],"declarations":[{"constant":false,"id":68358,"mutability":"mutable","name":"i","nameLocation":"6299:1:120","nodeType":"VariableDeclaration","scope":68381,"src":"6291:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68357,"name":"uint256","nodeType":"ElementaryTypeName","src":"6291:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68360,"initialValue":{"hexValue":"30","id":68359,"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":68366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6328:3:120","subExpression":{"id":68365,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68358,"src":"6328:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68367,"nodeType":"ExpressionStatement","src":"6328:3:120"},"nodeType":"ForStatement","src":"6286:120:120"},{"expression":{"id":68382,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68348,"src":"6423:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":68336,"id":68383,"nodeType":"Return","src":"6416:10:120"}]},"baseFunctions":[65389],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"6064:11:120","parameters":{"id":68331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68330,"mutability":"mutable","name":"_codesIds","nameLocation":"6095:9:120","nodeType":"VariableDeclaration","scope":68385,"src":"6076:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6076:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68329,"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":68336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68385,"src":"6127:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68333,"nodeType":"UserDefinedTypeName","pathNode":{"id":68332,"name":"Gear.CodeState","nameLocations":["6127:4:120","6132:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69608,"src":"6127:14:120"},"referencedDeclaration":69608,"src":"6127:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68334,"nodeType":"ArrayTypeName","src":"6127:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69608_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"6126:25:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68400,"nodeType":"FunctionDefinition","src":"6439:140:120","nodes":[],"body":{"id":68399,"nodeType":"Block","src":"6512:67:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68392,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68393,"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":68394,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6552:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"6529:31:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68397,"indexExpression":{"id":68396,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68387,"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":68391,"id":68398,"nodeType":"Return","src":"6522:50:120"}]},"baseFunctions":[65396],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"6448:13:120","parameters":{"id":68388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68387,"mutability":"mutable","name":"_programId","nameLocation":"6470:10:120","nodeType":"VariableDeclaration","scope":68400,"src":"6462:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68386,"name":"address","nodeType":"ElementaryTypeName","src":"6462:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6461:20:120"},"returnParameters":{"id":68391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68400,"src":"6503:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68389,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6503:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6502:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68455,"nodeType":"FunctionDefinition","src":"6585:376:120","nodes":[],"body":{"id":68454,"nodeType":"Block","src":"6682:279:120","nodes":[],"statements":[{"assignments":[68411],"declarations":[{"constant":false,"id":68411,"mutability":"mutable","name":"router","nameLocation":"6708:6:120","nodeType":"VariableDeclaration","scope":68454,"src":"6692:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68410,"nodeType":"UserDefinedTypeName","pathNode":{"id":68409,"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":68414,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68412,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68413,"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":[68419],"declarations":[{"constant":false,"id":68419,"mutability":"mutable","name":"res","nameLocation":"6754:3:120","nodeType":"VariableDeclaration","scope":68454,"src":"6737:20:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6737:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68418,"nodeType":"ArrayTypeName","src":"6737:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":68426,"initialValue":{"arguments":[{"expression":{"id":68423,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68403,"src":"6774:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68424,"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":68422,"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":68420,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6764:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68421,"nodeType":"ArrayTypeName","src":"6764:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":68425,"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":68450,"nodeType":"Block","src":"6855:79:120","statements":[{"expression":{"id":68448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68438,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68419,"src":"6869:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":68440,"indexExpression":{"id":68439,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68428,"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":68441,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68411,"src":"6878:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68442,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6898:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"6878:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68447,"indexExpression":{"baseExpression":{"id":68444,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68403,"src":"6907:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68446,"indexExpression":{"id":68445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68428,"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":68449,"nodeType":"ExpressionStatement","src":"6869:54:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68428,"src":"6825:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68432,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68403,"src":"6829:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68433,"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":68451,"initializationExpression":{"assignments":[68428],"declarations":[{"constant":false,"id":68428,"mutability":"mutable","name":"i","nameLocation":"6818:1:120","nodeType":"VariableDeclaration","scope":68451,"src":"6810:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68427,"name":"uint256","nodeType":"ElementaryTypeName","src":"6810:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68430,"initialValue":{"hexValue":"30","id":68429,"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":68436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6850:3:120","subExpression":{"id":68435,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68428,"src":"6850:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68437,"nodeType":"ExpressionStatement","src":"6850:3:120"},"nodeType":"ForStatement","src":"6805:129:120"},{"expression":{"id":68452,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68419,"src":"6951:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":68408,"id":68453,"nodeType":"Return","src":"6944:10:120"}]},"baseFunctions":[65405],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"6594:15:120","parameters":{"id":68404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68403,"mutability":"mutable","name":"_programsIds","nameLocation":"6629:12:120","nodeType":"VariableDeclaration","scope":68455,"src":"6610:31:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68401,"name":"address","nodeType":"ElementaryTypeName","src":"6610:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68402,"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":68408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68455,"src":"6664:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6664:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68406,"nodeType":"ArrayTypeName","src":"6664:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6663:18:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68466,"nodeType":"FunctionDefinition","src":"6967:115:120","nodes":[],"body":{"id":68465,"nodeType":"Block","src":"7022:60:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68460,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68461,"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":68462,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7062:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"7039:36:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68459,"id":68464,"nodeType":"Return","src":"7032:43:120"}]},"baseFunctions":[65410],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"6976:13:120","parameters":{"id":68456,"nodeType":"ParameterList","parameters":[],"src":"6989:2:120"},"returnParameters":{"id":68459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68466,"src":"7013:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68457,"name":"uint256","nodeType":"ElementaryTypeName","src":"7013:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7012:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68477,"nodeType":"FunctionDefinition","src":"7088:127:120","nodes":[],"body":{"id":68476,"nodeType":"Block","src":"7149:66:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68471,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68472,"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":68473,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7189:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69650,"src":"7166:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68470,"id":68475,"nodeType":"Return","src":"7159:49:120"}]},"baseFunctions":[65415],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"7097:19:120","parameters":{"id":68467,"nodeType":"ParameterList","parameters":[],"src":"7116:2:120"},"returnParameters":{"id":68470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68477,"src":"7140:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68468,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7139:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68492,"nodeType":"FunctionDefinition","src":"7241:116:120","nodes":[],"body":{"id":68491,"nodeType":"Block","src":"7298:59:120","nodes":[],"statements":[{"expression":{"id":68489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68484,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68485,"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":68486,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7332:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69575,"src":"7308:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68488,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68479,"src":"7341:9:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7308:42:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68490,"nodeType":"ExpressionStatement","src":"7308:42:120"}]},"baseFunctions":[65420],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":68482,"kind":"modifierInvocation","modifierName":{"id":68481,"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":68480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68479,"mutability":"mutable","name":"newMirror","nameLocation":"7268:9:120","nodeType":"VariableDeclaration","scope":68492,"src":"7260:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68478,"name":"address","nodeType":"ElementaryTypeName","src":"7260:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7259:19:120"},"returnParameters":{"id":68483,"nodeType":"ParameterList","parameters":[],"src":"7298:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68544,"nodeType":"FunctionDefinition","src":"7379:398:120","nodes":[],"body":{"id":68543,"nodeType":"Block","src":"7417:360:120","nodes":[],"statements":[{"assignments":[68497],"declarations":[{"constant":false,"id":68497,"mutability":"mutable","name":"router","nameLocation":"7443:6:120","nodeType":"VariableDeclaration","scope":68543,"src":"7427:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68496,"nodeType":"UserDefinedTypeName","pathNode":{"id":68495,"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":68500,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68498,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68499,"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":68509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68502,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68497,"src":"7480:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68503,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7500:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"7480:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":68507,"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":68506,"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":68505,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7508:7:120","typeDescriptions":{}}},"id":68508,"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":68510,"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":68501,"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":68511,"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":68512,"nodeType":"ExpressionStatement","src":"7472:75:120"},{"assignments":[68514],"declarations":[{"constant":false,"id":68514,"mutability":"mutable","name":"genesisHash","nameLocation":"7566:11:120","nodeType":"VariableDeclaration","scope":68543,"src":"7558:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7558:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68520,"initialValue":{"arguments":[{"expression":{"expression":{"id":68516,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68497,"src":"7590:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68517,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7610:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69622,"src":"7590:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68515,"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":68519,"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":68527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68522,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68514,"src":"7636:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68525,"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":68524,"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":68523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7651:7:120","typeDescriptions":{}}},"id":68526,"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":68528,"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":68521,"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":68529,"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":68530,"nodeType":"ExpressionStatement","src":"7628:67:120"},{"expression":{"id":68541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68531,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68497,"src":"7706:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68534,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7726:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"7706:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":68537,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68497,"src":"7743:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68538,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7763:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69622,"src":"7743:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68536,"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":68540,"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":68542,"nodeType":"ExpressionStatement","src":"7706:64:120"}]},"baseFunctions":[65423],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"7388:17:120","parameters":{"id":68493,"nodeType":"ParameterList","parameters":[],"src":"7405:2:120"},"returnParameters":{"id":68494,"nodeType":"ParameterList","parameters":[],"src":"7417:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68613,"nodeType":"FunctionDefinition","src":"7783:637:120","nodes":[],"body":{"id":68612,"nodeType":"Block","src":"7861:559:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":68560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68552,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68548,"src":"7879:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68553,"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":68559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":68556,"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":68555,"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":68557,"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":68558,"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":68561,"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":68551,"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":68562,"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":68563,"nodeType":"ExpressionStatement","src":"7871:68:120"},{"assignments":[68566],"declarations":[{"constant":false,"id":68566,"mutability":"mutable","name":"router","nameLocation":"7966:6:120","nodeType":"VariableDeclaration","scope":68612,"src":"7950:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68565,"nodeType":"UserDefinedTypeName","pathNode":{"id":68564,"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":68569,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68567,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68568,"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":68578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68571,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68566,"src":"8002:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68572,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8022:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"8002:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68576,"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":68575,"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":68574,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8030:7:120","typeDescriptions":{}}},"id":68577,"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":68579,"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":68570,"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":68580,"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":68581,"nodeType":"ExpressionStatement","src":"7994:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"},"id":68591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68583,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68566,"src":"8133:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68584,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8153:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"8133:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68587,"indexExpression":{"id":68586,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68546,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68588,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"8171:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8176:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69608,"src":"8171:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69608_$","typeString":"type(enum Gear.CodeState)"}},"id":68590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8186:7:120","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":69605,"src":"8171:22:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"src":"8133:60:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":68592,"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":68582,"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":68593,"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":68594,"nodeType":"ExpressionStatement","src":"8112:158:120"},{"expression":{"id":68605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68595,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68566,"src":"8281:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68599,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8301:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"8281:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68601,"indexExpression":{"id":68598,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68546,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68602,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"8318:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8323:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69608,"src":"8318:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69608_$","typeString":"type(enum Gear.CodeState)"}},"id":68604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8333:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69606,"src":"8318:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"src":"8281:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68606,"nodeType":"ExpressionStatement","src":"8281:71:120"},{"eventCall":{"arguments":[{"id":68608,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68546,"src":"8392:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68609,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68548,"src":"8401:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68607,"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":68610,"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":68611,"nodeType":"EmitStatement","src":"8363:50:120"}]},"baseFunctions":[65431],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"7792:21:120","parameters":{"id":68549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68546,"mutability":"mutable","name":"_codeId","nameLocation":"7822:7:120","nodeType":"VariableDeclaration","scope":68613,"src":"7814:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7814:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68548,"mutability":"mutable","name":"_blobTxHash","nameLocation":"7839:11:120","nodeType":"VariableDeclaration","scope":68613,"src":"7831:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68547,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7831:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7813:38:120"},"returnParameters":{"id":68550,"nodeType":"ParameterList","parameters":[],"src":"7861:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68644,"nodeType":"FunctionDefinition","src":"8426:231:120","nodes":[],"body":{"id":68643,"nodeType":"Block","src":"8508:149:120","nodes":[],"statements":[{"assignments":[68623],"declarations":[{"constant":false,"id":68623,"mutability":"mutable","name":"mirror","nameLocation":"8526:6:120","nodeType":"VariableDeclaration","scope":68643,"src":"8518:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68622,"name":"address","nodeType":"ElementaryTypeName","src":"8518:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68628,"initialValue":{"arguments":[{"id":68625,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68615,"src":"8550:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68626,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68617,"src":"8559:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68624,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69099,"src":"8535:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68627,"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":68633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8603:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68634,"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":68637,"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":68636,"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":68635,"name":"address","nodeType":"ElementaryTypeName","src":"8615:7:120","typeDescriptions":{}}},"id":68638,"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":68630,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68623,"src":"8584:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68629,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"8576:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":68631,"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":68632,"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":68639,"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":68640,"nodeType":"ExpressionStatement","src":"8576:50:120"},{"expression":{"id":68641,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68623,"src":"8644:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68621,"id":68642,"nodeType":"Return","src":"8637:13:120"}]},"baseFunctions":[65441],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"8435:13:120","parameters":{"id":68618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68615,"mutability":"mutable","name":"_codeId","nameLocation":"8457:7:120","nodeType":"VariableDeclaration","scope":68644,"src":"8449:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8449:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68617,"mutability":"mutable","name":"_salt","nameLocation":"8474:5:120","nodeType":"VariableDeclaration","scope":68644,"src":"8466:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68616,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8466:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8448:32:120"},"returnParameters":{"id":68621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68644,"src":"8499:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68619,"name":"address","nodeType":"ElementaryTypeName","src":"8499:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8498:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68688,"nodeType":"FunctionDefinition","src":"8663:390:120","nodes":[],"body":{"id":68687,"nodeType":"Block","src":"8798:255:120","nodes":[],"statements":[{"assignments":[68656],"declarations":[{"constant":false,"id":68656,"mutability":"mutable","name":"mirror","nameLocation":"8816:6:120","nodeType":"VariableDeclaration","scope":68687,"src":"8808:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68655,"name":"address","nodeType":"ElementaryTypeName","src":"8808:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68661,"initialValue":{"arguments":[{"id":68658,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68648,"src":"8840:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68659,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68650,"src":"8849:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68657,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69099,"src":"8825:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68660,"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":[68663],"declarations":[{"constant":false,"id":68663,"mutability":"mutable","name":"decoder","nameLocation":"8873:7:120","nodeType":"VariableDeclaration","scope":68687,"src":"8865:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68662,"name":"address","nodeType":"ElementaryTypeName","src":"8865:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68675,"initialValue":{"arguments":[{"id":68665,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68646,"src":"8898:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68669,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68648,"src":"8939:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68670,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68650,"src":"8948:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68667,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8922:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68668,"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":68671,"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":68666,"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":68672,"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":68673,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68656,"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":68664,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69128,"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":68674,"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":68680,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9002:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68681,"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":68682,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68663,"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":68677,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68656,"src":"8983:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68676,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"8975:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":68678,"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":68679,"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":68683,"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":68684,"nodeType":"ExpressionStatement","src":"8975:47:120"},{"expression":{"id":68685,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68656,"src":"9040:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68654,"id":68686,"nodeType":"Return","src":"9033:13:120"}]},"baseFunctions":[65453],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"8672:24:120","parameters":{"id":68651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68646,"mutability":"mutable","name":"_decoderImpl","nameLocation":"8705:12:120","nodeType":"VariableDeclaration","scope":68688,"src":"8697:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68645,"name":"address","nodeType":"ElementaryTypeName","src":"8697:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68648,"mutability":"mutable","name":"_codeId","nameLocation":"8727:7:120","nodeType":"VariableDeclaration","scope":68688,"src":"8719:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68647,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8719:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68650,"mutability":"mutable","name":"_salt","nameLocation":"8744:5:120","nodeType":"VariableDeclaration","scope":68688,"src":"8736:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8736:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8696:54:120"},"returnParameters":{"id":68654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68688,"src":"8785:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68652,"name":"address","nodeType":"ElementaryTypeName","src":"8785:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8784:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68806,"nodeType":"FunctionDefinition","src":"9133:1250:120","nodes":[],"body":{"id":68805,"nodeType":"Block","src":"9244:1139:120","nodes":[],"statements":[{"assignments":[68700],"declarations":[{"constant":false,"id":68700,"mutability":"mutable","name":"router","nameLocation":"9270:6:120","nodeType":"VariableDeclaration","scope":68805,"src":"9254:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68699,"nodeType":"UserDefinedTypeName","pathNode":{"id":68698,"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":68703,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68701,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68702,"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":[68705],"declarations":[{"constant":false,"id":68705,"mutability":"mutable","name":"currentEraIndex","nameLocation":"9307:15:120","nodeType":"VariableDeclaration","scope":68805,"src":"9299:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68704,"name":"uint256","nodeType":"ElementaryTypeName","src":"9299:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68717,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68706,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9326:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68707,"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":68708,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"9344:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68709,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9364:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69624,"src":"9344:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9326:47:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":68712,"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":68713,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"9377:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68714,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9394:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69675,"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":68724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68719,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68692,"src":"9416:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9427:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69585,"src":"9416:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68721,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68705,"src":"9439:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":68722,"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":68725,"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":68718,"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":68726,"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":68727,"nodeType":"ExpressionStatement","src":"9408:97:120"},{"assignments":[68729],"declarations":[{"constant":false,"id":68729,"mutability":"mutable","name":"nextEraStart","nameLocation":"9524:12:120","nodeType":"VariableDeclaration","scope":68805,"src":"9516:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68728,"name":"uint256","nodeType":"ElementaryTypeName","src":"9516:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68740,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68730,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"9539:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68731,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9559:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69624,"src":"9539:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68733,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"9571:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68734,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9588:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69675,"src":"9571:20:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":68736,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68692,"src":"9594:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9605:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69585,"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":68749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68742,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9631:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68743,"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":68748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68744,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68729,"src":"9650:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68745,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"9665:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68746,"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_$69678_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9682:8:120","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":69677,"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":68750,"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":68741,"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":68751,"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":68752,"nodeType":"ExpressionStatement","src":"9623:99:120"},{"assignments":[68757],"declarations":[{"constant":false,"id":68757,"mutability":"mutable","name":"_validators","nameLocation":"9804:11:120","nodeType":"VariableDeclaration","scope":68805,"src":"9780:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68756,"nodeType":"UserDefinedTypeName","pathNode":{"id":68755,"name":"Gear.Validators","nameLocations":["9780:4:120","9785:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69573,"src":"9780:15:120"},"referencedDeclaration":69573,"src":"9780:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68762,"initialValue":{"arguments":[{"id":68760,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"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":68758,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"9818:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9823:21:120","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":70038,"src":"9818:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65258_storage_ptr_$returns$_t_struct$_Validators_$69573_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68761,"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_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9780:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68764,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68757,"src":"9870:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9882:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69572,"src":"9870:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68766,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9901:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68767,"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":68769,"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":68763,"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":68770,"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":68771,"nodeType":"ExpressionStatement","src":"9862:109:120"},{"assignments":[68773],"declarations":[{"constant":false,"id":68773,"mutability":"mutable","name":"commitmentHash","nameLocation":"9990:14:120","nodeType":"VariableDeclaration","scope":68805,"src":"9982:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9982:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68778,"initialValue":{"arguments":[{"id":68776,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68692,"src":"10037:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":68774,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"10007:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10012:24:120","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69713,"src":"10007:29:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$69586_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":68777,"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":68782,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68700,"src":"10103:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":68786,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68773,"src":"10138:14:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68784,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10121:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68785,"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":68787,"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":68783,"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":68788,"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":68789,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68695,"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":68780,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"10079:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10084:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69990,"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":68790,"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":68791,"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":68779,"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":68792,"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":68793,"nodeType":"ExpressionStatement","src":"10058:185:120"},{"expression":{"arguments":[{"id":68795,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68757,"src":"10271:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":68796,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68692,"src":"10284:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10295:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69583,"src":"10284:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":68798,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68729,"src":"10307:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69573_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":68794,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69362,"src":"10254:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69573_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68799,"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":68800,"nodeType":"ExpressionStatement","src":"10254:66:120"},{"eventCall":{"arguments":[{"id":68802,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68729,"src":"10363:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68801,"name":"NextEraValidatorsCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65282,"src":"10336:26:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":68803,"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":68804,"nodeType":"EmitStatement","src":"10331:45:120"}]},"baseFunctions":[65485],"documentation":{"id":68689,"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":68696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68692,"mutability":"mutable","name":"commitment","nameLocation":"9194:10:120","nodeType":"VariableDeclaration","scope":68806,"src":"9159:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":68691,"nodeType":"UserDefinedTypeName","pathNode":{"id":68690,"name":"Gear.ValidatorsCommitment","nameLocations":["9159:4:120","9164:20:120"],"nodeType":"IdentifierPath","referencedDeclaration":69586,"src":"9159:25:120"},"referencedDeclaration":69586,"src":"9159:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69586_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"},{"constant":false,"id":68695,"mutability":"mutable","name":"signatures","nameLocation":"9223:10:120","nodeType":"VariableDeclaration","scope":68806,"src":"9206:27:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68693,"name":"bytes","nodeType":"ElementaryTypeName","src":"9206:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68694,"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":68697,"nodeType":"ParameterList","parameters":[],"src":"9244:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68938,"nodeType":"FunctionDefinition","src":"10389:1336:120","nodes":[],"body":{"id":68937,"nodeType":"Block","src":"10498:1227:120","nodes":[],"statements":[{"assignments":[68818],"declarations":[{"constant":false,"id":68818,"mutability":"mutable","name":"router","nameLocation":"10524:6:120","nodeType":"VariableDeclaration","scope":68937,"src":"10508:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68817,"nodeType":"UserDefinedTypeName","pathNode":{"id":68816,"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":68821,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68819,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68820,"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":68830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68823,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"10560:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68824,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10580:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"10560:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68828,"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":68827,"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":68826,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10588:7:120","typeDescriptions":{}}},"id":68829,"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":68831,"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":68822,"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":68832,"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":68833,"nodeType":"ExpressionStatement","src":"10552:107:120"},{"assignments":[68835],"declarations":[{"constant":false,"id":68835,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"10683:21:120","nodeType":"VariableDeclaration","scope":68937,"src":"10670:34:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68834,"name":"bytes","nodeType":"ElementaryTypeName","src":"10670:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68836,"nodeType":"VariableDeclarationStatement","src":"10670:34:120"},{"body":{"id":68923,"nodeType":"Block","src":"10769:784:120","statements":[{"assignments":[68852],"declarations":[{"constant":false,"id":68852,"mutability":"mutable","name":"codeCommitment","nameLocation":"10812:14:120","nodeType":"VariableDeclaration","scope":68923,"src":"10783:43:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":68851,"nodeType":"UserDefinedTypeName","pathNode":{"id":68850,"name":"Gear.CodeCommitment","nameLocations":["10783:4:120","10788:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69604,"src":"10783:19:120"},"referencedDeclaration":69604,"src":"10783:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":68856,"initialValue":{"baseExpression":{"id":68853,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68810,"src":"10829:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69604_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68855,"indexExpression":{"id":68854,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68838,"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_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"10783:65:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"},"id":68867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68858,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"10888:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68859,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10908:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"10888:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68863,"indexExpression":{"expression":{"id":68861,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"10914:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10929:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69601,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68864,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"10936:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10941:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69608,"src":"10936:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69608_$","typeString":"type(enum Gear.CodeState)"}},"id":68866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10951:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69606,"src":"10936:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"src":"10888:82:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":68868,"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":68857,"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":68869,"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":68870,"nodeType":"ExpressionStatement","src":"10863:194:120"},{"condition":{"expression":{"id":68871,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11076:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11091:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69603,"src":"11076:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":68902,"nodeType":"Block","src":"11267:84:120","statements":[{"expression":{"id":68900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11285:51:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":68894,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"11292:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68895,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11312:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"11292:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68899,"indexExpression":{"expression":{"id":68897,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11318:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11333:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69601,"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_$69608","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68901,"nodeType":"ExpressionStatement","src":"11285:51:120"}]},"id":68903,"nodeType":"IfStatement","src":"11072:279:120","trueBody":{"id":68893,"nodeType":"Block","src":"11098:163:120","statements":[{"expression":{"id":68884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68873,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"11116:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68878,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11136:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"11116:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68880,"indexExpression":{"expression":{"id":68876,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11142:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11157:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69601,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68881,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"11163:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11168:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69608,"src":"11163:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69608_$","typeString":"type(enum Gear.CodeState)"}},"id":68883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11178:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"11163:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"src":"11116:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"id":68885,"nodeType":"ExpressionStatement","src":"11116:71:120"},{"expression":{"id":68891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11205:41:120","subExpression":{"expression":{"expression":{"id":68886,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"11205:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68889,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11225:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69650,"src":"11205:39:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68892,"nodeType":"ExpressionStatement","src":"11205:41:120"}]}},{"eventCall":{"arguments":[{"expression":{"id":68905,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11387:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11402:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69601,"src":"11387:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68907,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11406:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11421:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69603,"src":"11406:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":68904,"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":68909,"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":68910,"nodeType":"EmitStatement","src":"11365:62:120"},{"expression":{"id":68921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68911,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68835,"src":"11442:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68915,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68835,"src":"11479:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68918,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68852,"src":"11526:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$69604_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":68916,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"11502:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11507:18:120","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69803,"src":"11502:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$69604_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":68919,"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":68913,"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":68912,"name":"bytes","nodeType":"ElementaryTypeName","src":"11466:5:120","typeDescriptions":{}}},"id":68914,"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":68920,"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":68922,"nodeType":"ExpressionStatement","src":"11442:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68841,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68838,"src":"10735:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68842,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68810,"src":"10739:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69604_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68843,"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":68924,"initializationExpression":{"assignments":[68838],"declarations":[{"constant":false,"id":68838,"mutability":"mutable","name":"i","nameLocation":"10728:1:120","nodeType":"VariableDeclaration","scope":68924,"src":"10720:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68837,"name":"uint256","nodeType":"ElementaryTypeName","src":"10720:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68840,"initialValue":{"hexValue":"30","id":68839,"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":68846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10764:3:120","subExpression":{"id":68845,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68838,"src":"10764:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68847,"nodeType":"ExpressionStatement","src":"10764:3:120"},"nodeType":"ForStatement","src":"10715:838:120"},{"expression":{"arguments":[{"arguments":[{"id":68928,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68818,"src":"11608:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68930,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68835,"src":"11626:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68929,"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":68931,"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":68932,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68813,"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":68926,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"11584:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":68927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11589:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69990,"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":68933,"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":68934,"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":68925,"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":68935,"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":68936,"nodeType":"ExpressionStatement","src":"11563:155:120"}]},"baseFunctions":[65464],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"10398:11:120","parameters":{"id":68814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68810,"mutability":"mutable","name":"_codeCommitments","nameLocation":"10441:16:120","nodeType":"VariableDeclaration","scope":68938,"src":"10410:47:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69604_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":68808,"nodeType":"UserDefinedTypeName","pathNode":{"id":68807,"name":"Gear.CodeCommitment","nameLocations":["10410:4:120","10415:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69604,"src":"10410:19:120"},"referencedDeclaration":69604,"src":"10410:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69604_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":68809,"nodeType":"ArrayTypeName","src":"10410:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69604_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68813,"mutability":"mutable","name":"_signatures","nameLocation":"10476:11:120","nodeType":"VariableDeclaration","scope":68938,"src":"10459:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68811,"name":"bytes","nodeType":"ElementaryTypeName","src":"10459:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68812,"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":68815,"nodeType":"ParameterList","parameters":[],"src":"10498:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69018,"nodeType":"FunctionDefinition","src":"11731:798:120","nodes":[],"body":{"id":69017,"nodeType":"Block","src":"11876:653:120","nodes":[],"statements":[{"assignments":[68952],"declarations":[{"constant":false,"id":68952,"mutability":"mutable","name":"router","nameLocation":"11902:6:120","nodeType":"VariableDeclaration","scope":69017,"src":"11886:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68951,"nodeType":"UserDefinedTypeName","pathNode":{"id":68950,"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":68955,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68953,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":68954,"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":68964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68957,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"11938:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68958,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11958:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"11938:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68962,"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":68961,"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":68960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11966:7:120","typeDescriptions":{}}},"id":68963,"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":68965,"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":68956,"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":68966,"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":68967,"nodeType":"ExpressionStatement","src":"11930:107:120"},{"assignments":[68969],"declarations":[{"constant":false,"id":68969,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"12061:22:120","nodeType":"VariableDeclaration","scope":69017,"src":"12048:35:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68968,"name":"bytes","nodeType":"ElementaryTypeName","src":"12048:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68970,"nodeType":"VariableDeclarationStatement","src":"12048:35:120"},{"body":{"id":69003,"nodeType":"Block","src":"12149:207:120","statements":[{"assignments":[68986],"declarations":[{"constant":false,"id":68986,"mutability":"mutable","name":"blockCommitment","nameLocation":"12193:15:120","nodeType":"VariableDeclaration","scope":69003,"src":"12163:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":68985,"nodeType":"UserDefinedTypeName","pathNode":{"id":68984,"name":"Gear.BlockCommitment","nameLocations":["12163:4:120","12168:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69599,"src":"12163:20:120"},"referencedDeclaration":69599,"src":"12163:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":68990,"initialValue":{"baseExpression":{"id":68987,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68942,"src":"12211:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69599_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68989,"indexExpression":{"id":68988,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68972,"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_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"12163:68:120"},{"expression":{"id":69001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68991,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68969,"src":"12245:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68995,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68969,"src":"12283:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68997,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"12320:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":68998,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68986,"src":"12328:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_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_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":68996,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69197,"src":"12307:12:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65258_storage_ptr_$_t_struct$_BlockCommitment_$69599_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":68999,"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":68993,"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":68992,"name":"bytes","nodeType":"ElementaryTypeName","src":"12270:5:120","typeDescriptions":{}}},"id":68994,"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":69000,"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":69002,"nodeType":"ExpressionStatement","src":"12245:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68975,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68972,"src":"12114:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68976,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68942,"src":"12118:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69599_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68977,"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":69004,"initializationExpression":{"assignments":[68972],"declarations":[{"constant":false,"id":68972,"mutability":"mutable","name":"i","nameLocation":"12107:1:120","nodeType":"VariableDeclaration","scope":69004,"src":"12099:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68971,"name":"uint256","nodeType":"ElementaryTypeName","src":"12099:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68974,"initialValue":{"hexValue":"30","id":68973,"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":68980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12144:3:120","subExpression":{"id":68979,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68972,"src":"12144:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68981,"nodeType":"ExpressionStatement","src":"12144:3:120"},"nodeType":"ForStatement","src":"12094:262:120"},{"expression":{"arguments":[{"arguments":[{"id":69008,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68952,"src":"12411:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":69010,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68969,"src":"12429:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69009,"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":69011,"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":69012,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68945,"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":69006,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"12387:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":69007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12392:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69990,"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":69013,"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":69014,"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":69005,"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":69015,"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":69016,"nodeType":"ExpressionStatement","src":"12366:156:120"}]},"baseFunctions":[65475],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":68948,"kind":"modifierInvocation","modifierName":{"id":68947,"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":68946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68942,"mutability":"mutable","name":"_blockCommitments","nameLocation":"11785:17:120","nodeType":"VariableDeclaration","scope":69018,"src":"11753:49:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69599_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":68940,"nodeType":"UserDefinedTypeName","pathNode":{"id":68939,"name":"Gear.BlockCommitment","nameLocations":["11753:4:120","11758:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69599,"src":"11753:20:120"},"referencedDeclaration":69599,"src":"11753:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":68941,"nodeType":"ArrayTypeName","src":"11753:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69599_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68945,"mutability":"mutable","name":"_signatures","nameLocation":"11821:11:120","nodeType":"VariableDeclaration","scope":69018,"src":"11804:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68943,"name":"bytes","nodeType":"ElementaryTypeName","src":"11804:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68944,"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":68949,"nodeType":"ParameterList","parameters":[],"src":"11876:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69099,"nodeType":"FunctionDefinition","src":"12571:887:120","nodes":[],"body":{"id":69098,"nodeType":"Block","src":"12653:805:120","nodes":[],"statements":[{"assignments":[69029],"declarations":[{"constant":false,"id":69029,"mutability":"mutable","name":"router","nameLocation":"12679:6:120","nodeType":"VariableDeclaration","scope":69098,"src":"12663:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69028,"nodeType":"UserDefinedTypeName","pathNode":{"id":69027,"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":69032,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69030,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69375,"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":69031,"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":69041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69034,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69029,"src":"12715:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69035,"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_$69625_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12735:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"12715:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69039,"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":69038,"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":69037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12743:7:120","typeDescriptions":{}}},"id":69040,"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":69042,"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":69033,"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":69043,"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":69044,"nodeType":"ExpressionStatement","src":"12707:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"},"id":69054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69046,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69029,"src":"12846:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69047,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12866:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69642,"src":"12846:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69608_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":69050,"indexExpression":{"id":69049,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69020,"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_$69608","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":69051,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"12884:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":69052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12889:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69608,"src":"12884:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69608_$","typeString":"type(enum Gear.CodeState)"}},"id":69053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12899:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"12884:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69608","typeString":"enum Gear.CodeState"}},"src":"12846:62:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":69055,"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":69045,"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":69056,"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":69057,"nodeType":"ExpressionStatement","src":"12825:155:120"},{"assignments":[69059],"declarations":[{"constant":false,"id":69059,"mutability":"mutable","name":"actorId","nameLocation":"13149:7:120","nodeType":"VariableDeclaration","scope":69098,"src":"13141:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69058,"name":"address","nodeType":"ElementaryTypeName","src":"13141:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69073,"initialValue":{"arguments":[{"expression":{"expression":{"id":69062,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69029,"src":"13197:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69063,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13218:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69577,"src":"13197:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":69068,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69020,"src":"13258:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69069,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69022,"src":"13267:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69066,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13241:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69067,"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":69070,"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":69065,"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":69071,"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":69060,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"13171:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69061,"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":69072,"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":69082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":69074,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69029,"src":"13286:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69078,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13306:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"13286:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69080,"indexExpression":{"id":69077,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69059,"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":69081,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69020,"src":"13326:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13286:47:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69083,"nodeType":"ExpressionStatement","src":"13286:47:120"},{"expression":{"id":69089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13343:35:120","subExpression":{"expression":{"expression":{"id":69084,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69029,"src":"13343:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69087,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13363:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"13343:33:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69090,"nodeType":"ExpressionStatement","src":"13343:35:120"},{"eventCall":{"arguments":[{"id":69092,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69059,"src":"13409:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69093,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69020,"src":"13418:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69091,"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":69094,"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":69095,"nodeType":"EmitStatement","src":"13389:37:120"},{"expression":{"id":69096,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69059,"src":"13444:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69026,"id":69097,"nodeType":"Return","src":"13437:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"12580:14:120","parameters":{"id":69023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69020,"mutability":"mutable","name":"_codeId","nameLocation":"12603:7:120","nodeType":"VariableDeclaration","scope":69099,"src":"12595:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69019,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12595:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69022,"mutability":"mutable","name":"_salt","nameLocation":"12620:5:120","nodeType":"VariableDeclaration","scope":69099,"src":"12612:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12612:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12594:32:120"},"returnParameters":{"id":69026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69099,"src":"12644:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69024,"name":"address","nodeType":"ElementaryTypeName","src":"12644:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12643:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69128,"nodeType":"FunctionDefinition","src":"13464:270:120","nodes":[],"body":{"id":69127,"nodeType":"Block","src":"13571:163:120","nodes":[],"statements":[{"assignments":[69111],"declarations":[{"constant":false,"id":69111,"mutability":"mutable","name":"decoder","nameLocation":"13589:7:120","nodeType":"VariableDeclaration","scope":69127,"src":"13581:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69110,"name":"address","nodeType":"ElementaryTypeName","src":"13581:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69117,"initialValue":{"arguments":[{"id":69114,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69101,"src":"13625:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69115,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69103,"src":"13642:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69112,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"13599:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69113,"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":69116,"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":69122,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69105,"src":"13694:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":69119,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69111,"src":"13674:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69118,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65215,"src":"13659:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65215_$","typeString":"type(contract IMirrorDecoder)"}},"id":69120,"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":69121,"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":69123,"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":69124,"nodeType":"ExpressionStatement","src":"13659:43:120"},{"expression":{"id":69125,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69111,"src":"13720:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69109,"id":69126,"nodeType":"Return","src":"13713:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"13473:14:120","parameters":{"id":69106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69101,"mutability":"mutable","name":"_implementation","nameLocation":"13496:15:120","nodeType":"VariableDeclaration","scope":69128,"src":"13488:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69100,"name":"address","nodeType":"ElementaryTypeName","src":"13488:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69103,"mutability":"mutable","name":"_salt","nameLocation":"13521:5:120","nodeType":"VariableDeclaration","scope":69128,"src":"13513:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13513:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69105,"mutability":"mutable","name":"_mirror","nameLocation":"13536:7:120","nodeType":"VariableDeclaration","scope":69128,"src":"13528:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69104,"name":"address","nodeType":"ElementaryTypeName","src":"13528:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13487:57:120"},"returnParameters":{"id":69109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69128,"src":"13562:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69107,"name":"address","nodeType":"ElementaryTypeName","src":"13562:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13561:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69197,"nodeType":"FunctionDefinition","src":"13740:1094:120","nodes":[],"body":{"id":69196,"nodeType":"Block","src":"13880:954:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69140,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69131,"src":"13911:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69141,"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_$69613_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13939:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"13911:32:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":69143,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"13947:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13964:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69592,"src":"13947:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13911:75:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":69146,"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":69139,"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":69147,"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":69148,"nodeType":"ExpressionStatement","src":"13890:159:120"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":69152,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14092:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14109:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69594,"src":"14092:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69150,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"14068:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":69151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14073:18:120","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":69784,"src":"14068:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":69154,"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":69155,"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":69149,"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":69156,"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":69157,"nodeType":"ExpressionStatement","src":"14060:109:120"},{"expression":{"id":69168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69158,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69131,"src":"14309:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69160,"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_$69613_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":69163,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14363:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14380:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69588,"src":"14363:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69165,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14386:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14403:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"14386:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":69161,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"14339:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":69162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14344:18:120","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":69613,"src":"14339:23:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$69613_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":69167,"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_$69613_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"14309:104:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69613_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69169,"nodeType":"ExpressionStatement","src":"14309:104:120"},{"assignments":[69171],"declarations":[{"constant":false,"id":69171,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"14432:21:120","nodeType":"VariableDeclaration","scope":69196,"src":"14424:29:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14424:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69177,"initialValue":{"arguments":[{"id":69173,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69131,"src":"14475:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":69174,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14483:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14500:11:120","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":69598,"src":"14483:28:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69673_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_$69673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":69172,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69282,"src":"14456:18:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65258_storage_ptr_$_t_array$_t_struct$_StateTransition_$69673_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":69176,"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":69179,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14543:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14560:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69588,"src":"14543:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69178,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65263,"src":"14528:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":69181,"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":69182,"nodeType":"EmitStatement","src":"14523:42:120"},{"expression":{"arguments":[{"expression":{"id":69185,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14621:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14638:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69588,"src":"14621:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69187,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14656:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14673:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69590,"src":"14656:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":69189,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14696:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14713:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69592,"src":"14696:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69191,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69134,"src":"14749:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14766:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69594,"src":"14749:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69193,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69171,"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":69183,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70148,"src":"14583:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70148_$","typeString":"type(library Gear)"}},"id":69184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14588:19:120","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69740,"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":69194,"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":69138,"id":69195,"nodeType":"Return","src":"14576:251:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"13749:12:120","parameters":{"id":69135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69131,"mutability":"mutable","name":"router","nameLocation":"13778:6:120","nodeType":"VariableDeclaration","scope":69197,"src":"13762:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69130,"nodeType":"UserDefinedTypeName","pathNode":{"id":69129,"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":69134,"mutability":"mutable","name":"_blockCommitment","nameLocation":"13816:16:120","nodeType":"VariableDeclaration","scope":69197,"src":"13786:46:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69133,"nodeType":"UserDefinedTypeName","pathNode":{"id":69132,"name":"Gear.BlockCommitment","nameLocations":["13786:4:120","13791:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69599,"src":"13786:20:120"},"referencedDeclaration":69599,"src":"13786:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69599_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"13761:72:120"},"returnParameters":{"id":69138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69197,"src":"13867:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13867:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13866:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69282,"nodeType":"FunctionDefinition","src":"14840:839:120","nodes":[],"body":{"id":69281,"nodeType":"Block","src":"14984:695:120","nodes":[],"statements":[{"assignments":[69210],"declarations":[{"constant":false,"id":69210,"mutability":"mutable","name":"transitionsHashes","nameLocation":"15007:17:120","nodeType":"VariableDeclaration","scope":69281,"src":"14994:30:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69209,"name":"bytes","nodeType":"ElementaryTypeName","src":"14994:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":69211,"nodeType":"VariableDeclarationStatement","src":"14994:30:120"},{"body":{"id":69275,"nodeType":"Block","src":"15085:542:120","statements":[{"assignments":[69227],"declarations":[{"constant":false,"id":69227,"mutability":"mutable","name":"transition","nameLocation":"15129:10:120","nodeType":"VariableDeclaration","scope":69275,"src":"15099:40:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":69226,"nodeType":"UserDefinedTypeName","pathNode":{"id":69225,"name":"Gear.StateTransition","nameLocations":["15099:4:120","15104:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69673,"src":"15099:20:120"},"referencedDeclaration":69673,"src":"15099:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":69231,"initialValue":{"baseExpression":{"id":69228,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69204,"src":"15142:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69230,"indexExpression":{"id":69229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69213,"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_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"15099:58:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69233,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69200,"src":"15197:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69234,"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_$69651_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15217:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"15197:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69238,"indexExpression":{"expression":{"id":69236,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69227,"src":"15226:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15237:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69658,"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":69239,"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":69241,"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":69232,"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":69242,"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":69243,"nodeType":"ExpressionStatement","src":"15172:143:120"},{"expression":{"arguments":[{"expression":{"id":69250,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69227,"src":"15386:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15397:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69658,"src":"15386:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":69252,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69227,"src":"15406:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15417:14:120","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69664,"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":69245,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69200,"src":"15343:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69246,"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_$69580_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15364:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69579,"src":"15343:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69244,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65497,"src":"15330:12:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65497_$","typeString":"type(contract IWrappedVara)"}},"id":69248,"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":69249,"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":69254,"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":69255,"nodeType":"ExpressionStatement","src":"15330:102:120"},{"assignments":[69257],"declarations":[{"constant":false,"id":69257,"mutability":"mutable","name":"transitionHash","nameLocation":"15455:14:120","nodeType":"VariableDeclaration","scope":69275,"src":"15447:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69256,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15447:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69265,"initialValue":{"arguments":[{"id":69263,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69227,"src":"15523:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":69259,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69227,"src":"15480:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15491:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69658,"src":"15480:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69258,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65178,"src":"15472:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65178_$","typeString":"type(contract IMirror)"}},"id":69261,"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":69262,"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_$69673_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":69264,"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":69273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69266,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69210,"src":"15549:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69270,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69210,"src":"15582:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":69271,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69257,"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":69268,"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":69267,"name":"bytes","nodeType":"ElementaryTypeName","src":"15569:5:120","typeDescriptions":{}}},"id":69269,"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":69272,"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":69274,"nodeType":"ExpressionStatement","src":"15549:67:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69216,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69213,"src":"15055:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69217,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69204,"src":"15059:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69218,"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":69276,"initializationExpression":{"assignments":[69213],"declarations":[{"constant":false,"id":69213,"mutability":"mutable","name":"i","nameLocation":"15048:1:120","nodeType":"VariableDeclaration","scope":69276,"src":"15040:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69212,"name":"uint256","nodeType":"ElementaryTypeName","src":"15040:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69215,"initialValue":{"hexValue":"30","id":69214,"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":69221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15080:3:120","subExpression":{"id":69220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69213,"src":"15080:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69222,"nodeType":"ExpressionStatement","src":"15080:3:120"},"nodeType":"ForStatement","src":"15035:592:120"},{"expression":{"arguments":[{"id":69278,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69210,"src":"15654:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69277,"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":69279,"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":69208,"id":69280,"nodeType":"Return","src":"15637:35:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"14849:18:120","parameters":{"id":69205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69200,"mutability":"mutable","name":"router","nameLocation":"14884:6:120","nodeType":"VariableDeclaration","scope":69282,"src":"14868:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69199,"nodeType":"UserDefinedTypeName","pathNode":{"id":69198,"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":69204,"mutability":"mutable","name":"_transitions","nameLocation":"14924:12:120","nodeType":"VariableDeclaration","scope":69282,"src":"14892:44:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69673_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":69202,"nodeType":"UserDefinedTypeName","pathNode":{"id":69201,"name":"Gear.StateTransition","nameLocations":["14892:4:120","14897:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69673,"src":"14892:20:120"},"referencedDeclaration":69673,"src":"14892:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69673_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":69203,"nodeType":"ArrayTypeName","src":"14892:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69673_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"14867:70:120"},"returnParameters":{"id":69208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69282,"src":"14971:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14971:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14970:9:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69362,"nodeType":"FunctionDefinition","src":"15685:618:120","nodes":[],"body":{"id":69361,"nodeType":"Block","src":"15846:457:120","nodes":[],"statements":[{"body":{"id":69320,"nodeType":"Block","src":"15910:114:120","statements":[{"assignments":[69306],"declarations":[{"constant":false,"id":69306,"mutability":"mutable","name":"_validator","nameLocation":"15932:10:120","nodeType":"VariableDeclaration","scope":69320,"src":"15924:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69305,"name":"address","nodeType":"ElementaryTypeName","src":"15924:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69311,"initialValue":{"baseExpression":{"expression":{"id":69307,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"15945:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15957:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"15945:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69310,"indexExpression":{"id":69309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"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":69318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69312,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"15978:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15990:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69567,"src":"15978:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69316,"indexExpression":{"id":69314,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69306,"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":69317,"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":69319,"nodeType":"ExpressionStatement","src":"15978:35:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"src":"15876:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":69298,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"15880:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15892:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"15880:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69300,"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":69321,"initializationExpression":{"assignments":[69294],"declarations":[{"constant":false,"id":69294,"mutability":"mutable","name":"i","nameLocation":"15869:1:120","nodeType":"VariableDeclaration","scope":69321,"src":"15861:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69293,"name":"uint256","nodeType":"ElementaryTypeName","src":"15861:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69296,"initialValue":{"hexValue":"30","id":69295,"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":69303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15905:3:120","subExpression":{"id":69302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69294,"src":"15905:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69304,"nodeType":"ExpressionStatement","src":"15905:3:120"},"nodeType":"ForStatement","src":"15856:168:120"},{"body":{"id":69347,"nodeType":"Block","src":"16085:111:120","statements":[{"assignments":[69334],"declarations":[{"constant":false,"id":69334,"mutability":"mutable","name":"_validator","nameLocation":"16107:10:120","nodeType":"VariableDeclaration","scope":69347,"src":"16099:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69333,"name":"address","nodeType":"ElementaryTypeName","src":"16099:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69338,"initialValue":{"baseExpression":{"id":69335,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69288,"src":"16120:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69337,"indexExpression":{"id":69336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69323,"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":69345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69339,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"16151:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16163:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69567,"src":"16151:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69343,"indexExpression":{"id":69341,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69334,"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":69344,"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":69346,"nodeType":"ExpressionStatement","src":"16151:34:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69326,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69323,"src":"16053:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69327,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69288,"src":"16057:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69328,"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":69348,"initializationExpression":{"assignments":[69323],"declarations":[{"constant":false,"id":69323,"mutability":"mutable","name":"i","nameLocation":"16046:1:120","nodeType":"VariableDeclaration","scope":69348,"src":"16038:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69322,"name":"uint256","nodeType":"ElementaryTypeName","src":"16038:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69325,"initialValue":{"hexValue":"30","id":69324,"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":69331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16080:3:120","subExpression":{"id":69330,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69323,"src":"16080:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69332,"nodeType":"ExpressionStatement","src":"16080:3:120"},"nodeType":"ForStatement","src":"16033:163:120"},{"expression":{"id":69353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69349,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"16205:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16217:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69570,"src":"16205:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69352,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69288,"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":69354,"nodeType":"ExpressionStatement","src":"16205:33:120"},{"expression":{"id":69359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69355,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69285,"src":"16248:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16260:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69572,"src":"16248:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69358,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69290,"src":"16279:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16248:48:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69360,"nodeType":"ExpressionStatement","src":"16248:48:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"15694:16:120","parameters":{"id":69291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69285,"mutability":"mutable","name":"_validators","nameLocation":"15744:11:120","nodeType":"VariableDeclaration","scope":69362,"src":"15720:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":69284,"nodeType":"UserDefinedTypeName","pathNode":{"id":69283,"name":"Gear.Validators","nameLocations":["15720:4:120","15725:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69573,"src":"15720:15:120"},"referencedDeclaration":69573,"src":"15720:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69573_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":69288,"mutability":"mutable","name":"_newValidators","nameLocation":"15782:14:120","nodeType":"VariableDeclaration","scope":69362,"src":"15765:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":69286,"name":"address","nodeType":"ElementaryTypeName","src":"15765:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69287,"nodeType":"ArrayTypeName","src":"15765:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":69290,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"15814:17:120","nodeType":"VariableDeclaration","scope":69362,"src":"15806:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69289,"name":"uint256","nodeType":"ElementaryTypeName","src":"15806:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15710:127:120"},"returnParameters":{"id":69292,"nodeType":"ParameterList","parameters":[],"src":"15846:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69375,"nodeType":"FunctionDefinition","src":"16309:192:120","nodes":[],"body":{"id":69374,"nodeType":"Block","src":"16374:127:120","nodes":[],"statements":[{"assignments":[69369],"declarations":[{"constant":false,"id":69369,"mutability":"mutable","name":"slot","nameLocation":"16392:4:120","nodeType":"VariableDeclaration","scope":69374,"src":"16384:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69368,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16384:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69372,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69370,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69387,"src":"16399:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":69371,"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":69366,"isOffset":false,"isSlot":true,"src":"16466:11:120","suffix":"slot","valueSize":1},{"declaration":69369,"isOffset":false,"isSlot":false,"src":"16481:4:120","valueSize":1}],"flags":["memory-safe"],"id":69373,"nodeType":"InlineAssembly","src":"16427:68:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"16318:7:120","parameters":{"id":69363,"nodeType":"ParameterList","parameters":[],"src":"16325:2:120"},"returnParameters":{"id":69367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69366,"mutability":"mutable","name":"router","nameLocation":"16366:6:120","nodeType":"VariableDeclaration","scope":69375,"src":"16350:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65258_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69365,"nodeType":"UserDefinedTypeName","pathNode":{"id":69364,"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":69433,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69387,"nodeType":"FunctionDefinition","src":"16507:128:120","nodes":[],"body":{"id":69386,"nodeType":"Block","src":"16565:70:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":69382,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67908,"src":"16609:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69380,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"16582:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69381,"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":69383,"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":69384,"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":69379,"id":69385,"nodeType":"Return","src":"16575:53:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"16516:15:120","parameters":{"id":69376,"nodeType":"ParameterList","parameters":[],"src":"16531:2:120"},"returnParameters":{"id":69379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69387,"src":"16556:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16556:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16555:9:120"},"scope":69433,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69432,"nodeType":"FunctionDefinition","src":"16641:252:120","nodes":[],"body":{"id":69431,"nodeType":"Block","src":"16709:184:120","nodes":[],"statements":[{"assignments":[69395],"declarations":[{"constant":false,"id":69395,"mutability":"mutable","name":"slot","nameLocation":"16727:4:120","nodeType":"VariableDeclaration","scope":69431,"src":"16719:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16719:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69421,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":69404,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69389,"src":"16779:9:120","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69403,"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":69402,"name":"bytes","nodeType":"ElementaryTypeName","src":"16773:5:120","typeDescriptions":{}}},"id":69405,"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":69401,"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":69406,"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":69400,"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":69399,"name":"uint256","nodeType":"ElementaryTypeName","src":"16755:7:120","typeDescriptions":{}}},"id":69407,"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":69408,"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":69397,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16744:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69398,"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":69410,"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":69396,"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":69411,"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":69419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16800:23:120","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":69416,"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":69415,"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":69414,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:120","typeDescriptions":{}}},"id":69417,"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":69413,"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":69412,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16801:7:120","typeDescriptions":{}}},"id":69418,"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":69429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":69425,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67908,"src":"16860:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69422,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"16833:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69424,"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":69426,"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":69427,"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":69428,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69395,"src":"16882:4:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16833:53:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69430,"nodeType":"ExpressionStatement","src":"16833:53:120"}]},"implemented":true,"kind":"function","modifiers":[{"id":69392,"kind":"modifierInvocation","modifierName":{"id":69391,"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":69390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69389,"mutability":"mutable","name":"namespace","nameLocation":"16680:9:120","nodeType":"VariableDeclaration","scope":69432,"src":"16666:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69388,"name":"string","nodeType":"ElementaryTypeName","src":"16666:6:120","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16665:25:120"},"returnParameters":{"id":69393,"nodeType":"ParameterList","parameters":[],"src":"16709:0:120"},"scope":69433,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67900,"name":"IRouter","nameLocations":["709:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65486,"src":"709:7:120"},"id":67901,"nodeType":"InheritanceSpecifier","src":"709:7:120"},{"baseName":{"id":67902,"name":"OwnableUpgradeable","nameLocations":["718:18:120"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"718:18:120"},"id":67903,"nodeType":"InheritanceSpecifier","src":"718:18:120"},{"baseName":{"id":67904,"name":"ReentrancyGuardTransient","nameLocations":["738:24:120"],"nodeType":"IdentifierPath","referencedDeclaration":44307,"src":"738:24:120"},"id":67905,"nodeType":"InheritanceSpecifier","src":"738:24:120"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69433,44307,40332,41480,40586,65486],"name":"Router","nameLocation":"699:6:120","scope":69434,"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":"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":"_validationDelay","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":"0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6138d4806100d65f395ff3fe608060405234801561000f575f5ffd5b50600436106101e6575f3560e01c80639067088e11610109578063e6fabc091161009e578063edc872251161006e578063edc8722514610436578063efd81abc1461043e578063f2fde38b14610459578063facd743b1461046c575f5ffd5b8063e6fabc0914610400578063e7006a7414610408578063e97d3eb31461041b578063ed612f8c1461042e575f5ffd5b8063c13911e8116100d9578063c13911e8146103a4578063c9f16a11146103c4578063ca1e7819146103cc578063cacf66ab146103e1575f5ffd5b80639067088e1461035657806396a2ddfa14610369578063aaf0fe6a14610371578063baaf020114610384575f5ffd5b8063715018a61161017f57806388f50cf01161014f57806388f50cf0146102f35780638b1edf1e146102fb5780638da5cb5b146103035780638f381dbe14610333575f5ffd5b8063715018a61461028357806382bdeaad1461028b57806384d22a4f146102ab57806385a49eab146102e0575f5ffd5b80633d43b418116101ba5780633d43b41814610235578063527de0f91461024857806365ecfea2146102735780636c2eb3501461027b575f5ffd5b80627a32e7146101ea57806301b1d156146102055780631c149d8a1461021a57806328e24b3d1461022d575b5f5ffd5b6101f261047f565b6040519081526020015b60405180910390f35b610218610213366004612dab565b610491565b005b610218610228366004612e15565b610632565b6101f2610792565b610218610243366004612e4b565b6107a1565b61025b610256366004612e15565b6107d6565b6040516001600160a01b0390911681526020016101fc565b61025b610849565b610218610864565b610218610b34565b61029e610299366004612e64565b610b47565b6040516101fc9190612ed6565b6102b3610c2d565b6040805182516001600160401b031681526020928301516001600160801b031692810192909252016101fc565b6102186102ee366004612f20565b610c7f565b61025b61118d565b6102186111a8565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661025b565b610346610341366004612e64565b61126d565b60405190151581526020016101fc565b6101f2610364366004612e4b565b6112f1565b6101f261131a565b61021861037f366004612fbe565b61132c565b610397610392366004612e64565b61161a565b6040516101fc9190613029565b6103b76103b2366004613060565b6116e7565b6040516101fc9190613077565b6101f2611706565b6103d4611718565b6040516101fc9190613085565b6103e9611784565b60405165ffffffffffff90911681526020016101fc565b61025b6117a5565b61025b6104163660046130c5565b6117c0565b6102186104293660046130f5565b611877565b6101f2611aa9565b6101f2611abe565b610446611aee565b60405161ffff90911681526020016101fc565b610218610467366004612e4b565b611b04565b61034661047a366004612e4b565b611b41565b5f610488611b6e565b60150154919050565b610499611b78565b5f6104a2611b6e565b80549091506104cc5760405162461bcd60e51b81526004016104c390613175565b60405180910390fd5b836105195760405162461bcd60e51b815260206004820152601e60248201527f6e6f20626c6f636b20636f6d6d69746d656e747320746f20636f6d6d6974000060448201526064016104c3565b60605f805b868110156105c05736888883818110610539576105396131d2565b905060200281019061054b91906131e6565b9050836105588683611be5565b60405160200161056992919061321b565b60405160208183030381529060405293508281602001602081019061058e9190613233565b65ffffffffffff1611156105b7576105ac6040820160208301613233565b65ffffffffffff1692505b5060010161051e565b506105d5838380519060200120878785611dcb565b6106215760405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c6564000060448201526064016104c3565b50505061062c612069565b50505050565b8015158061064057505f4915155b6106825760405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b60448201526064016104c3565b5f61068b611b6e565b80549091506106ac5760405162461bcd60e51b81526004016104c390613175565b5f83815260128201602052604081205460ff1660028111156106d0576106d0612ea2565b146107395760405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b60648201526084016104c3565b5f838152601282016020908152604091829020805460ff1916600117905581518581529081018490527f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada396910160405180910390a1505050565b5f61079b611b6e565b54919050565b6107a9612093565b806107b2611b6e565b60040180546001600160a01b0319166001600160a01b039290921691909117905550565b5f5f6107e284846120ee565b60405163485cc95560e01b81523360048201525f60248201529091506001600160a01b0382169063485cc955906044015f604051808303815f87803b158015610829575f5ffd5b505af115801561083b573d5f5f3e3d5ffd5b509293505050505b92915050565b5f610852611b6e565b600501546001600160a01b0316919050565b61086c612093565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806108b5575080546001600160401b03808416911610155b156108d35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781555f6108fd611b6e565b905061093d6040518060400160405280601781526020017f726f757465722e73746f726167652e526f757465725632000000000000000000815250612263565b5f610946611b6e565b90506109506122d5565b80518255602081015160018301805460409093015165ffffffffffff16600160201b0269ffffffffffffffffffff1990931663ffffffff9092169190911791909117905560048281015490820180546001600160a01b03199081166001600160a01b03938416179091556005808501549084018054831691841691909117905560068085015490840180549092169216919091179055600780830154908201805461ffff191661ffff909216919091179055610a7260088201610a128461231e565b600101805480602002602001604051908101604052809291908181526020018280548015610a6757602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a49575b505050505042612329565b600e8083018054918301805467ffffffffffffffff1981166001600160401b03909416938417825591546001600160801b03600160401b9182900416026001600160c01b0319909216909217179055600f808301549082015560108083015490820155601191820154910155805460ff60401b191681556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610b289084906001600160401b0391909116815260200190565b60405180910390a15050565b610b3c612093565b610b455f6123f9565b565b60605f610b52611b6e565b90505f836001600160401b03811115610b6d57610b6d613258565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b5090505f5b84811015610c2457601283015f878784818110610bba57610bba6131d2565b9050602002013581526020019081526020015f205f9054906101000a900460ff16828281518110610bed57610bed6131d2565b60200260200101906002811115610c0657610c06612ea2565b90816002811115610c1957610c19612ea2565b905250600101610b9b565b50949350505050565b604080518082019091525f8082526020820152610c48611b6e565b60408051808201909152600e91909101546001600160401b0381168252600160401b90046001600160801b03166020820152919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610cc35750825b90505f826001600160401b03166001148015610cde5750303b155b905081158015610cec575080155b15610d0a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3457845460ff60401b1916600160401b1785555b610d3d8e612469565b5f4211610d9d5760405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016104c3565b5f8911610dfd5760405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016104c3565b888a11610e685760405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b60648201526084016104c3565b600a610e748a8c613280565b610e7e9190613293565b8810610ecc5760405162461bcd60e51b815260206004820152601b60248201527f76616c69646174696f6e2064656c617920697320746f6f20626967000000000060448201526064016104c3565b610f0a6040518060400160405280601781526020017f726f757465722e73746f726167652e526f757465725631000000000000000000815250612263565b5f610f13611b6e565b9050610f1d6122d5565b815f015f820151815f01556020820151816001015f6101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548165ffffffffffff021916908365ffffffffffff16021790555090505060405180606001604052808f6001600160a01b031681526020018e6001600160a01b031681526020018d6001600160a01b0316815250816004015f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050611a0a816007015f015f6101000a81548161ffff021916908361ffff1602179055506110906040805180820182525f8082526020918201528151808301909252639502f90082526509184e72a0009082015290565b8051600e830180546020938401516001600160801b0316600160401b026001600160c01b03199091166001600160401b0390931692909217919091179055604080516060810182528d81528083018d905281018b9052600f83018d9055601083018c9055601183018b9055805189830281810184019092528981526111369260088501928c918c9182918501908490808284375f92019190915250429250612329915050565b50831561117d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b5f611196611b6e565b600601546001600160a01b0316919050565b5f6111b1611b6e565b8054909150156112035760405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c726561647920736574000000000000000060448201526064016104c3565b600181015463ffffffff16408061125c5760405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e65736973206861736800000060448201526064016104c3565b50600181015463ffffffff16409055565b5f5f61127f61127a611b6e565b61231e565b90505f5b838110156112e657815f86868481811061129f5761129f6131d2565b90506020020160208101906112b49190612e4b565b6001600160a01b0316815260208101919091526040015f205460ff166112de575f92505050610843565b600101611283565b506001949350505050565b5f6112fa611b6e565b6001600160a01b039092165f908152601390920160205250604090205490565b5f611323611b6e565b60140154919050565b5f611335611b6e565b600f81015460018201549192505f9161135d90600160201b900465ffffffffffff1642613280565b6113679190613293565b90506113748160016132b2565b8560200135146113d95760405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b60648201526084016104c3565b600f8201545f906113ef906020880135906132c5565b600184015461140d9190600160201b900465ffffffffffff166132b2565b601084015490915061141f9082613280565b42101561146e5760405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f74207965742073746172746564000000000060448201526064016104c3565b5f6114788461247a565b9050428160020154106114e85760405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b60648201526084016104c3565b5f6114fa6114f589613334565b61249d565b9050611530858260405160200161151391815260200190565b6040516020818303038152906040528051906020012089896124d5565b6115975760405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b60648201526084016104c3565b6115dd826115a58a806133f5565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612329915050565b6040518381527f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b9060200160405180910390a15050505050505050565b60605f611625611b6e565b90505f836001600160401b0381111561164057611640613258565b604051908082528060200260200182016040528015611669578160200160208202803683370190505b5090505f5b84811015610c2457601383015f87878481811061168d5761168d6131d2565b90506020020160208101906116a29190612e4b565b6001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106116d4576116d46131d2565b602090810291909101015260010161166e565b5f6116f0611b6e565b5f92835260120160205250604090205460ff1690565b5f61170f611b6e565b60020154919050565b606061172561127a611b6e565b60010180548060200260200160405190810160405280929190818152602001828054801561177a57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161175c575b5050505050905090565b5f61178d611b6e565b60010154600160201b900465ffffffffffff16919050565b5f6117ae611b6e565b600401546001600160a01b0316919050565b5f5f6117cc84846120ee565b90505f61180b8686866040516020016117ef929190918252602082015260400190565b60405160208183030381529060405280519060200120846124e3565b60405163485cc95560e01b81523360048201526001600160a01b0380831660248301529192509083169063485cc955906044015f604051808303815f87803b158015611855575f5ffd5b505af1158015611867573d5f5f3e3d5ffd5b50939450505050505b9392505050565b5f611880611b6e565b80549091506118a15760405162461bcd60e51b81526004016104c390613175565b60605f5b85811015611a4157368787838181106118c0576118c06131d2565b6040029190910191506001905081355f90815260128601602052604090205460ff1660028111156118f3576118f3612ea2565b1461195e5760405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b60648201526084016104c3565b61196e6040820160208301613447565b156119a95780355f9081526012850160205260408120805460ff191660021790556015850180549161199f83613462565b91905055506119c3565b80355f9081526012850160205260409020805460ff191690555b6119d36040820160208301613447565b60405182358152901515907f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c99060200160405180910390a282611a1582612552565b604051602001611a2692919061321b565b60408051601f198184030181529190529250506001016118a5565b50611a5582828051906020012086866124d5565b611aa15760405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c6564000060448201526064016104c3565b505050505050565b5f611ab561127a611b6e565b60010154919050565b5f5f611ac8611b6e565b9050611ae8611ad68261231e565b60010154600783015461ffff16612584565b91505090565b5f611af7611b6e565b6007015461ffff16919050565b611b0c612093565b6001600160a01b038116611b3557604051631e4fbdf760e01b81525f60048201526024016104c3565b611b3e816123f9565b50565b5f611b4d61127a611b6e565b6001600160a01b039092165f90815260209290925250604090205460ff1690565b5f5f6108436125ac565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611bb857604051633ee5aeb560e01b815260040160405180910390fd5b610b4560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906125d3565b60028201545f90604083013514611c4c5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b60648201526084016104c3565b611c5982606001356125da565b611cb45760405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b60648201526084016104c3565b6040518060400160405280835f01358152602001836020016020810190611cdb9190613233565b65ffffffffffff9081169091528151600286015560209091015160038501805465ffffffffffff1916919092161790555f611d2284611d1d60808601866133f5565b61262c565b604051843581529091507fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e9060200160405180910390a1611dc38335611d6e6040860160208701613233565b6040805160208082019490945260d09290921b6001600160d01b031916828201528681013560468301526060870135606683015260868083018690528151808403909101815260a69092019052805191012090565b949350505050565b5f5f611dd7874261285b565b90508083108015611df557506011870154611df290826132b2565b42105b15611ecd576001870154600160201b900465ffffffffffff16831015611e5d5760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742076616c6964617465206265666f72652067656e65736973000060448201526064016104c3565b600f8701548190611e6e90856132b2565b1015611ec85760405162461bcd60e51b8152602060048201526024808201527f74696d657374616d70206973206f6c646572207468616e2070726576696f75736044820152632065726160e01b60648201526084016104c3565b611f33565b42831115611f275760405162461bcd60e51b815260206004820152602160248201527f74696d657374616d702063616e6e6f7420626520696e207468652066757475726044820152606560f81b60648201526084016104c3565b80831015611f33578092505b5f611f3e8885612894565b600181015460078a01549192505f91611f5b919061ffff16612584565b90505f611f8b89604051602001611f7491815260200190565b60408051601f1981840301815291905230906128b8565b90505f805b8881101561205657365f8b8b84818110611fac57611fac6131d2565b9050602002810190611fbe919061347a565b915091505f61200483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a939250506128ea9050565b6001600160a01b0381165f90815260208a9052604090205490915060ff161561204b578661203186613462565b9550850361204b5760019950505050505050505050612060565b505050600101611f90565b505f955050505050505b95945050505050565b610b455f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00611bdf565b336120c57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b455760405163118cdaa760e01b81523360048201526024016104c3565b5f5f6120f8611b6e565b80549091506121195760405162461bcd60e51b81526004016104c390613175565b60025f85815260128301602052604090205460ff16600281111561213f5761213f612ea2565b146121a35760405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b60648201526084016104c3565b600581015460408051602081018790529081018590525f916121e9916001600160a01b039091169060600160405160208183030381529060405280519060200120612912565b6001600160a01b0381165f90815260138401602052604081208790556014840180549293509061221883613462565b90915550506040516001600160a01b038216815285907f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf19060200160405180910390a2949350505050565b61226b612093565b805160208201205f9060ff199061228490600190613280565b60405160200161229691815260200190565b60408051808303601f190181529190528051602090910120167f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000555050565b604080516060810182525f808252602082018190529181019190915250604080516060810182525f815263ffffffff4316602082015265ffffffffffff42169181019190915290565b5f6108438242612894565b5f5b600184015481101561237d575f84600101828154811061234d5761234d6131d2565b5f9182526020808320909101546001600160a01b0316825286905260409020805460ff191690555060010161232b565b505f5b82518110156123d6575f83828151811061239c5761239c6131d2565b6020908102919091018101516001600160a01b03165f9081529086905260409020805460ff19166001908117909155919091019050612380565b5081516123ec9060018501906020850190612ced565b5060029092019190915550565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61247161291e565b611b3e81612967565b5f612485824261296f565b15612491575060080190565b50600b0190565b919050565b5f815f015182602001516040516020016124b89291906134bc565b604051602081830303815290604052805190602001209050919050565b5f6120608585858542611dcb565b5f5f6124ef8585612912565b60405163189acdbd60e31b81526001600160a01b0385811660048301529192509082169063c4d66de8906024015f604051808303815f87803b158015612533575f5ffd5b505af1158015612545573d5f5f3e3d5ffd5b5092979650505050505050565b5f81356125656040840160208501613447565b6040516020016124b8929190918252151560f81b602082015260210190565b5f61271061259661ffff8416856132c5565b6125a29061270f6132b2565b6118709190613293565b5f7f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e00061079b565b80825d5050565b5f806125e7600143613280565b90505b8015612624578040838103612603575060019392505050565b5f8190036126115750612624565b508061261c816134ff565b9150506125ea565b505f92915050565b5f6060815b8381101561284a573685858381811061264c5761264c6131d2565b905060200281019061265e9190613514565b9050601387015f6126726020840184612e4b565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f5f1b036126fa5760405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b60648201526084016104c3565b60068701546001600160a01b031663a9059cbb61271a6020840184612e4b565b61272a608085016060860161353e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af115801561277b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279f9190613557565b505f6127ae6020830183612e4b565b6001600160a01b0316639ed32350836040518263ffffffff1660e01b81526004016127d99190613773565b6020604051808303815f875af11580156127f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128199190613859565b9050838160405160200161282e92919061321b565b60408051808303601f1901815291905293505050600101612631565b508051602090910120949350505050565b600f8201545f9061286c8484612a65565b61287691906132c5565b60018401546118709190600160201b900465ffffffffffff166132b2565b5f61289f838361296f565b156128ae5750600b8201610843565b5060088201610843565b5f82826040516020016128cc929190613870565b60405160208183030381529060405280519060200120905092915050565b5f5f5f5f6128f88686612a8b565b9250925092506129088282612ad4565b5090949350505050565b5f61187083835f612b90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b4557604051631afcd79f60e31b815260040160405180910390fd5b611b0c61291e565b600a820154600d8301545f91908082036129cb5760405162461bcd60e51b815260206004820181905260248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c60448201526064016104c3565b808210848311158583111581806129df5750805b612a495760405162461bcd60e51b815260206004820152603560248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152740722074686520676976656e2074696d657374616d7605c1b60648201526084016104c3565b828015612a595750801515821515145b98975050505050505050565b600f82015460018301545f91906125a290600160201b900465ffffffffffff1684613280565b5f5f5f8351604103612ac2576020840151604085015160608601515f1a612ab488828585612c25565b955095509550505050612acd565b505081515f91506002905b9250925092565b5f826003811115612ae757612ae7612ea2565b03612af0575050565b6001826003811115612b0457612b04612ea2565b03612b225760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612b3657612b36612ea2565b03612b575760405163fce698f760e01b8152600481018290526024016104c3565b6003826003811115612b6b57612b6b612ea2565b03612b8c576040516335e2f38360e21b8152600481018290526024016104c3565b5050565b5f81471015612bbb5760405163cf47918160e01b8152476004820152602481018390526044016104c3565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c175f526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166118705760405163b06ebf3d60e01b815260040160405180910390fd5b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612c5e57505f91506003905082612ce3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612caf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612cda57505f925060019150829050612ce3565b92505f91508190505b9450945094915050565b828054828255905f5260205f20908101928215612d40579160200282015b82811115612d4057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612d0b565b50612d4c929150612d50565b5090565b5b80821115612d4c575f8155600101612d51565b5f5f83601f840112612d74575f5ffd5b5081356001600160401b03811115612d8a575f5ffd5b6020830191508360208260051b8501011115612da4575f5ffd5b9250929050565b5f5f5f5f60408587031215612dbe575f5ffd5b84356001600160401b03811115612dd3575f5ffd5b612ddf87828801612d64565b90955093505060208501356001600160401b03811115612dfd575f5ffd5b612e0987828801612d64565b95989497509550505050565b5f5f60408385031215612e26575f5ffd5b50508035926020909101359150565b80356001600160a01b0381168114612498575f5ffd5b5f60208284031215612e5b575f5ffd5b61187082612e35565b5f5f60208385031215612e75575f5ffd5b82356001600160401b03811115612e8a575f5ffd5b612e9685828601612d64565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b60038110612ed257634e487b7160e01b5f52602160045260245ffd5b9052565b602080825282518282018190525f918401906040840190835b81811015612f1557612f02838551612eb6565b6020938401939290920191600101612eef565b509095945050505050565b5f5f5f5f5f5f5f5f5f6101008a8c031215612f39575f5ffd5b612f428a612e35565b9850612f5060208b01612e35565b9750612f5e60408b01612e35565b9650612f6c60608b01612e35565b955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115612f9b575f5ffd5b612fa78c828d01612d64565b915080935050809150509295985092959850929598565b5f5f5f60408486031215612fd0575f5ffd5b83356001600160401b03811115612fe5575f5ffd5b840160408187031215612ff6575f5ffd5b925060208401356001600160401b03811115613010575f5ffd5b61301c86828701612d64565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b81811015612f15578351835260209384019390920191600101613042565b5f60208284031215613070575f5ffd5b5035919050565b602081016108438284612eb6565b602080825282518282018190525f918401906040840190835b81811015612f155783516001600160a01b031683526020938401939092019160010161309e565b5f5f5f606084860312156130d7575f5ffd5b6130e084612e35565b95602085013595506040909401359392505050565b5f5f5f5f60408587031215613108575f5ffd5b84356001600160401b0381111561311d575f5ffd5b8501601f8101871361312d575f5ffd5b80356001600160401b03811115613142575f5ffd5b8760208260061b8401011115613156575f5ffd5b6020918201955093508501356001600160401b03811115612dfd575f5ffd5b60208082526038908201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60408201527f6f6b757047656e65736973486173682829602066697273740000000000000000606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f8235609e198336030181126131fa575f5ffd5b9190910192915050565b5f81518060208401855e5f93019283525090919050565b5f6132268285613204565b9283525050602001919050565b5f60208284031215613243575f5ffd5b813565ffffffffffff81168114611870575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156108435761084361326c565b5f826132ad57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108435761084361326c565b80820281158282048414176108435761084361326c565b604080519081016001600160401b03811182821017156132fe576132fe613258565b60405290565b604051601f8201601f191681016001600160401b038111828210171561332c5761332c613258565b604052919050565b5f60408236031215613344575f5ffd5b61334c6132dc565b82356001600160401b03811115613361575f5ffd5b830136601f820112613371575f5ffd5b80356001600160401b0381111561338a5761338a613258565b8060051b61339a60208201613304565b918252602081840181019290810190368411156133b5575f5ffd5b6020850194505b838510156133de576133cd85612e35565b8252602094850194909101906133bc565b855250505050602092830135928101929092525090565b5f5f8335601e1984360301811261340a575f5ffd5b8301803591506001600160401b03821115613423575f5ffd5b6020019150600581901b3603821315612da4575f5ffd5b8015158114611b3e575f5ffd5b5f60208284031215613457575f5ffd5b81356118708161343a565b5f600182016134735761347361326c565b5060010190565b5f5f8335601e1984360301811261348f575f5ffd5b8301803591506001600160401b038211156134a8575f5ffd5b602001915036819003821315612da4575f5ffd5b82515f90829060208601835b828110156134ef5781516001600160a01b03168452602093840193909101906001016134c8565b5050509283525050602001919050565b5f8161350d5761350d61326c565b505f190190565b5f823560be198336030181126131fa575f5ffd5b80356001600160801b0381168114612498575f5ffd5b5f6020828403121561354e575f5ffd5b61187082613528565b5f60208284031215613567575f5ffd5b81516118708161343a565b8183526020830192505f815f5b848110156135d257813586526001600160a01b0361359f60208401612e35565b1660208701526001600160801b036135b960408401613528565b166040870152606095860195919091019060010161357f565b5093949350505050565b5f5f8335601e198436030181126135f1575f5ffd5b83016020810192503590506001600160401b0381111561360f575f5ffd5b8060051b3603821315612da4575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035825260208101356001600160e01b03198116808214613667575f5ffd5b80602085015250505050565b5f8383855260208501945060208460051b820101835f5b8681101561376757838303601f1901885281353687900360be190181126136af575f5ffd5b8601803584526001600160a01b036136c960208301612e35565b1660208501526040810135601e198236030181126136e5575f5ffd5b81016020810190356001600160401b03811115613700575f5ffd5b80360382131561370e575f5ffd5b60c0604087015261372360c087018284613620565b91505061373260608301613528565b6001600160801b031660608601526137506080808701908401613648565b6020998a019990945092909201915060010161368a565b50909695505050505050565b602081526001600160a01b0361378883612e35565b1660208201525f5f602084013590508060408401525060018060a01b036137b160408501612e35565b1660608301526001600160801b036137cb60608501613528565b1660808301526080830135601e198436030181126137e7575f5ffd5b83016020810190356001600160401b03811115613802575f5ffd5b606081023603821315613813575f5ffd5b60c060a085015261382860e085018284613572565b91505061383860a08501856135dc565b848303601f190160c086015261384f838284613673565b9695505050505050565b5f60208284031215613869575f5ffd5b5051919050565b601960f81b8152606083901b6bffffffffffffffffffffffff191660028201525f611dc3601683018461320456fea2646970667358221220227321972e773263104864e3ae68f1f2ed83288465b56ad2fbf3efab6d2ec7d264736f6c634300081c0033","sourceMap":"690:17028:120:-:0;;;1037:53;;;;;;;;;-1:-1:-1;1061:22:120;:20;:22::i;:::-;690:17028;;7711:422:25;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:25;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:25;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:25;-1:-1:-1;;;;;8035:33:25;;;;;8087:29;;158:50:128;;;8087:29:25;;146:2:128;131:18;8087:29:25;;;;;;;7981:146;7760:373;7711:422::o;14:200:128:-;690:17028:120;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106101e6575f3560e01c80639067088e11610109578063e6fabc091161009e578063edc872251161006e578063edc8722514610436578063efd81abc1461043e578063f2fde38b14610459578063facd743b1461046c575f5ffd5b8063e6fabc0914610400578063e7006a7414610408578063e97d3eb31461041b578063ed612f8c1461042e575f5ffd5b8063c13911e8116100d9578063c13911e8146103a4578063c9f16a11146103c4578063ca1e7819146103cc578063cacf66ab146103e1575f5ffd5b80639067088e1461035657806396a2ddfa14610369578063aaf0fe6a14610371578063baaf020114610384575f5ffd5b8063715018a61161017f57806388f50cf01161014f57806388f50cf0146102f35780638b1edf1e146102fb5780638da5cb5b146103035780638f381dbe14610333575f5ffd5b8063715018a61461028357806382bdeaad1461028b57806384d22a4f146102ab57806385a49eab146102e0575f5ffd5b80633d43b418116101ba5780633d43b41814610235578063527de0f91461024857806365ecfea2146102735780636c2eb3501461027b575f5ffd5b80627a32e7146101ea57806301b1d156146102055780631c149d8a1461021a57806328e24b3d1461022d575b5f5ffd5b6101f261047f565b6040519081526020015b60405180910390f35b610218610213366004612dab565b610491565b005b610218610228366004612e15565b610632565b6101f2610792565b610218610243366004612e4b565b6107a1565b61025b610256366004612e15565b6107d6565b6040516001600160a01b0390911681526020016101fc565b61025b610849565b610218610864565b610218610b34565b61029e610299366004612e64565b610b47565b6040516101fc9190612ed6565b6102b3610c2d565b6040805182516001600160401b031681526020928301516001600160801b031692810192909252016101fc565b6102186102ee366004612f20565b610c7f565b61025b61118d565b6102186111a8565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661025b565b610346610341366004612e64565b61126d565b60405190151581526020016101fc565b6101f2610364366004612e4b565b6112f1565b6101f261131a565b61021861037f366004612fbe565b61132c565b610397610392366004612e64565b61161a565b6040516101fc9190613029565b6103b76103b2366004613060565b6116e7565b6040516101fc9190613077565b6101f2611706565b6103d4611718565b6040516101fc9190613085565b6103e9611784565b60405165ffffffffffff90911681526020016101fc565b61025b6117a5565b61025b6104163660046130c5565b6117c0565b6102186104293660046130f5565b611877565b6101f2611aa9565b6101f2611abe565b610446611aee565b60405161ffff90911681526020016101fc565b610218610467366004612e4b565b611b04565b61034661047a366004612e4b565b611b41565b5f610488611b6e565b60150154919050565b610499611b78565b5f6104a2611b6e565b80549091506104cc5760405162461bcd60e51b81526004016104c390613175565b60405180910390fd5b836105195760405162461bcd60e51b815260206004820152601e60248201527f6e6f20626c6f636b20636f6d6d69746d656e747320746f20636f6d6d6974000060448201526064016104c3565b60605f805b868110156105c05736888883818110610539576105396131d2565b905060200281019061054b91906131e6565b9050836105588683611be5565b60405160200161056992919061321b565b60405160208183030381529060405293508281602001602081019061058e9190613233565b65ffffffffffff1611156105b7576105ac6040820160208301613233565b65ffffffffffff1692505b5060010161051e565b506105d5838380519060200120878785611dcb565b6106215760405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c6564000060448201526064016104c3565b50505061062c612069565b50505050565b8015158061064057505f4915155b6106825760405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b60448201526064016104c3565b5f61068b611b6e565b80549091506106ac5760405162461bcd60e51b81526004016104c390613175565b5f83815260128201602052604081205460ff1660028111156106d0576106d0612ea2565b146107395760405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b60648201526084016104c3565b5f838152601282016020908152604091829020805460ff1916600117905581518581529081018490527f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada396910160405180910390a1505050565b5f61079b611b6e565b54919050565b6107a9612093565b806107b2611b6e565b60040180546001600160a01b0319166001600160a01b039290921691909117905550565b5f5f6107e284846120ee565b60405163485cc95560e01b81523360048201525f60248201529091506001600160a01b0382169063485cc955906044015f604051808303815f87803b158015610829575f5ffd5b505af115801561083b573d5f5f3e3d5ffd5b509293505050505b92915050565b5f610852611b6e565b600501546001600160a01b0316919050565b61086c612093565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806108b5575080546001600160401b03808416911610155b156108d35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781555f6108fd611b6e565b905061093d6040518060400160405280601781526020017f726f757465722e73746f726167652e526f757465725632000000000000000000815250612263565b5f610946611b6e565b90506109506122d5565b80518255602081015160018301805460409093015165ffffffffffff16600160201b0269ffffffffffffffffffff1990931663ffffffff9092169190911791909117905560048281015490820180546001600160a01b03199081166001600160a01b03938416179091556005808501549084018054831691841691909117905560068085015490840180549092169216919091179055600780830154908201805461ffff191661ffff909216919091179055610a7260088201610a128461231e565b600101805480602002602001604051908101604052809291908181526020018280548015610a6757602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a49575b505050505042612329565b600e8083018054918301805467ffffffffffffffff1981166001600160401b03909416938417825591546001600160801b03600160401b9182900416026001600160c01b0319909216909217179055600f808301549082015560108083015490820155601191820154910155805460ff60401b191681556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610b289084906001600160401b0391909116815260200190565b60405180910390a15050565b610b3c612093565b610b455f6123f9565b565b60605f610b52611b6e565b90505f836001600160401b03811115610b6d57610b6d613258565b604051908082528060200260200182016040528015610b96578160200160208202803683370190505b5090505f5b84811015610c2457601283015f878784818110610bba57610bba6131d2565b9050602002013581526020019081526020015f205f9054906101000a900460ff16828281518110610bed57610bed6131d2565b60200260200101906002811115610c0657610c06612ea2565b90816002811115610c1957610c19612ea2565b905250600101610b9b565b50949350505050565b604080518082019091525f8082526020820152610c48611b6e565b60408051808201909152600e91909101546001600160401b0381168252600160401b90046001600160801b03166020820152919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610cc35750825b90505f826001600160401b03166001148015610cde5750303b155b905081158015610cec575080155b15610d0a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d3457845460ff60401b1916600160401b1785555b610d3d8e612469565b5f4211610d9d5760405162461bcd60e51b815260206004820152602860248201527f63757272656e742074696d657374616d70206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016104c3565b5f8911610dfd5760405162461bcd60e51b815260206004820152602860248201527f656c656374696f6e206475726174696f6e206d75737420626520677265617465604482015267072207468616e20360c41b60648201526084016104c3565b888a11610e685760405162461bcd60e51b815260206004820152603360248201527f657261206475726174696f6e206d757374206265206772656174657220746861604482015272371032b632b1ba34b7b710323ab930ba34b7b760691b60648201526084016104c3565b600a610e748a8c613280565b610e7e9190613293565b8810610ecc5760405162461bcd60e51b815260206004820152601b60248201527f76616c69646174696f6e2064656c617920697320746f6f20626967000000000060448201526064016104c3565b610f0a6040518060400160405280601781526020017f726f757465722e73746f726167652e526f757465725631000000000000000000815250612263565b5f610f13611b6e565b9050610f1d6122d5565b815f015f820151815f01556020820151816001015f6101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548165ffffffffffff021916908365ffffffffffff16021790555090505060405180606001604052808f6001600160a01b031681526020018e6001600160a01b031681526020018d6001600160a01b0316815250816004015f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050611a0a816007015f015f6101000a81548161ffff021916908361ffff1602179055506110906040805180820182525f8082526020918201528151808301909252639502f90082526509184e72a0009082015290565b8051600e830180546020938401516001600160801b0316600160401b026001600160c01b03199091166001600160401b0390931692909217919091179055604080516060810182528d81528083018d905281018b9052600f83018d9055601083018c9055601183018b9055805189830281810184019092528981526111369260088501928c918c9182918501908490808284375f92019190915250429250612329915050565b50831561117d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b5f611196611b6e565b600601546001600160a01b0316919050565b5f6111b1611b6e565b8054909150156112035760405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c726561647920736574000000000000000060448201526064016104c3565b600181015463ffffffff16408061125c5760405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e65736973206861736800000060448201526064016104c3565b50600181015463ffffffff16409055565b5f5f61127f61127a611b6e565b61231e565b90505f5b838110156112e657815f86868481811061129f5761129f6131d2565b90506020020160208101906112b49190612e4b565b6001600160a01b0316815260208101919091526040015f205460ff166112de575f92505050610843565b600101611283565b506001949350505050565b5f6112fa611b6e565b6001600160a01b039092165f908152601390920160205250604090205490565b5f611323611b6e565b60140154919050565b5f611335611b6e565b600f81015460018201549192505f9161135d90600160201b900465ffffffffffff1642613280565b6113679190613293565b90506113748160016132b2565b8560200135146113d95760405162461bcd60e51b815260206004820152602a60248201527f636f6d6d69746d656e742065726120696e646578206973206e6f74206e657874604482015269040cae4c240d2dcc8caf60b31b60648201526084016104c3565b600f8201545f906113ef906020880135906132c5565b600184015461140d9190600160201b900465ffffffffffff166132b2565b601084015490915061141f9082613280565b42101561146e5760405162461bcd60e51b815260206004820152601b60248201527f656c656374696f6e206973206e6f74207965742073746172746564000000000060448201526064016104c3565b5f6114788461247a565b9050428160020154106114e85760405162461bcd60e51b815260206004820152603260248201527f6c6f6f6b73206c696b652076616c696461746f727320666f72206e65787420656044820152711c9848185c9948185b1c9958591e481cd95d60721b60648201526084016104c3565b5f6114fa6114f589613334565b61249d565b9050611530858260405160200161151391815260200190565b6040516020818303038152906040528051906020012089896124d5565b6115975760405162461bcd60e51b815260206004820152603260248201527f6e657874206572612076616c696461746f7273207369676e6174757265732076604482015271195c9a599a58d85d1a5bdb8819985a5b195960721b60648201526084016104c3565b6115dd826115a58a806133f5565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612329915050565b6040518381527f41e7f919bf726af8aa2ef36bd31905a693013e30c45c6284060e613d4941997b9060200160405180910390a15050505050505050565b60605f611625611b6e565b90505f836001600160401b0381111561164057611640613258565b604051908082528060200260200182016040528015611669578160200160208202803683370190505b5090505f5b84811015610c2457601383015f87878481811061168d5761168d6131d2565b90506020020160208101906116a29190612e4b565b6001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106116d4576116d46131d2565b602090810291909101015260010161166e565b5f6116f0611b6e565b5f92835260120160205250604090205460ff1690565b5f61170f611b6e565b60020154919050565b606061172561127a611b6e565b60010180548060200260200160405190810160405280929190818152602001828054801561177a57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161175c575b5050505050905090565b5f61178d611b6e565b60010154600160201b900465ffffffffffff16919050565b5f6117ae611b6e565b600401546001600160a01b0316919050565b5f5f6117cc84846120ee565b90505f61180b8686866040516020016117ef929190918252602082015260400190565b60405160208183030381529060405280519060200120846124e3565b60405163485cc95560e01b81523360048201526001600160a01b0380831660248301529192509083169063485cc955906044015f604051808303815f87803b158015611855575f5ffd5b505af1158015611867573d5f5f3e3d5ffd5b50939450505050505b9392505050565b5f611880611b6e565b80549091506118a15760405162461bcd60e51b81526004016104c390613175565b60605f5b85811015611a4157368787838181106118c0576118c06131d2565b6040029190910191506001905081355f90815260128601602052604090205460ff1660028111156118f3576118f3612ea2565b1461195e5760405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b60648201526084016104c3565b61196e6040820160208301613447565b156119a95780355f9081526012850160205260408120805460ff191660021790556015850180549161199f83613462565b91905055506119c3565b80355f9081526012850160205260409020805460ff191690555b6119d36040820160208301613447565b60405182358152901515907f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c99060200160405180910390a282611a1582612552565b604051602001611a2692919061321b565b60408051601f198184030181529190529250506001016118a5565b50611a5582828051906020012086866124d5565b611aa15760405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c6564000060448201526064016104c3565b505050505050565b5f611ab561127a611b6e565b60010154919050565b5f5f611ac8611b6e565b9050611ae8611ad68261231e565b60010154600783015461ffff16612584565b91505090565b5f611af7611b6e565b6007015461ffff16919050565b611b0c612093565b6001600160a01b038116611b3557604051631e4fbdf760e01b81525f60048201526024016104c3565b611b3e816123f9565b50565b5f611b4d61127a611b6e565b6001600160a01b039092165f90815260209290925250604090205460ff1690565b5f5f6108436125ac565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611bb857604051633ee5aeb560e01b815260040160405180910390fd5b610b4560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906125d3565b60028201545f90604083013514611c4c5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b60648201526084016104c3565b611c5982606001356125da565b611cb45760405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b60648201526084016104c3565b6040518060400160405280835f01358152602001836020016020810190611cdb9190613233565b65ffffffffffff9081169091528151600286015560209091015160038501805465ffffffffffff1916919092161790555f611d2284611d1d60808601866133f5565b61262c565b604051843581529091507fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e9060200160405180910390a1611dc38335611d6e6040860160208701613233565b6040805160208082019490945260d09290921b6001600160d01b031916828201528681013560468301526060870135606683015260868083018690528151808403909101815260a69092019052805191012090565b949350505050565b5f5f611dd7874261285b565b90508083108015611df557506011870154611df290826132b2565b42105b15611ecd576001870154600160201b900465ffffffffffff16831015611e5d5760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742076616c6964617465206265666f72652067656e65736973000060448201526064016104c3565b600f8701548190611e6e90856132b2565b1015611ec85760405162461bcd60e51b8152602060048201526024808201527f74696d657374616d70206973206f6c646572207468616e2070726576696f75736044820152632065726160e01b60648201526084016104c3565b611f33565b42831115611f275760405162461bcd60e51b815260206004820152602160248201527f74696d657374616d702063616e6e6f7420626520696e207468652066757475726044820152606560f81b60648201526084016104c3565b80831015611f33578092505b5f611f3e8885612894565b600181015460078a01549192505f91611f5b919061ffff16612584565b90505f611f8b89604051602001611f7491815260200190565b60408051601f1981840301815291905230906128b8565b90505f805b8881101561205657365f8b8b84818110611fac57611fac6131d2565b9050602002810190611fbe919061347a565b915091505f61200483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a939250506128ea9050565b6001600160a01b0381165f90815260208a9052604090205490915060ff161561204b578661203186613462565b9550850361204b5760019950505050505050505050612060565b505050600101611f90565b505f955050505050505b95945050505050565b610b455f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00611bdf565b336120c57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b455760405163118cdaa760e01b81523360048201526024016104c3565b5f5f6120f8611b6e565b80549091506121195760405162461bcd60e51b81526004016104c390613175565b60025f85815260128301602052604090205460ff16600281111561213f5761213f612ea2565b146121a35760405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b60648201526084016104c3565b600581015460408051602081018790529081018590525f916121e9916001600160a01b039091169060600160405160208183030381529060405280519060200120612912565b6001600160a01b0381165f90815260138401602052604081208790556014840180549293509061221883613462565b90915550506040516001600160a01b038216815285907f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf19060200160405180910390a2949350505050565b61226b612093565b805160208201205f9060ff199061228490600190613280565b60405160200161229691815260200190565b60408051808303601f190181529190528051602090910120167f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000555050565b604080516060810182525f808252602082018190529181019190915250604080516060810182525f815263ffffffff4316602082015265ffffffffffff42169181019190915290565b5f6108438242612894565b5f5b600184015481101561237d575f84600101828154811061234d5761234d6131d2565b5f9182526020808320909101546001600160a01b0316825286905260409020805460ff191690555060010161232b565b505f5b82518110156123d6575f83828151811061239c5761239c6131d2565b6020908102919091018101516001600160a01b03165f9081529086905260409020805460ff19166001908117909155919091019050612380565b5081516123ec9060018501906020850190612ced565b5060029092019190915550565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61247161291e565b611b3e81612967565b5f612485824261296f565b15612491575060080190565b50600b0190565b919050565b5f815f015182602001516040516020016124b89291906134bc565b604051602081830303815290604052805190602001209050919050565b5f6120608585858542611dcb565b5f5f6124ef8585612912565b60405163189acdbd60e31b81526001600160a01b0385811660048301529192509082169063c4d66de8906024015f604051808303815f87803b158015612533575f5ffd5b505af1158015612545573d5f5f3e3d5ffd5b5092979650505050505050565b5f81356125656040840160208501613447565b6040516020016124b8929190918252151560f81b602082015260210190565b5f61271061259661ffff8416856132c5565b6125a29061270f6132b2565b6118709190613293565b5f7f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e00061079b565b80825d5050565b5f806125e7600143613280565b90505b8015612624578040838103612603575060019392505050565b5f8190036126115750612624565b508061261c816134ff565b9150506125ea565b505f92915050565b5f6060815b8381101561284a573685858381811061264c5761264c6131d2565b905060200281019061265e9190613514565b9050601387015f6126726020840184612e4b565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f5f1b036126fa5760405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b60648201526084016104c3565b60068701546001600160a01b031663a9059cbb61271a6020840184612e4b565b61272a608085016060860161353e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af115801561277b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279f9190613557565b505f6127ae6020830183612e4b565b6001600160a01b0316639ed32350836040518263ffffffff1660e01b81526004016127d99190613773565b6020604051808303815f875af11580156127f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128199190613859565b9050838160405160200161282e92919061321b565b60408051808303601f1901815291905293505050600101612631565b508051602090910120949350505050565b600f8201545f9061286c8484612a65565b61287691906132c5565b60018401546118709190600160201b900465ffffffffffff166132b2565b5f61289f838361296f565b156128ae5750600b8201610843565b5060088201610843565b5f82826040516020016128cc929190613870565b60405160208183030381529060405280519060200120905092915050565b5f5f5f5f6128f88686612a8b565b9250925092506129088282612ad4565b5090949350505050565b5f61187083835f612b90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b4557604051631afcd79f60e31b815260040160405180910390fd5b611b0c61291e565b600a820154600d8301545f91908082036129cb5760405162461bcd60e51b815260206004820181905260248201527f657261732074696d657374616d70206d757374206e6f7420626520657175616c60448201526064016104c3565b808210848311158583111581806129df5750805b612a495760405162461bcd60e51b815260206004820152603560248201527f636f756c64206e6f74206964656e746966792076616c696461746f727320666f6044820152740722074686520676976656e2074696d657374616d7605c1b60648201526084016104c3565b828015612a595750801515821515145b98975050505050505050565b600f82015460018301545f91906125a290600160201b900465ffffffffffff1684613280565b5f5f5f8351604103612ac2576020840151604085015160608601515f1a612ab488828585612c25565b955095509550505050612acd565b505081515f91506002905b9250925092565b5f826003811115612ae757612ae7612ea2565b03612af0575050565b6001826003811115612b0457612b04612ea2565b03612b225760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612b3657612b36612ea2565b03612b575760405163fce698f760e01b8152600481018290526024016104c3565b6003826003811115612b6b57612b6b612ea2565b03612b8c576040516335e2f38360e21b8152600481018290526024016104c3565b5050565b5f81471015612bbb5760405163cf47918160e01b8152476004820152602481018390526044016104c3565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c175f526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166118705760405163b06ebf3d60e01b815260040160405180910390fd5b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612c5e57505f91506003905082612ce3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612caf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612cda57505f925060019150829050612ce3565b92505f91508190505b9450945094915050565b828054828255905f5260205f20908101928215612d40579160200282015b82811115612d4057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612d0b565b50612d4c929150612d50565b5090565b5b80821115612d4c575f8155600101612d51565b5f5f83601f840112612d74575f5ffd5b5081356001600160401b03811115612d8a575f5ffd5b6020830191508360208260051b8501011115612da4575f5ffd5b9250929050565b5f5f5f5f60408587031215612dbe575f5ffd5b84356001600160401b03811115612dd3575f5ffd5b612ddf87828801612d64565b90955093505060208501356001600160401b03811115612dfd575f5ffd5b612e0987828801612d64565b95989497509550505050565b5f5f60408385031215612e26575f5ffd5b50508035926020909101359150565b80356001600160a01b0381168114612498575f5ffd5b5f60208284031215612e5b575f5ffd5b61187082612e35565b5f5f60208385031215612e75575f5ffd5b82356001600160401b03811115612e8a575f5ffd5b612e9685828601612d64565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b60038110612ed257634e487b7160e01b5f52602160045260245ffd5b9052565b602080825282518282018190525f918401906040840190835b81811015612f1557612f02838551612eb6565b6020938401939290920191600101612eef565b509095945050505050565b5f5f5f5f5f5f5f5f5f6101008a8c031215612f39575f5ffd5b612f428a612e35565b9850612f5060208b01612e35565b9750612f5e60408b01612e35565b9650612f6c60608b01612e35565b955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115612f9b575f5ffd5b612fa78c828d01612d64565b915080935050809150509295985092959850929598565b5f5f5f60408486031215612fd0575f5ffd5b83356001600160401b03811115612fe5575f5ffd5b840160408187031215612ff6575f5ffd5b925060208401356001600160401b03811115613010575f5ffd5b61301c86828701612d64565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b81811015612f15578351835260209384019390920191600101613042565b5f60208284031215613070575f5ffd5b5035919050565b602081016108438284612eb6565b602080825282518282018190525f918401906040840190835b81811015612f155783516001600160a01b031683526020938401939092019160010161309e565b5f5f5f606084860312156130d7575f5ffd5b6130e084612e35565b95602085013595506040909401359392505050565b5f5f5f5f60408587031215613108575f5ffd5b84356001600160401b0381111561311d575f5ffd5b8501601f8101871361312d575f5ffd5b80356001600160401b03811115613142575f5ffd5b8760208260061b8401011115613156575f5ffd5b6020918201955093508501356001600160401b03811115612dfd575f5ffd5b60208082526038908201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60408201527f6f6b757047656e65736973486173682829602066697273740000000000000000606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f8235609e198336030181126131fa575f5ffd5b9190910192915050565b5f81518060208401855e5f93019283525090919050565b5f6132268285613204565b9283525050602001919050565b5f60208284031215613243575f5ffd5b813565ffffffffffff81168114611870575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156108435761084361326c565b5f826132ad57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108435761084361326c565b80820281158282048414176108435761084361326c565b604080519081016001600160401b03811182821017156132fe576132fe613258565b60405290565b604051601f8201601f191681016001600160401b038111828210171561332c5761332c613258565b604052919050565b5f60408236031215613344575f5ffd5b61334c6132dc565b82356001600160401b03811115613361575f5ffd5b830136601f820112613371575f5ffd5b80356001600160401b0381111561338a5761338a613258565b8060051b61339a60208201613304565b918252602081840181019290810190368411156133b5575f5ffd5b6020850194505b838510156133de576133cd85612e35565b8252602094850194909101906133bc565b855250505050602092830135928101929092525090565b5f5f8335601e1984360301811261340a575f5ffd5b8301803591506001600160401b03821115613423575f5ffd5b6020019150600581901b3603821315612da4575f5ffd5b8015158114611b3e575f5ffd5b5f60208284031215613457575f5ffd5b81356118708161343a565b5f600182016134735761347361326c565b5060010190565b5f5f8335601e1984360301811261348f575f5ffd5b8301803591506001600160401b038211156134a8575f5ffd5b602001915036819003821315612da4575f5ffd5b82515f90829060208601835b828110156134ef5781516001600160a01b03168452602093840193909101906001016134c8565b5050509283525050602001919050565b5f8161350d5761350d61326c565b505f190190565b5f823560be198336030181126131fa575f5ffd5b80356001600160801b0381168114612498575f5ffd5b5f6020828403121561354e575f5ffd5b61187082613528565b5f60208284031215613567575f5ffd5b81516118708161343a565b8183526020830192505f815f5b848110156135d257813586526001600160a01b0361359f60208401612e35565b1660208701526001600160801b036135b960408401613528565b166040870152606095860195919091019060010161357f565b5093949350505050565b5f5f8335601e198436030181126135f1575f5ffd5b83016020810192503590506001600160401b0381111561360f575f5ffd5b8060051b3603821315612da4575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035825260208101356001600160e01b03198116808214613667575f5ffd5b80602085015250505050565b5f8383855260208501945060208460051b820101835f5b8681101561376757838303601f1901885281353687900360be190181126136af575f5ffd5b8601803584526001600160a01b036136c960208301612e35565b1660208501526040810135601e198236030181126136e5575f5ffd5b81016020810190356001600160401b03811115613700575f5ffd5b80360382131561370e575f5ffd5b60c0604087015261372360c087018284613620565b91505061373260608301613528565b6001600160801b031660608601526137506080808701908401613648565b6020998a019990945092909201915060010161368a565b50909695505050505050565b602081526001600160a01b0361378883612e35565b1660208201525f5f602084013590508060408401525060018060a01b036137b160408501612e35565b1660608301526001600160801b036137cb60608501613528565b1660808301526080830135601e198436030181126137e7575f5ffd5b83016020810190356001600160401b03811115613802575f5ffd5b606081023603821315613813575f5ffd5b60c060a085015261382860e085018284613572565b91505061383860a08501856135dc565b848303601f190160c086015261384f838284613673565b9695505050505050565b5f60208284031215613869575f5ffd5b5051919050565b601960f81b8152606083901b6bffffffffffffffffffffffff191660028201525f611dc3601683018461320456fea2646970667358221220227321972e773263104864e3ae68f1f2ed83288465b56ad2fbf3efab6d2ec7d264736f6c634300081c0033","sourceMap":"690:17028:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7399:127;;;:::i;:::-;;;160:25:128;;;148:2;133:18;7399:127:120;;;;;;;;12042:1310;;;;;;:::i;:::-;;:::i;:::-;;8094:637;;;;;;:::i;:::-;;:::i;4133:109::-;;;:::i;7552:116::-;;;;;;:::i;:::-;;:::i;8737:231::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2526:32:128;;;2508:51;;2496:2;2481:18;8737:231:120;2362:203:128;4610:116:120;;;:::i;2702:1409::-;;;:::i;3155:101:24:-;;;:::i;6366:378:120:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6090:130::-;;;:::i;:::-;;;;4426:13:128;;-1:-1:-1;;;;;4422:38:128;4404:57;;4521:4;4509:17;;;4503:24;-1:-1:-1;;;;;4499:65:128;4477:20;;;4470:95;;;;4377:18;6090:130:120;4182:389:128;1096:1600:120;;;;;;:::i;:::-;;:::i;4732:112::-;;;:::i;7690:398::-;;;:::i;2441:144:24:-;1313:22;2570:8;-1:-1:-1;;;;;2570:8:24;2441:144;;4850:375:120;;;;;;:::i;:::-;;:::i;:::-;;;6328:14:128;;6321:22;6303:41;;6291:2;6276:18;4850:375:120;6163:187:128;6750:140:120;;;;;;:::i;:::-;;:::i;7278:115::-;;;:::i;9444:1250::-;;;;;;:::i;:::-;;:::i;6896:376::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6226:134::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4367:125::-;;;:::i;5533:126::-;;;:::i;:::-;;;;;;;:::i;4248:113::-;;;:::i;:::-;;;9003:14:128;8991:27;;;8973:46;;8961:2;8946:18;4248:113:120;8829:196:128;4498:106:120;;;:::i;8974:390::-;;;;;;:::i;:::-;;:::i;10700:1336::-;;;;;;:::i;:::-;;:::i;5665:129::-;;;:::i;5800:284::-;;;:::i;5381:146::-;;;:::i;:::-;;;10651:6:128;10639:19;;;10621:38;;10609:2;10594:18;5381:146:120;10477:188:128;3405:215:24;;;;;;:::i;:::-;;:::i;5231:144:120:-;;;;;;:::i;:::-;;:::i;7399:127::-;7451:7;7477:9;:7;:9::i;:::-;:42;;;;7399:127;-1:-1:-1;7399:127:120:o;12042:1310::-;1215:21:54;:19;:21::i;:::-;12197:22:120::1;12222:9;:7;:9::i;:::-;12249:24:::0;;12197:34;;-1:-1:-1;12241:107:120::1;;;;-1:-1:-1::0;;;12241:107:120::1;;;;;;;:::i;:::-;;;;;;;;;12367:28:::0;12359:71:::1;;;::::0;-1:-1:-1;;;12359:71:120;;11297:2:128;12359:71:120::1;::::0;::::1;11279:21:128::0;11336:2;11316:18;;;11309:30;11375:32;11355:18;;;11348:60;11425:18;;12359:71:120::1;11095:354:128::0;12359:71:120::1;12441:35;12486:20;::::0;12521:394:::1;12541:28:::0;;::::1;12521:394;;;12590:45;12638:17;;12656:1;12638:20;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;12590:68;;12710:22;12734:37;12747:6;12755:15;12734:12;:37::i;:::-;12697:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12672:100;;12818:12;12790:15;:25;;;;;;;;;;:::i;:::-;:40;;;12786:119;;;12865:25;::::0;;;::::1;::::0;::::1;;:::i;:::-;12850:40;;;;12786:119;-1:-1:-1::0;12571:3:120::1;;12521:394;;;;13194:95;13220:6;13238:22;13228:33;;;;;;13263:11;;13276:12;13194:25;:95::i;:::-;13173:172;;;::::0;-1:-1:-1;;;13173:172:120;;12916:2:128;13173:172:120::1;::::0;::::1;12898:21:128::0;12955:2;12935:18;;;12928:30;12994:32;12974:18;;;12967:60;13044:18;;13173:172:120::1;12714:354:128::0;13173:172:120::1;12187:1165;;;1257:20:54::0;:18;:20::i;:::-;12042:1310:120;;;;:::o;8094:637::-;8190:16;;;;:36;;-1:-1:-1;8219:1:120;8210:11;:16;;8190:36;8182:68;;;;-1:-1:-1;;;8182:68:120;;13275:2:128;8182:68:120;;;13257:21:128;13314:2;13294:18;;;13287:30;-1:-1:-1;;;13333:18:128;;;13326:49;13392:18;;8182:68:120;13073:343:128;8182:68:120;8261:22;8286:9;:7;:9::i;:::-;8313:24;;8261:34;;-1:-1:-1;8305:107:120;;;;-1:-1:-1;;;8305:107:120;;;;;;;:::i;:::-;8482:22;8444:34;;;:19;;;:34;;;;;;;;:60;;;;;;;;:::i;:::-;;8423:158;;;;-1:-1:-1;;;8423:158:120;;13623:2:128;8423:158:120;;;13605:21:128;13662:2;13642:18;;;13635:30;13701:34;13681:18;;;13674:62;-1:-1:-1;;;13752:18:128;;;13745:49;13811:19;;8423:158:120;13421:415:128;8423:158:120;8592:25;:34;;;:19;;;:34;;;;;;;;;:71;;-1:-1:-1;;8592:71:120;8629:34;8592:71;;;8679:45;;14015:25:128;;;14056:18;;;14049:34;;;8679:45:120;;13988:18:128;8679:45:120;;;;;;;8172:559;8094:637;;:::o;4133:109::-;4182:7;4208:9;:7;:9::i;:::-;:27;;4133:109;-1:-1:-1;4133:109:120:o;7552:116::-;2334:13:24;:11;:13::i;:::-;7652:9:120::1;7619;:7;:9::i;:::-;:23;;:42:::0;;-1:-1:-1;;;;;;7619:42:120::1;-1:-1:-1::0;;;;;7619:42:120;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;7552:116:120:o;8737:231::-;8810:7;8829:14;8846:30;8861:7;8870:5;8846:14;:30::i;:::-;8887:50;;-1:-1:-1;;;8887:50:120;;8914:10;8887:50;;;14268:51:128;8934:1:120;14335:18:128;;;14328:60;8829:47:120;;-1:-1:-1;;;;;;8887:26:120;;;;;14241:18:128;;8887:50:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8955:6:120;;-1:-1:-1;;;;8737:231:120;;;;;:::o;4610:116::-;4658:7;4684:9;:7;:9::i;:::-;:35;;;-1:-1:-1;;;;;4684:35:120;;4610:116;-1:-1:-1;4610:116:120:o;2702:1409::-;2334:13:24;:11;:13::i;:::-;8870:21:25;6431:15;;2757:1:120::1;::::0;8870:21:25;-1:-1:-1;;;6431:15:25;::::1;;;::::0;:44:::1;;-1:-1:-1::0;6450:14:25;;-1:-1:-1;;;;;6450:25:25;;::::1;:14:::0;::::1;:25;;6431:44;6427:105;;;6498:23;;-1:-1:-1::0;;;6498:23:25::1;;;;;;;;;;;6427:105;6541:24:::0;;-1:-1:-1;;6575:22:25;-1:-1:-1;;;;;6541:24:25;::::1;6575:22:::0;-1:-1:-1;;;6575:22:25::1;::::0;;6541:14:::1;2798:9:120::2;:7;:9::i;:::-;2770:37;;2818:42;;;;;;;;;;;;;;;;;::::0;:15:::2;:42::i;:::-;2870:25;2898:9;:7;:9::i;:::-;2870:37;;2984:17;:15;:17::i;:::-;2959:42:::0;;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;;::::2;::::0;::::2;;-1:-1:-1::0;;;2959:42:120::2;-1:-1:-1::0;;2959:42:120;;;::::2;::::0;;::::2;::::0;;;;;;;::::2;::::0;;::::2;3153:23:::0;;::::2;3127:49:::0;:23;;::::2;:49:::0;;-1:-1:-1;;;;;;3127:49:120;;::::2;-1:-1:-1::0;;;;;3127:49:120;;::::2;;::::0;;;;;;;;;;;;;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;;;;;;;;;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;3323:28:::2;::::0;;::::2;:55:::0;3253:28;;::::2;:125:::0;;-1:-1:-1;;3253:125:120::2;3323:55;::::0;;::::2;3253:125:::0;;;::::2;::::0;;3661:140:::2;3691:40:::0;;;3733:36:::2;3153:9:::0;3733:25:::2;:36::i;:::-;:41;;3661:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;3661:140:120::2;::::0;;;;;::::2;::::0;::::2;;::::0;;::::2;;;;;;;;;3776:15;3661:16;:140::i;:::-;3898:25;::::0;;::::2;3870:53:::0;;:25;;::::2;:53:::0;;-1:-1:-1;;3870:53:120;::::2;-1:-1:-1::0;;;;;3870:53:120;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;;;;;;3870:53:120;;;::::2;;;-1:-1:-1::0;;;;;;3870:53:120;;;;;;::::2;::::0;;4003:19:::2;::::0;;::::2;3981:41:::0;:19;;::::2;:41:::0;;;;;;;;;;;;;;;;;;6618:23:25;;-1:-1:-1;;;;6618:23:25::1;::::0;;6656:20:::1;::::0;::::1;::::0;::::1;::::0;6668:7;;-1:-1:-1;;;;;14561:31:128;;;;14543:50;;14531:2;14516:18;;14399:200;6656:20:25::1;;;;;;;;6291:392;2357:1:24;2702:1409:120:o:0;3155:101:24:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;6366:378:120:-;6438:23;6473:22;6498:9;:7;:9::i;:::-;6473:34;-1:-1:-1;6518:27:120;6569:9;-1:-1:-1;;;;;6548:38:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6548:38:120;-1:-1:-1;6518:68:120;-1:-1:-1;6602:9:120;6597:120;6617:20;;;6597:120;;;6667:19;;;:25;6693:9;;6703:1;6693:12;;;;;;;:::i;:::-;;;;;;;6667:39;;;;;;;;;;;;;;;;;;;;;6658:3;6662:1;6658:6;;;;;;;;:::i;:::-;;;;;;:48;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;6639:3:120;;6597:120;;;-1:-1:-1;6734:3:120;6366:378;-1:-1:-1;;;;6366:378:120:o;6090:130::-;-1:-1:-1;;;;;;;;;;;;;;;;;6188:9:120;:7;:9::i;:::-;6181:32;;;;;;;;;6188:25;;;;;6181:32;-1:-1:-1;;;;;6181:32:120;;;;-1:-1:-1;;;6181:32:120;;-1:-1:-1;;;;;6181:32:120;;;;;;;-1:-1:-1;6090:130:120:o;1096:1600::-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;1399:22:120::1;1414:6;1399:14;:22::i;:::-;1564:1;1546:15;:19;1538:72;;;::::0;-1:-1:-1;;;1538:72:120;;14938:2:128;1538:72:120::1;::::0;::::1;14920:21:128::0;14977:2;14957:18;;;14950:30;15016:34;14996:18;;;14989:62;-1:-1:-1;;;15067:18:128;;;15060:38;15115:19;;1538:72:120::1;14736:404:128::0;1538:72:120::1;1648:1;1628:17;:21;1620:74;;;::::0;-1:-1:-1;;;1620:74:120;;15347:2:128;1620:74:120::1;::::0;::::1;15329:21:128::0;15386:2;15366:18;;;15359:30;15425:34;15405:18;;;15398:62;-1:-1:-1;;;15476:18:128;;;15469:38;15524:19;;1620:74:120::1;15145:404:128::0;1620:74:120::1;1727:17;1712:12;:32;1704:96;;;::::0;-1:-1:-1;;;1704:96:120;;15756:2:128;1704:96:120::1;::::0;::::1;15738:21:128::0;15795:2;15775:18;;;15768:30;15834:34;15814:18;;;15807:62;-1:-1:-1;;;15885:18:128;;;15878:49;15944:19;;1704:96:120::1;15554:415:128::0;1704:96:120::1;2025:2;1989:32;2004:17:::0;1989:12;:32:::1;:::i;:::-;1988:39;;;;:::i;:::-;1969:16;:58;1961:98;;;::::0;-1:-1:-1;;;1961:98:120;;16663:2:128;1961:98:120::1;::::0;::::1;16645:21:128::0;16702:2;16682:18;;;16675:30;16741:29;16721:18;;;16714:57;16788:18;;1961:98:120::1;16461:351:128::0;1961:98:120::1;2070:42;;;;;;;;;;;;;;;;;::::0;:15:::1;:42::i;:::-;2122:22;2147:9;:7;:9::i;:::-;2122:34;;2189:17;:15;:17::i;:::-;2167:6;:19;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:53;;;;;;;;2256:7;-1:-1:-1::0;;;;;2239:53:120::1;;;;;2265:12;-1:-1:-1::0;;;;;2239:53:120::1;;;;;2279:12;-1:-1:-1::0;;;;;2239:53:120::1;;;::::0;2216:6:::1;:20;;:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;-1:-1:-1::0;;;;;2216:76:120::1;;;;;;;;;577:4:122;2302:6:120;:25;;:52;;;:88;;;;;;;;;;;;;;;;;;2425:33;-1:-1:-1::0;;;;;;;;;;;;;;;;;4161:60:122;;;;;;;;447:13;4161:60;;674:18;4161:60;;;;;4055:173;2425:33:120::1;2400:58:::0;;:22:::1;::::0;::::1;:58:::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;2400:58:120::1;-1:-1:-1::0;;;2400:58:120::1;-1:-1:-1::0;;;;;;2400:58:120;;;-1:-1:-1;;;;;2400:58:120;;::::1;::::0;;;;;;;::::1;::::0;;2487:65:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;2468:16:::1;::::0;::::1;:84:::0;;;;;;;;;;;;;;;2604:85;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;2400:58:::1;2621:37:::0;;;2660:11;;;;;;2604:85;::::1;::::0;2660:11;;2604:85;2660:11;2604:85;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;2673:15:120::1;::::0;-1:-1:-1;2604:16:120::1;::::0;-1:-1:-1;;2604:85:120:i:1;:::-;1389:1307;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;14543:50:128;;5142:14:25;;14531:2:128;14516:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;1096:1600:120;;;;;;;;;:::o;4732:112::-;4776:7;4802:9;:7;:9::i;:::-;:35;;;-1:-1:-1;;;;;4802:35:120;;4732:112;-1:-1:-1;4732:112:120:o;7690:398::-;7738:22;7763:9;:7;:9::i;:::-;7791:24;;7738:34;;-1:-1:-1;7791:38:120;7783:75;;;;-1:-1:-1;;;7783:75:120;;17233:2:128;7783:75:120;;;17215:21:128;17272:2;17252:18;;;17245:30;17311:26;17291:18;;;17284:54;17355:18;;7783:75:120;17031:348:128;7783:75:120;7901:26;;;;;;7891:37;;7939:67;;;;-1:-1:-1;;;7939:67:120;;17586:2:128;7939:67:120;;;17568:21:128;17625:2;17605:18;;;17598:30;17664:31;17644:18;;;17637:59;17713:18;;7939:67:120;17384:353:128;7939:67:120;-1:-1:-1;8054:26:120;;;;;;8044:37;8017:64;;7690:398::o;4850:375::-;4926:4;4942:42;4987:36;5013:9;:7;:9::i;:::-;4987:25;:36::i;:::-;4942:81;-1:-1:-1;5039:9:120;5034:163;5054:22;;;5034:163;;;5102:18;:22;5125:11;;5137:1;5125:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5102:38:120;;;;;;;;;;;;-1:-1:-1;5102:38:120;;;;5097:90;;5167:5;5160:12;;;;;;5097:90;5078:3;;5034:163;;;-1:-1:-1;5214:4:120;;4850:375;-1:-1:-1;;;;4850:375:120:o;6750:140::-;6814:7;6840:9;:7;:9::i;:::-;-1:-1:-1;;;;;6840:43:120;;;;;;;:31;;;;:43;;-1:-1:-1;6840:43:120;;;;;6750:140::o;7278:115::-;7324:7;7350:9;:7;:9::i;:::-;:36;;;;7278:115;-1:-1:-1;7278:115:120:o;9444:1250::-;9565:22;9590:9;:7;:9::i;:::-;9688:16;;;:20;9655:29;;;;9688:16;;-1:-1:-1;9610:23:120;;9637:47;;-1:-1:-1;;;9655:29:120;;;;9637:15;:47;:::i;:::-;9636:72;;;;:::i;:::-;9610:98;-1:-1:-1;9750:19:120;9610:98;9768:1;9750:19;:::i;:::-;9727:10;:19;;;:42;9719:97;;;;-1:-1:-1;;;9719:97:120;;18074:2:128;9719:97:120;;;18056:21:128;18113:2;18093:18;;;18086:30;18152:34;18132:18;;;18125:62;-1:-1:-1;;;18203:18:128;;;18196:40;18253:19;;9719:97:120;17872:406:128;9719:97:120;9882:16;;;:20;9827;;9882:42;;9905:19;;;;;9882:42;:::i;:::-;9850:29;;;;:74;;;-1:-1:-1;;;9850:29:120;;;;:74;:::i;:::-;9976:25;;;;9827:97;;-1:-1:-1;9961:40:120;;9827:97;9961:40;:::i;:::-;9942:15;:59;;9934:99;;;;-1:-1:-1;;;9934:99:120;;18658:2:128;9934:99:120;;;18640:21:128;18697:2;18677:18;;;18670:30;18736:29;18716:18;;;18709:57;18783:18;;9934:99:120;18456:351:128;9934:99:120;10091:35;10129:34;10156:6;10129:26;:34::i;:::-;10091:72;;10212:15;10181:11;:28;;;:46;10173:109;;;;-1:-1:-1;;;10173:109:120;;19014:2:128;10173:109:120;;;18996:21:128;19053:2;19033:18;;;19026:30;19092:34;19072:18;;;19065:62;-1:-1:-1;;;19143:18:128;;;19136:48;19201:19;;10173:109:120;18812:414:128;10173:109:120;10293:22;10318:41;;10348:10;10318:41;:::i;:::-;:29;:41::i;:::-;10293:66;;10390:88;10414:6;10449:14;10432:32;;;;;;21122:19:128;;21166:2;21157:12;;20993:182;10432:32:120;;;;;;;;;;;;;10422:43;;;;;;10467:10;;10390:23;:88::i;:::-;10369:185;;;;-1:-1:-1;;;10369:185:120;;21382:2:128;10369:185:120;;;21364:21:128;21421:2;21401:18;;;21394:30;21460:34;21440:18;;;21433:62;-1:-1:-1;;;21511:18:128;;;21504:48;21569:19;;10369:185:120;21180:414:128;10369:185:120;10565:66;10582:11;10595:21;:10;;:21;:::i;:::-;10565:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10618:12:120;;-1:-1:-1;10565:16:120;;-1:-1:-1;;10565:66:120:i;:::-;10647:40;;160:25:128;;;10647:40:120;;148:2:128;133:18;10647:40:120;;;;;;;9555:1139;;;;;9444:1250;;;:::o;6896:376::-;6975:16;7003:22;7028:9;:7;:9::i;:::-;7003:34;-1:-1:-1;7048:20:120;7085:12;-1:-1:-1;;;;;7071:34:120;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7071:34:120;-1:-1:-1;7048:57:120;-1:-1:-1;7121:9:120;7116:129;7136:23;;;7116:129;;;7189:28;;;:45;7218:12;;7231:1;7218:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7189:45:120;-1:-1:-1;;;;;7189:45:120;;;;;;;;;;;;;7180:3;7184:1;7180:6;;;;;;;;:::i;:::-;;;;;;;;;;:54;7161:3;;7116:129;;6226:134;6283:14;6316:9;:7;:9::i;:::-;:28;:37;;;:22;;:37;;-1:-1:-1;6316:37:120;;;;;;;6226:134::o;4367:125::-;4424:7;4450:9;:7;:9::i;:::-;:30;;:35;;4367:125;-1:-1:-1;4367:125:120:o;5533:126::-;5576:16;5611:36;5637:9;:7;:9::i;5611:36::-;:41;;5604:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5604:48:120;;;;;;;;;;;;;;;;;;;;;;;5533:126;:::o;4248:113::-;4297:6;4322:9;:7;:9::i;:::-;:32;;;-1:-1:-1;;;4322:32:120;;;;;;-1:-1:-1;4248:113:120:o;4498:106::-;4541:7;4567:9;:7;:9::i;:::-;:23;;:30;-1:-1:-1;;;;;4567:30:120;;4498:106;-1:-1:-1;4498:106:120:o;8974:390::-;9096:7;9119:14;9136:30;9151:7;9160:5;9136:14;:30::i;:::-;9119:47;;9176:15;9194:81;9209:12;9250:7;9259:5;9233:32;;;;;;;;22306:19:128;;;22350:2;22341:12;;22334:28;22387:2;22378:12;;22149:247;9233:32:120;;;;;;;;;;;;;9223:43;;;;;;9268:6;9194:14;:81::i;:::-;9286:47;;-1:-1:-1;;;9286:47:120;;9313:10;9286:47;;;14268:51:128;-1:-1:-1;;;;;14355:32:128;;;14335:18;;;14328:60;9176:99:120;;-1:-1:-1;9286:26:120;;;;;;14241:18:128;;9286:47:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9351:6:120;;-1:-1:-1;;;;;8974:390:120;;;;;;:::o;10700:1336::-;10819:22;10844:9;:7;:9::i;:::-;10871:24;;10819:34;;-1:-1:-1;10863:107:120;;;;-1:-1:-1;;;10863:107:120;;;;;;;:::i;:::-;10981:34;11031:9;11026:838;11046:27;;;11026:838;;;11094:43;11140:16;;11157:1;11140:19;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;11247:34:120;;-1:-1:-1;11225:17:120;;11199:25;:44;;;:19;;;:44;;;;;;;;:82;;;;;;;;:::i;:::-;;11174:194;;;;-1:-1:-1;;;11174:194:120;;22603:2:128;11174:194:120;;;22585:21:128;22642:2;22622:18;;;22615:30;22681:34;22661:18;;;22654:62;-1:-1:-1;;;22732:18:128;;;22725:51;22793:19;;11174:194:120;22401:417:128;11174:194:120;11387:20;;;;;;;;:::i;:::-;11383:279;;;11453:17;;11427:25;:44;;;:19;;;:44;;;;;:71;;-1:-1:-1;;11427:71:120;11474:24;11427:71;;;11516:39;;;:41;;;;;;:::i;:::-;;;;;;11383:279;;;11629:17;;11603:25;:44;;;:19;;;:44;;;;;11596:51;;-1:-1:-1;;11596:51:120;;;11383:279;11717:20;;;;;;;;:::i;:::-;11681:57;;11698:17;;160:25:128;;11681:57:120;;;;;;148:2:128;133:18;11681:57:120;;;;;;;11790:21;11813:39;11837:14;11813:23;:39::i;:::-;11777:76;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11777:76:120;;;;;;;;;;-1:-1:-1;;11075:3:120;;11026:838;;;;11895:78;11919:6;11937:21;11927:32;;;;;;11961:11;;11895:23;:78::i;:::-;11874:155;;;;-1:-1:-1;;;11874:155:120;;12916:2:128;11874:155:120;;;12898:21:128;12955:2;12935:18;;;12928:30;12994:32;12974:18;;;12967:60;13044:18;;11874:155:120;12714:354:128;11874:155:120;10809:1227;;10700:1336;;;;:::o;5665:129::-;5713:7;5739:36;5765:9;:7;:9::i;5739:36::-;:41;;:48;;5665:129;-1:-1:-1;5665:129:120:o;5800:284::-;5852:7;5871:30;5904:9;:7;:9::i;:::-;5871:42;;5930:147;5968:33;5994:6;5968:25;:33::i;:::-;:38;;:45;6015:25;;;:52;;;5930:24;:147::i;:::-;5923:154;;;5800:284;:::o;5381:146::-;5440:6;5465:9;:7;:9::i;:::-;:28;;:55;;;;5381:146;-1:-1:-1;5381:146:120:o;3405:215:24:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:24;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:24;;3562:1:::1;3534:31;::::0;::::1;2508:51:128::0;2481:18;;3534:31:24::1;2362:203:128::0;3485:91:24::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;5231:144:120:-;5293:4;5316:36;5342:9;:7;:9::i;5316:36::-;-1:-1:-1;;;;;5316:52:120;;;:40;:52;;;;;;;;-1:-1:-1;5316:52:120;;;;;;;5231:144::o;17132:192::-;17173:22;17207:12;17222:17;:15;:17::i;1290:346:54:-;637:66;3369:11:57;1413:93:54;;;1465:30;;-1:-1:-1;;;1465:30:54;;;;;;;;;;;1413:93;1580:49;1624:4;637:66;1580:36;:43;;:49::i;14563:1094:120:-;14734:27;;;:32;14690:7;;14770:39;;;;14734:75;14713:159;;;;-1:-1:-1;;;14713:159:120;;23534:2:128;14713:159:120;;;23516:21:128;23573:2;23553:18;;;23546:30;23612:34;23592:18;;;23585:62;-1:-1:-1;;;23663:18:128;;;23656:35;23708:19;;14713:159:120;23332:401:128;14713:159:120;14891:58;14915:16;:33;;;14891:23;:58::i;:::-;14883:109;;;;-1:-1:-1;;;14883:109:120;;23940:2:128;14883:109:120;;;23922:21:128;23979:2;23959:18;;;23952:30;24018:34;23998:18;;;23991:62;-1:-1:-1;;;24069:18:128;;;24062:36;24115:19;;14883:109:120;23738:402:128;14883:109:120;15162:74;;;;;;;;15186:16;:21;;;15162:74;;;;15209:16;:26;;;;;;;;;;:::i;:::-;15162:74;;;;;;;15132:104;;:27;;;:104;;;;;;;;;;;-1:-1:-1;;15132:104:120;;;;;;;;-1:-1:-1;15279:56:120;15132:27;15306:28;;;;;;:::i;:::-;15279:18;:56::i;:::-;15351:37;;15366:21;;160:25:128;;15247:88:120;;-1:-1:-1;15351:37:120;;148:2:128;133:18;15351:37:120;;;;;;;15406:244;15444:21;;15479:26;;;;;;;;:::i;:::-;15519:39;3390:98:122;;;;;;35233:19:128;;;;35308:3;35286:16;;;;-1:-1:-1;;;;;;35282:47:128;35268:12;;;35261:69;15519:39:120;;;;35346:12:128;;;35339:28;15572:33:120;;;;35383:12:128;;;35376:28;35420:13;;;;35413:29;;;3390:98:122;;;;;;;;;;35458:13:128;;;;3390:98:122;;3367:131;;;;;;3122:383;15406:244:120;15399:251;14563:1094;-1:-1:-1;;;;14563:1094:120:o;5608:1701:122:-;5792:4;5808:18;5829:37;5842:6;5850:15;5829:12;:37::i;:::-;5808:58;;5885:10;5880:2;:15;:82;;;;-1:-1:-1;5930:32:122;;;;5917:45;;:10;:45;:::i;:::-;5899:15;:63;5880:82;5876:706;;;5992:29;;;;-1:-1:-1;;;5992:29:122;;;;5986:35;;;5978:78;;;;-1:-1:-1;;;5978:78:122;;24933:2:128;5978:78:122;;;24915:21:128;24972:2;24952:18;;;24945:30;25011:32;24991:18;;;24984:60;25061:18;;5978:78:122;24731:354:128;5978:78:122;6083:16;;;:20;6107:10;;6078:25;;:2;:25;:::i;:::-;:39;;6070:88;;;;-1:-1:-1;;;6070:88:122;;25292:2:128;6070:88:122;;;25274:21:128;25331:2;25311:18;;;25304:30;25370:34;25350:18;;;25343:62;-1:-1:-1;;;25421:18:128;;;25414:34;25465:19;;6070:88:122;25090:400:128;6070:88:122;5876:706;;;6365:15;6359:2;:21;;6351:67;;;;-1:-1:-1;;;6351:67:122;;25697:2:128;6351:67:122;;;25679:21:128;25736:2;25716:18;;;25709:30;25775:34;25755:18;;;25748:62;-1:-1:-1;;;25826:18:128;;;25819:31;25867:19;;6351:67:122;25495:397:128;6351:67:122;6442:10;6437:2;:15;6433:69;;;6477:10;6472:15;;6433:69;6592:29;6624:24;6637:6;6645:2;6624:12;:24::i;:::-;6711:15;;;:22;6735:25;;;:52;6592:56;;-1:-1:-1;6659:17:122;;6691:97;;6711:22;6735:52;;6691:19;:97::i;:::-;6659:129;;6799:15;6817:74;6880:9;6863:27;;;;;;21122:19:128;;21166:2;21157:12;;20993:182;6863:27:122;;;;-1:-1:-1;;6863:27:122;;;;;;;;;6825:4;;6817:45;:74::i;:::-;6799:92;-1:-1:-1;6901:23:122;;6939:341;6959:22;;;6939:341;;;7002:24;;7029:11;;7041:1;7029:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7002:41;;;;7058:17;7078:26;7094:9;;7078:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7078:7:122;;:26;-1:-1:-1;;7078:15:122;:26;-1:-1:-1;7078:26:122:i;:::-;-1:-1:-1;;;;;7123:25:122;;:14;:25;;;;;;;;;;;7058:46;;-1:-1:-1;7123:25:122;;7119:151;;;7193:9;7172:17;;;:::i;:::-;;;;:30;7168:88;;7233:4;7226:11;;;;;;;;;;;;;7168:88;-1:-1:-1;;;6983:3:122;;6939:341;;;;7297:5;7290:12;;;;;;;5608:1701;;;;;;;;:::o;1642:105:54:-;1690:50;1734:5;637:66;1690:36;1663:115:57;2658:162:24;966:10:29;2717:7:24;1313:22;2570:8;-1:-1:-1;;;;;2570:8:24;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:24;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:24;;966:10:29;2763:40:24;;;2508:51:128;2481:18;;2763:40:24;2362:203:128;13394:887:120;13467:7;13486:22;13511:9;:7;:9::i;:::-;13538:24;;13486:34;;-1:-1:-1;13530:107:120;;;;-1:-1:-1;;;13530:107:120;;;;;;;:::i;:::-;13707:24;13669:25;:34;;;:19;;;:34;;;;;;;;:62;;;;;;;;:::i;:::-;;13648:155;;;;-1:-1:-1;;;13648:155:120;;26625:2:128;13648:155:120;;;26607:21:128;26664:2;26644:18;;;26637:30;26703:34;26683:18;;;26676:62;-1:-1:-1;;;26754:18:128;;;26747:44;26808:19;;13648:155:120;26423:410:128;13648:155:120;14020:32;;;;14064;;;;;;22306:19:128;;;22341:12;;;22334:28;;;13964:15:120;;13994:104;;-1:-1:-1;;;;;14020:32:120;;;;22378:12:128;;14064:32:120;;;;;;;;;;;;14054:43;;;;;;13994:25;:104::i;:::-;-1:-1:-1;;;;;14109:37:120;;;;;;:28;;;:37;;;;;:47;;;14166:33;;;:35;;13964:134;;-1:-1:-1;14166:33:120;:35;;;:::i;:::-;;;;-1:-1:-1;;14217:32:120;;-1:-1:-1;;;;;2526:32:128;;2508:51;;14241:7:120;;14217:32;;2496:2:128;2481:18;14217:32:120;;;;;;;14267:7;13394:887;-1:-1:-1;;;;13394:887:120:o;17464:252::-;2334:13:24;:11;:13::i;:::-;17586:27:120;;::::1;::::0;::::1;::::0;17542:12:::1;::::0;-1:-1:-1;;17623:23:120;17578:40:::1;::::0;17617:1:::1;::::0;17578:40:::1;:::i;:::-;17567:52;;;;;;160:25:128::0;;148:2;133:18;;14:177;17567:52:120::1;;::::0;;;;::::1;-1:-1:-1::0;;17567:52:120;;;;;;17557:63;;17567:52:::1;17557:63:::0;;::::1;::::0;:89:::1;911:66;17656:53:::0;-1:-1:-1;;17464:252:120:o;4617:169:122:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4704:75:122;;;;;;;;-1:-1:-1;4704:75:122;;;4740:12;4704:75;;;;;;4762:15;4704:75;;;;;;;;;4617:169::o;7315:166::-;7400:18;7437:37;7450:6;7458:15;7437:12;:37::i;16508:618:120:-;16684:9;16679:168;16703:16;;;:23;16699:27;;16679:168;;;16747:18;16768:11;:16;;16785:1;16768:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16768:19:120;16801:27;;;;;;;;:35;;-1:-1:-1;;16801:35:120;;;-1:-1:-1;16768:19:120;16728:3;16679:168;;;-1:-1:-1;16861:9:120;16856:163;16880:14;:21;16876:1;:25;16856:163;;;16922:18;16943:14;16958:1;16943:17;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;16974:27:120;:15;:27;;;;;;;;;;:34;;-1:-1:-1;;16974:34:120;17004:4;16974:34;;;;;;16903:3;;;;;-1:-1:-1;16856:163:120;;;-1:-1:-1;17028:33:120;;;;:16;;;;:33;;;;;:::i;:::-;-1:-1:-1;17071:28:120;;;;:48;;;;-1:-1:-1;16508:618:120:o;3774:248:24:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:24;;-1:-1:-1;;;;;3941:19:24;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:25;:18;:20::i;:::-;1929:38:24::1;1954:12;1929:24;:38::i;7631:322:122:-:0;7717:18;7751:50;7777:6;7785:15;7751:25;:50::i;:::-;7747:200;;;-1:-1:-1;7824:37:122;;;7631:322::o;7747:200::-;-1:-1:-1;7899:37:122;;;7631:322::o;7747:200::-;7631:322;;;:::o;2910:206::-;3012:7;3065:10;:21;;;3088:10;:19;;;3048:60;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3038:71;;;;;;3031:78;;2910:206;;;:::o;5262:259::-;5418:4;5445:69;5466:6;5474:9;5485:11;;5498:15;5445:20;:69::i;14287:270:120:-;14385:7;14404:15;14422:49;14448:15;14465:5;14422:25;:49::i;:::-;14482:43;;-1:-1:-1;;;14482:43:120;;-1:-1:-1;;;;;2526:32:128;;;14482:43:120;;;2508:51:128;14404:67:120;;-1:-1:-1;14482:34:120;;;;;;2481:18:128;;14482:43:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14543:7:120;;14287:270;-1:-1:-1;;;;;;;14287:270:120:o;3857:192:122:-;3948:7;4001:17;;4020:20;;;;;;;;:::i;:::-;3984:57;;;;;;;;27615:19:128;;;27680:14;27673:22;27668:3;27664:32;27659:2;27650:12;;27643:54;27722:2;27713:12;;27464:267;9490:285:122;9620:7;9763:5;9705:47;9724:28;;;9705:16;:47;:::i;:::-;:54;;9755:4;9705:54;:::i;:::-;9704:64;;;;:::i;17330:128:120:-;17379:7;911:66;17405:40;1663:115:57;3485:139;3602:5;3596:4;3589:19;3485:139;;:::o;3511:340:122:-;3576:4;;3609:16;3624:1;3609:12;:16;:::i;:::-;3597:28;;3592:230;3627:5;;3592:230;;3667:12;;3697:11;;;3693:119;;-1:-1:-1;3735:4:122;;3511:340;-1:-1:-1;;;3511:340:122:o;3693:119::-;3771:1;3764:8;;;3760:52;;3792:5;;;3760:52;-1:-1:-1;3634:3:122;;;;:::i;:::-;;;;3592:230;;;-1:-1:-1;3839:5:122;;3511:340;-1:-1:-1;;3511:340:122:o;15663:839:120:-;15794:7;15817:30;15794:7;15858:592;15878:23;;;15858:592;;;15922:40;15965:12;;15978:1;15965:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;15922:58;-1:-1:-1;16020:28:120;;;:48;16049:18;;;;15922:58;16049:18;:::i;:::-;-1:-1:-1;;;;;16020:48:120;-1:-1:-1;;;;;16020:48:120;;;;;;;;;;;;;16072:1;16020:53;;;15995:143;;;;-1:-1:-1;;;15995:143:120;;28418:2:128;15995:143:120;;;28400:21:128;28457:2;28437:18;;;28430:30;28496:34;28476:18;;;28469:62;-1:-1:-1;;;28547:18:128;;;28540:45;28602:19;;15995:143:120;28216:411:128;15995:143:120;16166:32;;;;-1:-1:-1;;;;;16166:32:120;16153:55;16209:18;;;;:10;:18;:::i;:::-;16229:25;;;;;;;;:::i;:::-;16153:102;;-1:-1:-1;;;;;;16153:102:120;;;;;;;-1:-1:-1;;;;;29208:32:128;;;16153:102:120;;;29190:51:128;-1:-1:-1;;;;;29277:47:128;29257:18;;;29250:75;29163:18;;16153:102:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16270:22:120;16303:18;;;;:10;:18;:::i;:::-;-1:-1:-1;;;;;16295:50:120;;16346:10;16295:62;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16270:87;;16405:17;16424:14;16392:47;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16392:47:120;;;;;;;-1:-1:-1;;;15903:3:120;;15858:592;;;-1:-1:-1;16467:28:120;;;;;;;;15663:839;-1:-1:-1;;;;15663:839:120:o;10148:199:122:-;10320:16;;;:20;10237:7;;10295:22;10320:6;10314:2;10295:10;:22::i;:::-;:45;;;;:::i;:::-;10263:29;;;;:77;;;-1:-1:-1;;;10263:29:122;;;;:77;:::i;7980:312::-;8069:18;8103:37;8129:6;8137:2;8103:25;:37::i;:::-;8099:187;;;-1:-1:-1;8163:37:122;;;8156:44;;8099:187;-1:-1:-1;8238:37:122;;;8231:44;;2693:191:59;2795:7;2860:9;2871:4;2831:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2821:56;;;;;;2814:63;;2693:191;;;;:::o;3714:255:58:-;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;-1:-1:-1;3953:9:58;;3714:255;-1:-1:-1;;;;3714:255:58:o;2789:169:37:-;2873:16;2908:43;2927:14;2943:4;2949:1;2908:18;:43::i;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;1980:235:24;6931:20:25;:18;:20::i;8629:855:122:-;8761:54;;;;8839;;;;8731:4;;8761:54;8967:10;;;8959:55;;;;-1:-1:-1;;;8959:55:122;;36133:2:128;8959:55:122;;;36115:21:128;;;36152:18;;;36145:30;36211:34;36191:18;;;36184:62;36263:18;;8959:55:122;35931:356:128;8959:55:122;9043:9;;;9075;;;;9107;;;;9075;;9208:14;;;9217:5;9208:14;9200:80;;;;-1:-1:-1;;;9200:80:122;;36494:2:128;9200:80:122;;;36476:21:128;36533:2;36513:18;;;36506:30;36572:34;36552:18;;;36545:62;-1:-1:-1;;;36623:18:128;;;36616:51;36684:19;;9200:80:122;36292:417:128;9200:80:122;9447:10;:30;;;;;9471:5;9462:14;;:5;:14;;;9447:30;9440:37;8629:855;-1:-1:-1;;;;;;;;8629:855:122:o;9963:179::-;10115:16;;;:20;10082:29;;;;10050:7;;10115:20;10077:34;;-1:-1:-1;;;10082:29:122;;;;10077:2;:34;:::i;2129:778:58:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:58;;2823:1;;-1:-1:-1;2827:35:58;;2295:606;2129:778;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:58;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:58;;;;;160:25:128;;;133:18;;7634:46:58;14:177:128;7563:243:58;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:58;;;;;160:25:128;;;133:18;;7763:32:58;14:177:128;7697:109:58;7280:532;;:::o;3384:974:37:-;3513:16;3569:5;3545:21;:29;3541:123;;;3597:56;;-1:-1:-1;;;3597:56:37;;3624:21;3597:56;;;14015:25:128;14056:18;;;14049:34;;;13988:18;;3597:56:37;13841:248:128;3541:123:37;3950:48;3932:14;3926:4;3922:25;3916:4;3912:36;3909:90;3903:4;3896:104;4157:32;4140:14;4134:4;4130:25;4127:63;4121:4;4114:77;4243:4;4237;4231;4224:5;4216:32;4204:44;-1:-1:-1;;;;;;4271:22:37;;4267:85;;4316:25;;-1:-1:-1;;;4316:25:37;;;;;;;;;;;5203:1551:58;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:58;;-1:-1:-1;6385:30:58;;-1:-1:-1;6417:1:58;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;37194:25:128;;;37267:4;37255:17;;37235:18;;;37228:45;;;;37289:18;;;37282:34;;;37332:18;;;37325:34;;;6541:24:58;;37166:19:128;;6541:24:58;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:58;;-1:-1:-1;;6541:24:58;;;-1:-1:-1;;;;;;;6579:20:58;;6575:113;;-1:-1:-1;6631:1:58;;-1:-1:-1;6635:29:58;;-1:-1:-1;6631:1:58;;-1:-1:-1;6615:62:58;;6575:113;6706:6;-1:-1:-1;6714:20:58;;-1:-1:-1;6714:20:58;;-1:-1:-1;5203:1551:58;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:391:128;283:8;293:6;347:3;340:4;332:6;328:17;324:27;314:55;;365:1;362;355:12;314:55;-1:-1:-1;388:20:128;;-1:-1:-1;;;;;420:30:128;;417:50;;;463:1;460;453:12;417:50;500:4;492:6;488:17;476:29;;560:3;553:4;543:6;540:1;536:14;528:6;524:27;520:38;517:47;514:67;;;577:1;574;567:12;514:67;196:391;;;;;:::o;592:863::-;761:6;769;777;785;838:2;826:9;817:7;813:23;809:32;806:52;;;854:1;851;844:12;806:52;894:9;881:23;-1:-1:-1;;;;;919:6:128;916:30;913:50;;;959:1;956;949:12;913:50;998:94;1084:7;1075:6;1064:9;1060:22;998:94;:::i;:::-;1111:8;;-1:-1:-1;972:120:128;-1:-1:-1;;1199:2:128;1184:18;;1171:32;-1:-1:-1;;;;;1215:32:128;;1212:52;;;1260:1;1257;1250:12;1212:52;1299:96;1387:7;1376:8;1365:9;1361:24;1299:96;:::i;:::-;592:863;;;;-1:-1:-1;1414:8:128;-1:-1:-1;;;;592:863:128:o;1460:346::-;1528:6;1536;1589:2;1577:9;1568:7;1564:23;1560:32;1557:52;;;1605:1;1602;1595:12;1557:52;-1:-1:-1;;1650:23:128;;;1770:2;1755:18;;;1742:32;;-1:-1:-1;1460:346:128:o;1993:173::-;2061:20;;-1:-1:-1;;;;;2110:31:128;;2100:42;;2090:70;;2156:1;2153;2146:12;2171:186;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;2322:29;2341:9;2322:29;:::i;2570:461::-;2656:6;2664;2717:2;2705:9;2696:7;2692:23;2688:32;2685:52;;;2733:1;2730;2723:12;2685:52;2773:9;2760:23;-1:-1:-1;;;;;2798:6:128;2795:30;2792:50;;;2838:1;2835;2828:12;2792:50;2877:94;2963:7;2954:6;2943:9;2939:22;2877:94;:::i;:::-;2990:8;;2851:120;;-1:-1:-1;2570:461:128;-1:-1:-1;;;;2570:461:128:o;3036:127::-;3097:10;3092:3;3088:20;3085:1;3078:31;3128:4;3125:1;3118:15;3152:4;3149:1;3142:15;3168:237;3249:1;3242:5;3239:12;3229:143;;3294:10;3289:3;3285:20;3282:1;3275:31;3329:4;3326:1;3319:15;3357:4;3354:1;3347:15;3229:143;3381:18;;3168:237::o;3410:643::-;3613:2;3625:21;;;3695:13;;3598:18;;;3717:22;;;3565:4;;3796:15;;;3770:2;3755:18;;;3565:4;3839:188;3853:6;3850:1;3847:13;3839:188;;;3902:45;3943:3;3934:6;3928:13;3902:45;:::i;:::-;3976:2;4002:15;;;;3967:12;;;;;3875:1;3868:9;3839:188;;;-1:-1:-1;4044:3:128;;3410:643;-1:-1:-1;;;;;3410:643:128:o;4576:1116::-;4725:6;4733;4741;4749;4757;4765;4773;4781;4789;4842:3;4830:9;4821:7;4817:23;4813:33;4810:53;;;4859:1;4856;4849:12;4810:53;4882:29;4901:9;4882:29;:::i;:::-;4872:39;;4930:38;4964:2;4953:9;4949:18;4930:38;:::i;:::-;4920:48;;4987:38;5021:2;5010:9;5006:18;4987:38;:::i;:::-;4977:48;;5044:38;5078:2;5067:9;5063:18;5044:38;:::i;:::-;5034:48;-1:-1:-1;5151:3:128;5136:19;;5123:33;;-1:-1:-1;5253:3:128;5238:19;;5225:33;;-1:-1:-1;5357:3:128;5342:19;;5329:33;;-1:-1:-1;5439:3:128;5424:19;;5411:33;-1:-1:-1;;;;;5456:30:128;;5453:50;;;5499:1;5496;5489:12;5453:50;5538:94;5624:7;5615:6;5604:9;5600:22;5538:94;:::i;:::-;5512:120;;5651:8;5641:18;;;5678:8;5668:18;;;4576:1116;;;;;;;;;;;:::o;6355:766::-;6502:6;6510;6518;6571:2;6559:9;6550:7;6546:23;6542:32;6539:52;;;6587:1;6584;6577:12;6539:52;6627:9;6614:23;-1:-1:-1;;;;;6652:6:128;6649:30;6646:50;;;6692:1;6689;6682:12;6646:50;6715:22;;6771:2;6753:16;;;6749:25;6746:45;;;6787:1;6784;6777:12;6746:45;6810:2;-1:-1:-1;6865:2:128;6850:18;;6837:32;-1:-1:-1;;;;;6881:32:128;;6878:52;;;6926:1;6923;6916:12;6878:52;6965:96;7053:7;7042:8;7031:9;7027:24;6965:96;:::i;:::-;6355:766;;7080:8;;-1:-1:-1;6939:122:128;;-1:-1:-1;;;;6355:766:128:o;7126:611::-;7316:2;7328:21;;;7398:13;;7301:18;;;7420:22;;;7268:4;;7499:15;;;7473:2;7458:18;;;7268:4;7542:169;7556:6;7553:1;7550:13;7542:169;;;7617:13;;7605:26;;7660:2;7686:15;;;;7651:12;;;;7578:1;7571:9;7542:169;;7742:226;7801:6;7854:2;7842:9;7833:7;7829:23;7825:32;7822:52;;;7870:1;7867;7860:12;7822:52;-1:-1:-1;7915:23:128;;7742:226;-1:-1:-1;7742:226:128:o;7973:209::-;8120:2;8105:18;;8132:44;8109:9;8158:6;8132:44;:::i;8187:637::-;8377:2;8389:21;;;8459:13;;8362:18;;;8481:22;;;8329:4;;8560:15;;;8534:2;8519:18;;;8329:4;8603:195;8617:6;8614:1;8611:13;8603:195;;;8682:13;;-1:-1:-1;;;;;8678:39:128;8666:52;;8747:2;8773:15;;;;8738:12;;;;8714:1;8632:9;8603:195;;9030:420;9107:6;9115;9123;9176:2;9164:9;9155:7;9151:23;9147:32;9144:52;;;9192:1;9189;9182:12;9144:52;9215:29;9234:9;9215:29;:::i;:::-;9205:39;9313:2;9298:18;;9285:32;;-1:-1:-1;9414:2:128;9399:18;;;9386:32;;9030:420;-1:-1:-1;;;9030:420:128:o;9455:1017::-;9623:6;9631;9639;9647;9700:2;9688:9;9679:7;9675:23;9671:32;9668:52;;;9716:1;9713;9706:12;9668:52;9756:9;9743:23;-1:-1:-1;;;;;9781:6:128;9778:30;9775:50;;;9821:1;9818;9811:12;9775:50;9844:22;;9897:4;9889:13;;9885:27;-1:-1:-1;9875:55:128;;9926:1;9923;9916:12;9875:55;9966:2;9953:16;-1:-1:-1;;;;;9984:6:128;9981:30;9978:50;;;10024:1;10021;10014:12;9978:50;10079:7;10072:4;10062:6;10059:1;10055:14;10051:2;10047:23;10043:34;10040:47;10037:67;;;10100:1;10097;10090:12;10037:67;10131:4;10123:13;;;;-1:-1:-1;10155:6:128;-1:-1:-1;10199:20:128;;10186:34;-1:-1:-1;;;;;10232:32:128;;10229:52;;;10277:1;10274;10267:12;10670:420;10872:2;10854:21;;;10911:2;10891:18;;;10884:30;10950:34;10945:2;10930:18;;10923:62;11021:26;11016:2;11001:18;;10994:54;11080:3;11065:19;;10670:420::o;11454:127::-;11515:10;11510:3;11506:20;11503:1;11496:31;11546:4;11543:1;11536:15;11570:4;11567:1;11560:15;11586:334;11688:4;11746:11;11733:25;11840:3;11836:8;11825;11809:14;11805:29;11801:44;11781:18;11777:69;11767:97;;11860:1;11857;11850:12;11767:97;11881:33;;;;;11586:334;-1:-1:-1;;11586:334:128:o;11925:211::-;11966:3;12004:5;11998:12;12048:6;12041:4;12034:5;12030:16;12025:3;12019:36;12110:1;12074:16;;12099:13;;;-1:-1:-1;12074:16:128;;11925:211;-1:-1:-1;11925:211:128:o;12141:283::-;12298:3;12329:29;12354:3;12346:6;12329:29;:::i;:::-;12367:21;;;-1:-1:-1;;12415:2:128;12404:14;;12141:283;-1:-1:-1;12141:283:128:o;12429:280::-;12487:6;12540:2;12528:9;12519:7;12515:23;12511:32;12508:52;;;12556:1;12553;12546:12;12508:52;12595:9;12582:23;12645:14;12638:5;12634:26;12627:5;12624:37;12614:65;;12675:1;12672;12665:12;14604:127;14665:10;14660:3;14656:20;14653:1;14646:31;14696:4;14693:1;14686:15;14720:4;14717:1;14710:15;15974:127;16035:10;16030:3;16026:20;16023:1;16016:31;16066:4;16063:1;16056:15;16090:4;16087:1;16080:15;16106:128;16173:9;;;16194:11;;;16191:37;;;16208:18;;:::i;16239:217::-;16279:1;16305;16295:132;;16349:10;16344:3;16340:20;16337:1;16330:31;16384:4;16381:1;16374:15;16412:4;16409:1;16402:15;16295:132;-1:-1:-1;16441:9:128;;16239:217::o;17742:125::-;17807:9;;;17828:10;;;17825:36;;;17841:18;;:::i;18283:168::-;18356:9;;;18387;;18404:15;;;18398:22;;18384:37;18374:71;;18425:18;;:::i;19231:257::-;19303:4;19297:11;;;19335:17;;-1:-1:-1;;;;;19367:34:128;;19403:22;;;19364:62;19361:88;;;19429:18;;:::i;:::-;19465:4;19458:24;19231:257;:::o;19493:275::-;19564:2;19558:9;19629:2;19610:13;;-1:-1:-1;;19606:27:128;19594:40;;-1:-1:-1;;;;;19649:34:128;;19685:22;;;19646:62;19643:88;;;19711:18;;:::i;:::-;19747:2;19740:22;19493:275;;-1:-1:-1;19493:275:128:o;19773:1215::-;19903:9;19962:4;19954:5;19938:14;19934:26;19930:37;19927:57;;;19980:1;19977;19970:12;19927:57;20008:22;;:::i;:::-;20066:5;20053:19;-1:-1:-1;;;;;20087:6:128;20084:30;20081:50;;;20127:1;20124;20117:12;20081:50;20150:18;;20206:14;20199:4;20191:13;;20187:34;20177:62;;20235:1;20232;20225:12;20177:62;20275:2;20262:16;-1:-1:-1;;;;;20293:6:128;20290:30;20287:56;;;20323:18;;:::i;:::-;20369:6;20366:1;20362:14;20396:30;20420:4;20416:2;20412:13;20396:30;:::i;:::-;20460:19;;;20504:4;20536:11;;;20532:22;;;20495:14;;;;20577;20566:26;;20563:46;;;20605:1;20602;20595:12;20563:46;20637:4;20633:2;20629:13;20618:24;;20651:152;20667:6;20662:3;20659:15;20651:152;;;20735:23;20754:3;20735:23;:::i;:::-;20723:36;;20788:4;20684:14;;;;20779;;;;20651:152;;;20812:22;;-1:-1:-1;;;;20903:4:128;20892:16;;;20879:30;20925:18;;;20918:35;;;;-1:-1:-1;20819:7:128;19773:1215::o;21599:545::-;21692:4;21698:6;21758:11;21745:25;21852:2;21848:7;21837:8;21821:14;21817:29;21813:43;21793:18;21789:68;21779:96;;21871:1;21868;21861:12;21779:96;21898:33;;21950:20;;;-1:-1:-1;;;;;;21982:30:128;;21979:50;;;22025:1;22022;22015:12;21979:50;22058:4;22046:17;;-1:-1:-1;22109:1:128;22105:14;;;22089;22085:35;22075:46;;22072:66;;;22134:1;22131;22124:12;22823:118;22909:5;22902:13;22895:21;22888:5;22885:32;22875:60;;22931:1;22928;22921:12;22946:241;23002:6;23055:2;23043:9;23034:7;23030:23;23026:32;23023:52;;;23071:1;23068;23061:12;23023:52;23110:9;23097:23;23129:28;23151:5;23129:28;:::i;23192:135::-;23231:3;23252:17;;;23249:43;;23272:18;;:::i;:::-;-1:-1:-1;23319:1:128;23308:13;;23192:135::o;25897:521::-;25974:4;25980:6;26040:11;26027:25;26134:2;26130:7;26119:8;26103:14;26099:29;26095:43;26075:18;26071:68;26061:96;;26153:1;26150;26143:12;26061:96;26180:33;;26232:20;;;-1:-1:-1;;;;;;26264:30:128;;26261:50;;;26307:1;26304;26297:12;26261:50;26340:4;26328:17;;-1:-1:-1;26371:14:128;26367:27;;;26357:38;;26354:58;;;26408:1;26405;26398:12;26838:621;27084:13;;27027:3;;27058;;27153:4;27141:17;;27027:3;27186:205;27200:6;27197:1;27194:13;27186:205;;;27267:13;;-1:-1:-1;;;;;27263:39:128;27249:54;;27336:4;27325:16;;;;27364:17;;;;27299:1;27215:9;27186:205;;;-1:-1:-1;;;27400:21:128;;;-1:-1:-1;;27448:4:128;27437:16;;26838:621;-1:-1:-1;26838:621:128:o;27736:136::-;27775:3;27803:5;27793:39;;27812:18;;:::i;:::-;-1:-1:-1;;;27848:18:128;;27736:136::o;27877:334::-;27979:4;28037:11;28024:25;28131:3;28127:8;28116;28100:14;28096:29;28092:44;28072:18;28068:69;28058:97;;28151:1;28148;28141:12;28632:188;28700:20;;-1:-1:-1;;;;;28749:46:128;;28739:57;;28729:85;;28810:1;28807;28800:12;28825:186;28884:6;28937:2;28925:9;28916:7;28912:23;28908:32;28905:52;;;28953:1;28950;28943:12;28905:52;28976:29;28995:9;28976:29;:::i;29336:245::-;29403:6;29456:2;29444:9;29435:7;29431:23;29427:32;29424:52;;;29472:1;29469;29462:12;29424:52;29504:9;29498:16;29523:28;29545:5;29523:28;:::i;29586:692::-;29705:6;29700:3;29693:19;29737:4;29732:3;29728:14;29721:21;;29675:3;29765:5;29788:1;29798:455;29812:6;29809:1;29806:13;29798:455;;;29901:20;;29934;;-1:-1:-1;;;;;29994:37:128;30025:4;30013:17;;29994:37;:::i;:::-;29990:63;29983:4;29978:3;29974:14;29967:87;-1:-1:-1;;;;;30094:37:128;30125:4;30117:6;30113:17;30094:37;:::i;:::-;30090:78;30083:4;30074:14;;30067:102;30198:4;30189:14;;;;30226:17;;;;;29834:1;29827:9;29798:455;;;-1:-1:-1;30269:3:128;;29586:692;-1:-1:-1;;;;29586:692:128:o;30283:536::-;30369:5;30376:6;30436:3;30423:17;30522:2;30518:7;30507:8;30491:14;30487:29;30483:43;30463:18;30459:68;30449:96;;30541:1;30538;30531:12;30449:96;30569:33;;30673:4;30660:18;;;-1:-1:-1;30621:21:128;;-1:-1:-1;;;;;;30690:30:128;;30687:50;;;30733:1;30730;30723:12;30687:50;30787:6;30784:1;30780:14;30764;30760:35;30753:5;30749:47;30746:67;;;30809:1;30806;30799:12;30824:266;30912:6;30907:3;30900:19;30964:6;30957:5;30950:4;30945:3;30941:14;30928:43;-1:-1:-1;31016:1:128;30991:16;;;31009:4;30987:27;;;30980:38;;;;31072:2;31051:15;;;-1:-1:-1;;31047:29:128;31038:39;;;31034:50;;30824:266::o;31095:359::-;31206:19;;31234:20;;31302:4;31291:16;;31278:30;-1:-1:-1;;;;;;31327:34:128;;31380:15;;;31370:43;;31409:1;31406;31399:12;31370:43;31445:2;31438:4;31433:3;31429:14;31422:26;;;31095:359;;:::o;31459:1803::-;31545:3;31576;31600:6;31595:3;31588:19;31632:4;31627:3;31623:14;31616:21;;31690:4;31680:6;31677:1;31673:14;31666:5;31662:26;31658:37;31718:5;31741:1;31751:1485;31765:6;31762:1;31759:13;31751:1485;;;31830:16;;;-1:-1:-1;;31826:30:128;31814:43;;31896:20;;31971:14;31967:26;;;-1:-1:-1;;31963:41:128;31939:66;;31929:94;;32019:1;32016;32009:12;31929:94;32051:30;;32134:21;;32168;;-1:-1:-1;;;;;32230:38:128;32262:4;32249:18;;32230:38;:::i;:::-;32226:64;32219:4;32213;32209:15;32202:89;32358:4;32349:7;32345:18;32332:32;32451:2;32447:7;32437;32421:14;32417:28;32413:42;32391:20;32387:69;32377:97;;32470:1;32467;32460:12;32377:97;32502:34;;32627:4;32614:18;;;32565:21;-1:-1:-1;;;;;32648:32:128;;32645:52;;;32693:1;32690;32683:12;32645:52;32746:8;32730:14;32726:29;32717:7;32713:43;32710:63;;;32769:1;32766;32759:12;32710:63;32810:4;32803;32797;32793:15;32786:29;32842:61;32897:4;32891;32887:15;32877:8;32868:7;32842:61;:::i;:::-;32828:75;;;32936:38;32968:4;32959:7;32955:18;32936:38;:::i;:::-;-1:-1:-1;;;;;4124:46:128;33030:4;33020:15;;4112:59;33049:76;33119:4;33109:15;;;;33089:18;;33049:76;:::i;:::-;33187:4;33212:14;;;;33146:6;;-1:-1:-1;33175:17:128;;;;;-1:-1:-1;31787:1:128;31780:9;31751:1485;;;-1:-1:-1;33252:4:128;;31459:1803;-1:-1:-1;;;;;;31459:1803:128:o;33267:1533::-;33466:2;33448:21;;-1:-1:-1;;;;;33509:26:128;33528:6;33509:26;:::i;:::-;33505:52;33500:2;33489:9;33485:18;33478:80;33429:4;33580:1;33624:2;33616:6;33612:15;33599:29;33590:38;;33664:5;33659:2;33648:9;33644:18;33637:33;;33764:1;33760;33755:3;33751:11;33747:19;33710:35;33741:2;33733:6;33729:15;33710:35;:::i;:::-;33706:61;33701:2;33690:9;33686:18;33679:89;-1:-1:-1;;;;;33809:35:128;33840:2;33832:6;33828:15;33809:35;:::i;:::-;33805:76;33799:3;33788:9;33784:19;33777:105;33942:3;33934:6;33930:16;33917:30;34027:2;34023:7;34014:6;33998:14;33994:27;33990:41;33970:18;33966:66;33956:94;;34046:1;34043;34036:12;33956:94;34074:31;;34186:2;34173:16;;;34128:21;-1:-1:-1;;;;;34201:30:128;;34198:50;;;34244:1;34241;34234:12;34198:50;34305:2;34297:6;34293:15;34277:14;34273:36;34264:7;34260:50;34257:70;;;34323:1;34320;34313:12;34257:70;34364:4;34358:3;34347:9;34343:19;34336:33;34392:94;34481:3;34470:9;34466:19;34458:6;34449:7;34392:94;:::i;:::-;34378:108;;;34529:84;34608:3;34600:6;34596:16;34588:6;34529:84;:::i;:::-;34655:22;;;-1:-1:-1;;34651:36:128;34644:4;34629:20;;34622:66;34705:89;34659:6;34773:12;34759;34705:89;:::i;:::-;34697:97;33267:1533;-1:-1:-1;;;;;;33267:1533:128:o;34805:184::-;34875:6;34928:2;34916:9;34907:7;34903:23;34899:32;34896:52;;;34944:1;34941;34934:12;34896:52;-1:-1:-1;34967:16:128;;34805:184;-1:-1:-1;34805:184:128:o;35482:444::-;-1:-1:-1;;;35758:25:128;;35820:2;35816:15;;;-1:-1:-1;;35812:53:128;35808:1;35799:11;;35792:74;-1:-1:-1;35882:38:128;35916:2;35907:12;;35899:6;35882:38;:::i","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,uint256,address[])":"85a49eab","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\":\"uint256\",\"name\":\"_validationDelay\",\"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/\"]},\"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\":\"0x9f0978caf9900deb485ce13ecd77ac6ab46371436c847b1ec492fefbf45e3483\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7917d33dd63a743ede2941f5ed5f3a714ed73a2bab8c6c4a30975e2c5307d46\",\"dweb:/ipfs/QmUvrsaZZ9nsRKZdvc3LXTNeEkumRkNBFQrDbQrpdLdjBB\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2\",\"dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr\"]}},\"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":"uint256","name":"_validationDelay","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":{}},"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":"0x9f0978caf9900deb485ce13ecd77ac6ab46371436c847b1ec492fefbf45e3483","urls":["bzz-raw://f7917d33dd63a743ede2941f5ed5f3a714ed73a2bab8c6c4a30975e2c5307d46","dweb:/ipfs/QmUvrsaZZ9nsRKZdvc3LXTNeEkumRkNBFQrDbQrpdLdjBB"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0x1695d422aab7d5863d4d4aa45e18bccb40e120243b676348db502a6206ef7840","urls":["bzz-raw://69ebb95079b860d4b87e98717aa30717b14548f40574735aba5fdcf0f9d47ec2","dweb:/ipfs/QmTLR4iYWXedvdkMjoZePYwhjpU2q3zGomzC8otwKHZrmr"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":69474,"exportedSymbols":{"Clones":[42512],"Gear":[70341],"IMirror":[65179],"IMirrorDecoder":[65216],"IRouter":[65487],"IWrappedVara":[65498],"OwnableUpgradeable":[40332],"ReentrancyGuardTransient":[44307],"Router":[69473],"StorageSlot":[44431]},"nodeType":"SourceUnit","src":"39:17680:120","nodes":[{"id":67882,"nodeType":"PragmaDirective","src":"39:24:120","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":67884,"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":69474,"sourceUnit":42513,"symbolAliases":[{"foreign":{"id":67883,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"73:6:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67886,"nodeType":"ImportDirective","src":"130:42:120","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":69474,"sourceUnit":70342,"symbolAliases":[{"foreign":{"id":67885,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"138:4:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67888,"nodeType":"ImportDirective","src":"173:38:120","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":69474,"sourceUnit":65180,"symbolAliases":[{"foreign":{"id":67887,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65179,"src":"181:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67890,"nodeType":"ImportDirective","src":"212:52:120","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":69474,"sourceUnit":65217,"symbolAliases":[{"foreign":{"id":67889,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65216,"src":"220:14:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67892,"nodeType":"ImportDirective","src":"265:38:120","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":69474,"sourceUnit":65488,"symbolAliases":[{"foreign":{"id":67891,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65487,"src":"273:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67894,"nodeType":"ImportDirective","src":"304:48:120","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":69474,"sourceUnit":65499,"symbolAliases":[{"foreign":{"id":67893,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65498,"src":"312:12:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67896,"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":69474,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":67895,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"361:18:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67898,"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":69474,"sourceUnit":44308,"symbolAliases":[{"foreign":{"id":67897,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"463:24:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67900,"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":69474,"sourceUnit":44432,"symbolAliases":[{"foreign":{"id":67899,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"564:11:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69473,"nodeType":"ContractDefinition","src":"690:17028:120","nodes":[{"id":67909,"nodeType":"VariableDeclaration","src":"871:106:120","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"896:12:120","scope":69473,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"871:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":67908,"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":67917,"nodeType":"FunctionDefinition","src":"1037:53:120","nodes":[],"body":{"id":67916,"nodeType":"Block","src":"1051:39:120","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":67913,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1061:20:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":67914,"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":67915,"nodeType":"ExpressionStatement","src":"1061:22:120"}]},"documentation":{"id":67910,"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":67911,"nodeType":"ParameterList","parameters":[],"src":"1048:2:120"},"returnParameters":{"id":67912,"nodeType":"ParameterList","parameters":[],"src":"1051:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68044,"nodeType":"FunctionDefinition","src":"1096:1600:120","nodes":[],"body":{"id":68043,"nodeType":"Block","src":"1389:1307:120","nodes":[],"statements":[{"expression":{"arguments":[{"id":67940,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67919,"src":"1414:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":67939,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40192,"src":"1399:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":67941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1399:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67942,"nodeType":"ExpressionStatement","src":"1399:22:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":67944,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1546:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":67945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1552:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"1546:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1564:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1546:19:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63757272656e742074696d657374616d70206d7573742062652067726561746572207468616e2030","id":67948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1567: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":67943,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1538:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1538:72:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67950,"nodeType":"ExpressionStatement","src":"1538:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67952,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"1628:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":67953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1628:21:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206475726174696f6e206d7573742062652067726561746572207468616e2030","id":67955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1651: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":67951,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1620:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1620:74:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67957,"nodeType":"ExpressionStatement","src":"1620:74:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67959,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67927,"src":"1712:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":67960,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"1727:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1712:32:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"657261206475726174696f6e206d7573742062652067726561746572207468616e20656c656374696f6e206475726174696f6e","id":67962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1746: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":67958,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1704:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1704:96:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67964,"nodeType":"ExpressionStatement","src":"1704:96:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67966,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67931,"src":"1969:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":67969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":67967,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67927,"src":"1989:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":67968,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"2004:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1989:32:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":67970,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1988:34:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":67971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:2:120","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1988:39:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1969:58:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"76616c69646174696f6e2064656c617920697320746f6f20626967","id":67974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2029:29:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_eddca39051ee2213f896dfc64728cc0230d9b810a7506c1cb5def9eec7f1fd26","typeString":"literal_string \"validation delay is too big\""},"value":"validation delay is too big"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eddca39051ee2213f896dfc64728cc0230d9b810a7506c1cb5def9eec7f1fd26","typeString":"literal_string \"validation delay is too big\""}],"id":67965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1961:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":67975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1961:98:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67976,"nodeType":"ExpressionStatement","src":"1961:98:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":67978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2086: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":67977,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69472,"src":"2070:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":67979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":67980,"nodeType":"ExpressionStatement","src":"2070:42:120"},{"assignments":[67983],"declarations":[{"constant":false,"id":67983,"mutability":"mutable","name":"router","nameLocation":"2138:6:120","nodeType":"VariableDeclaration","scope":68043,"src":"2122:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":67982,"nodeType":"UserDefinedTypeName","pathNode":{"id":67981,"name":"Storage","nameLocations":["2122:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"2122:7:120"},"referencedDeclaration":65259,"src":"2122:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":67986,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":67984,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"2147:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":67985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2122:34:120"},{"expression":{"id":67993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67987,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2167:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2174:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"2167:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":67990,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2189:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":67991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2194:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69910,"src":"2189:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69665_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":67992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2189:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2167:39:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":67994,"nodeType":"ExpressionStatement","src":"2167:39:120"},{"expression":{"id":68004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":67995,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2216:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":67997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2223:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"2216:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68000,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67921,"src":"2256:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68001,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67923,"src":"2265:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68002,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67925,"src":"2279: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":67998,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2239:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":67999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2244:11:120","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":69620,"src":"2239:16:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$69620_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":68003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2239:53:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"2216:76:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68005,"nodeType":"ExpressionStatement","src":"2216:76:120"},{"expression":{"id":68013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68006,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2302:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2309:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"2302:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2328:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69722,"src":"2302:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68011,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2357:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2362:28:120","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":69600,"src":"2357:33:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2302:88:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68014,"nodeType":"ExpressionStatement","src":"2302:88:120"},{"expression":{"id":68021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68015,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2400:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2407:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65250,"src":"2400:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68018,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2425:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2430:26:120","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":69857,"src":"2425:31:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$69658_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":68020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2425:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"2400:58:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68022,"nodeType":"ExpressionStatement","src":"2400:58:120"},{"expression":{"id":68032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68023,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2468:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2475:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"2468:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68028,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67927,"src":"2502:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":68029,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67929,"src":"2516:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":68030,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67931,"src":"2535:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":68026,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2487:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2492:9:120","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":69720,"src":"2487:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$69720_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":68031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2487:65:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"2468:84:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68033,"nodeType":"ExpressionStatement","src":"2468:84:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":68035,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67983,"src":"2621:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2628:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"2621:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2647:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69725,"src":"2621:37:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage","typeString":"struct Gear.Validators storage ref"}},{"id":68038,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67934,"src":"2660:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":68039,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2673:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2679:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"2673:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69613_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68034,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69402,"src":"2604:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69613_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2604:85:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68042,"nodeType":"ExpressionStatement","src":"2604:85:120"}]},"functionSelector":"85a49eab","implemented":true,"kind":"function","modifiers":[{"id":67937,"kind":"modifierInvocation","modifierName":{"id":67936,"name":"initializer","nameLocations":["1377:11:120"],"nodeType":"IdentifierPath","referencedDeclaration":40440,"src":"1377:11:120"},"nodeType":"ModifierInvocation","src":"1377:11:120"}],"name":"initialize","nameLocation":"1105:10:120","parameters":{"id":67935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67919,"mutability":"mutable","name":"_owner","nameLocation":"1133:6:120","nodeType":"VariableDeclaration","scope":68044,"src":"1125:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67918,"name":"address","nodeType":"ElementaryTypeName","src":"1125:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67921,"mutability":"mutable","name":"_mirror","nameLocation":"1157:7:120","nodeType":"VariableDeclaration","scope":68044,"src":"1149:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67920,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67923,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1182:12:120","nodeType":"VariableDeclaration","scope":68044,"src":"1174:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67922,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67925,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1212:12:120","nodeType":"VariableDeclaration","scope":68044,"src":"1204:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67924,"name":"address","nodeType":"ElementaryTypeName","src":"1204:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67927,"mutability":"mutable","name":"_eraDuration","nameLocation":"1242:12:120","nodeType":"VariableDeclaration","scope":68044,"src":"1234:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67926,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67929,"mutability":"mutable","name":"_electionDuration","nameLocation":"1272:17:120","nodeType":"VariableDeclaration","scope":68044,"src":"1264:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1264:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67931,"mutability":"mutable","name":"_validationDelay","nameLocation":"1307:16:120","nodeType":"VariableDeclaration","scope":68044,"src":"1299:24:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67930,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":67934,"mutability":"mutable","name":"_validators","nameLocation":"1352:11:120","nodeType":"VariableDeclaration","scope":68044,"src":"1333:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":67932,"name":"address","nodeType":"ElementaryTypeName","src":"1333:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":67933,"nodeType":"ArrayTypeName","src":"1333:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1115:254:120"},"returnParameters":{"id":67938,"nodeType":"ParameterList","parameters":[],"src":"1389:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68121,"nodeType":"FunctionDefinition","src":"2702:1409:120","nodes":[],"body":{"id":68120,"nodeType":"Block","src":"2760:1351:120","nodes":[],"statements":[{"assignments":[68054],"declarations":[{"constant":false,"id":68054,"mutability":"mutable","name":"oldRouter","nameLocation":"2786:9:120","nodeType":"VariableDeclaration","scope":68120,"src":"2770:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68053,"nodeType":"UserDefinedTypeName","pathNode":{"id":68052,"name":"Storage","nameLocations":["2770:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"2770:7:120"},"referencedDeclaration":65259,"src":"2770:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68057,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68055,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"2798:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2798:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2770:37:120"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":68059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2834: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":68058,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69472,"src":"2818:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":68060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2818:42:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68061,"nodeType":"ExpressionStatement","src":"2818:42:120"},{"assignments":[68064],"declarations":[{"constant":false,"id":68064,"mutability":"mutable","name":"newRouter","nameLocation":"2886:9:120","nodeType":"VariableDeclaration","scope":68120,"src":"2870:25:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68063,"nodeType":"UserDefinedTypeName","pathNode":{"id":68062,"name":"Storage","nameLocations":["2870:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"2870:7:120"},"referencedDeclaration":65259,"src":"2870:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68067,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68065,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"2898:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2870:37:120"},{"expression":{"id":68074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68068,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"2959:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2969:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"2959:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":68071,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"2984:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2989:10:120","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":69910,"src":"2984:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$69665_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":68073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2959:42:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68075,"nodeType":"ExpressionStatement","src":"2959:42:120"},{"expression":{"id":68081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68076,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"3127:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3137:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"3127:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68079,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68054,"src":"3153:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3163:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"3153:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"3127:49:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68082,"nodeType":"ExpressionStatement","src":"3127:49:120"},{"expression":{"id":68091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68083,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"3253:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3263:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"3253:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3282:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69722,"src":"3253:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68088,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68054,"src":"3323:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3333:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"3323:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3352:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69722,"src":"3323:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"3253:125:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":68092,"nodeType":"ExpressionStatement","src":"3253:125:120"},{"expression":{"arguments":[{"expression":{"expression":{"id":68094,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"3691:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3701:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"3691:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3720:11:120","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":69725,"src":"3691:40:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage","typeString":"struct Gear.Validators storage ref"}},{"expression":{"arguments":[{"id":68099,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68054,"src":"3759:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68097,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"3733:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3738:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"3733:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3733:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3770:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"3733:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":68102,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3776:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3782:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"3776:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69613_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68093,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69402,"src":"3661:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69613_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:140:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68105,"nodeType":"ExpressionStatement","src":"3661:140:120"},{"expression":{"id":68111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68106,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"3870:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3880:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65250,"src":"3870:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68109,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68054,"src":"3898:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3908:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65250,"src":"3898:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"3870:53:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":68112,"nodeType":"ExpressionStatement","src":"3870:53:120"},{"expression":{"id":68118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":68113,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68064,"src":"3981:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3991:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"3981:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":68116,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68054,"src":"4003:9:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4013:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"4003:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"src":"3981:41:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68119,"nodeType":"ExpressionStatement","src":"3981:41:120"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":68047,"kind":"modifierInvocation","modifierName":{"id":68046,"name":"onlyOwner","nameLocations":["2733:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"2733:9:120"},"nodeType":"ModifierInvocation","src":"2733:9:120"},{"arguments":[{"hexValue":"32","id":68049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2757:1:120","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":68050,"kind":"modifierInvocation","modifierName":{"id":68048,"name":"reinitializer","nameLocations":["2743:13:120"],"nodeType":"IdentifierPath","referencedDeclaration":40487,"src":"2743:13:120"},"nodeType":"ModifierInvocation","src":"2743:16:120"}],"name":"reinitialize","nameLocation":"2711:12:120","parameters":{"id":68045,"nodeType":"ParameterList","parameters":[],"src":"2723:2:120"},"returnParameters":{"id":68051,"nodeType":"ParameterList","parameters":[],"src":"2760:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":68132,"nodeType":"FunctionDefinition","src":"4133:109:120","nodes":[],"body":{"id":68131,"nodeType":"Block","src":"4191:51:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68126,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4208:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4208:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4218:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"4208:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4231:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"4208:27:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68125,"id":68130,"nodeType":"Return","src":"4201:34:120"}]},"baseFunctions":[65305],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"4142:16:120","parameters":{"id":68122,"nodeType":"ParameterList","parameters":[],"src":"4158:2:120"},"returnParameters":{"id":68125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68132,"src":"4182:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68123,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4182:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4181:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68143,"nodeType":"FunctionDefinition","src":"4248:113:120","nodes":[],"body":{"id":68142,"nodeType":"Block","src":"4305:56:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68137,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4322:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4332:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"4322:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4345:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69664,"src":"4322:32:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":68136,"id":68141,"nodeType":"Return","src":"4315:39:120"}]},"baseFunctions":[65310],"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"4257:16:120","parameters":{"id":68133,"nodeType":"ParameterList","parameters":[],"src":"4273:2:120"},"returnParameters":{"id":68136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68143,"src":"4297:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":68134,"name":"uint48","nodeType":"ElementaryTypeName","src":"4297:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4296:8:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68154,"nodeType":"FunctionDefinition","src":"4367:125:120","nodes":[],"body":{"id":68153,"nodeType":"Block","src":"4433:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68148,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4450:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4450:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4460:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65238,"src":"4450:30:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69653_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":68151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4481:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69650,"src":"4450:35:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68147,"id":68152,"nodeType":"Return","src":"4443:42:120"}]},"baseFunctions":[65315],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"4376:24:120","parameters":{"id":68144,"nodeType":"ParameterList","parameters":[],"src":"4400:2:120"},"returnParameters":{"id":68147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68154,"src":"4424:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4424:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4423:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68165,"nodeType":"FunctionDefinition","src":"4498:106:120","nodes":[],"body":{"id":68164,"nodeType":"Block","src":"4550:54:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68159,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4567:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4567:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4577:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"4567:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4591:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69615,"src":"4567:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68158,"id":68163,"nodeType":"Return","src":"4560:37:120"}]},"baseFunctions":[65320],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"4507:10:120","parameters":{"id":68155,"nodeType":"ParameterList","parameters":[],"src":"4517:2:120"},"returnParameters":{"id":68158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68165,"src":"4541:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68156,"name":"address","nodeType":"ElementaryTypeName","src":"4541:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4540:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68176,"nodeType":"FunctionDefinition","src":"4610:116:120","nodes":[],"body":{"id":68175,"nodeType":"Block","src":"4667:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68170,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4684:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4684:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4694:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"4684:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4708:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69617,"src":"4684:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68169,"id":68174,"nodeType":"Return","src":"4677:42:120"}]},"baseFunctions":[65325],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"4619:15:120","parameters":{"id":68166,"nodeType":"ParameterList","parameters":[],"src":"4634:2:120"},"returnParameters":{"id":68169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68168,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68176,"src":"4658:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68167,"name":"address","nodeType":"ElementaryTypeName","src":"4658:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4657:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68187,"nodeType":"FunctionDefinition","src":"4732:112:120","nodes":[],"body":{"id":68186,"nodeType":"Block","src":"4785:59:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68181,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"4802:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4802:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4812:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"4802:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4826:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69619,"src":"4802:35:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68180,"id":68185,"nodeType":"Return","src":"4795:42:120"}]},"baseFunctions":[65330],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"4741:11:120","parameters":{"id":68177,"nodeType":"ParameterList","parameters":[],"src":"4752:2:120"},"returnParameters":{"id":68180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68187,"src":"4776:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68178,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4775:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68233,"nodeType":"FunctionDefinition","src":"4850:375:120","nodes":[],"body":{"id":68232,"nodeType":"Block","src":"4932:293:120","nodes":[],"statements":[{"assignments":[68199],"declarations":[{"constant":false,"id":68199,"mutability":"mutable","name":"_currentValidators","nameLocation":"4966:18:120","nodeType":"VariableDeclaration","scope":68232,"src":"4942:42:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68198,"nodeType":"UserDefinedTypeName","pathNode":{"id":68197,"name":"Gear.Validators","nameLocations":["4942:4:120","4947:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69613,"src":"4942:15:120"},"referencedDeclaration":69613,"src":"4942:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68205,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68202,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5013:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5013:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68200,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"4987:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"4987:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4987:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4942:81:120"},{"body":{"id":68228,"nodeType":"Block","src":"5083:114:120","statements":[{"condition":{"id":68223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5101:39:120","subExpression":{"baseExpression":{"expression":{"id":68217,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68199,"src":"5102:18:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5121:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"5102:22:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68222,"indexExpression":{"baseExpression":{"id":68219,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68190,"src":"5125:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68221,"indexExpression":{"id":68220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68207,"src":"5137:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5125:14:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5102:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68227,"nodeType":"IfStatement","src":"5097:90:120","trueBody":{"id":68226,"nodeType":"Block","src":"5142:45:120","statements":[{"expression":{"hexValue":"66616c7365","id":68224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5167:5:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":68194,"id":68225,"nodeType":"Return","src":"5160:12:120"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68210,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68207,"src":"5054:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68211,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68190,"src":"5058:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5070:6:120","memberName":"length","nodeType":"MemberAccess","src":"5058:18:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5054:22:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68229,"initializationExpression":{"assignments":[68207],"declarations":[{"constant":false,"id":68207,"mutability":"mutable","name":"i","nameLocation":"5047:1:120","nodeType":"VariableDeclaration","scope":68229,"src":"5039:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68206,"name":"uint256","nodeType":"ElementaryTypeName","src":"5039:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68209,"initialValue":{"hexValue":"30","id":68208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5051:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5039:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5078:3:120","subExpression":{"id":68214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68207,"src":"5078:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68216,"nodeType":"ExpressionStatement","src":"5078:3:120"},"nodeType":"ForStatement","src":"5034:163:120"},{"expression":{"hexValue":"74727565","id":68230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5214:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":68194,"id":68231,"nodeType":"Return","src":"5207:11:120"}]},"baseFunctions":[65338],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"4859:13:120","parameters":{"id":68191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68190,"mutability":"mutable","name":"_validators","nameLocation":"4892:11:120","nodeType":"VariableDeclaration","scope":68233,"src":"4873:30:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68188,"name":"address","nodeType":"ElementaryTypeName","src":"4873:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68189,"nodeType":"ArrayTypeName","src":"4873:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4872:32:120"},"returnParameters":{"id":68194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68233,"src":"4926:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68192,"name":"bool","nodeType":"ElementaryTypeName","src":"4926:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4925:6:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68250,"nodeType":"FunctionDefinition","src":"5231:144:120","nodes":[],"body":{"id":68249,"nodeType":"Block","src":"5299:76:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68242,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5342:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5342:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68240,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5316:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5321:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"5316:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5316:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5353:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"5316:40:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":68247,"indexExpression":{"id":68246,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68235,"src":"5357:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5316:52:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":68239,"id":68248,"nodeType":"Return","src":"5309:59:120"}]},"baseFunctions":[65345],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"5240:11:120","parameters":{"id":68236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68235,"mutability":"mutable","name":"_validator","nameLocation":"5260:10:120","nodeType":"VariableDeclaration","scope":68250,"src":"5252:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68234,"name":"address","nodeType":"ElementaryTypeName","src":"5252:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5251:20:120"},"returnParameters":{"id":68239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68250,"src":"5293:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68237,"name":"bool","nodeType":"ElementaryTypeName","src":"5293:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5292:6:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68261,"nodeType":"FunctionDefinition","src":"5381:146:120","nodes":[],"body":{"id":68260,"nodeType":"Block","src":"5448:79:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68255,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5465:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5475:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"5465:28:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5494:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69722,"src":"5465:55:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":68254,"id":68259,"nodeType":"Return","src":"5458:62:120"}]},"baseFunctions":[65350],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"5390:26:120","parameters":{"id":68251,"nodeType":"ParameterList","parameters":[],"src":"5416:2:120"},"returnParameters":{"id":68254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68261,"src":"5440:6:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":68252,"name":"uint16","nodeType":"ElementaryTypeName","src":"5440:6:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5439:8:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68275,"nodeType":"FunctionDefinition","src":"5533:126:120","nodes":[],"body":{"id":68274,"nodeType":"Block","src":"5594:65:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68269,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5637:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5637:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68267,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5611:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5616:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"5611:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5611:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5648:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"5611:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":68266,"id":68273,"nodeType":"Return","src":"5604:48:120"}]},"baseFunctions":[65356],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5542:10:120","parameters":{"id":68262,"nodeType":"ParameterList","parameters":[],"src":"5552:2:120"},"returnParameters":{"id":68266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68275,"src":"5576:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68263,"name":"address","nodeType":"ElementaryTypeName","src":"5576:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68264,"nodeType":"ArrayTypeName","src":"5576:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5575:18:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68289,"nodeType":"FunctionDefinition","src":"5665:129:120","nodes":[],"body":{"id":68288,"nodeType":"Block","src":"5722:72:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":68282,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5765:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5765:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68280,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5739:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5744:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"5739:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5739:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5776:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"5739:41:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5781:6:120","memberName":"length","nodeType":"MemberAccess","src":"5739:48:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68279,"id":68287,"nodeType":"Return","src":"5732:55:120"}]},"baseFunctions":[65361],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5674:15:120","parameters":{"id":68276,"nodeType":"ParameterList","parameters":[],"src":"5689:2:120"},"returnParameters":{"id":68279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68289,"src":"5713:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68277,"name":"uint256","nodeType":"ElementaryTypeName","src":"5713:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5712:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68316,"nodeType":"FunctionDefinition","src":"5800:284:120","nodes":[],"body":{"id":68315,"nodeType":"Block","src":"5861:223:120","nodes":[],"statements":[{"assignments":[68298],"declarations":[{"constant":false,"id":68298,"mutability":"mutable","name":"router","nameLocation":"5895:6:120","nodeType":"VariableDeclaration","scope":68315,"src":"5871:30:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68297,"nodeType":"UserDefinedTypeName","pathNode":{"id":68296,"name":"IRouter.Storage","nameLocations":["5871:7:120","5879:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"5871:15:120"},"referencedDeclaration":65259,"src":"5871:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68301,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68299,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"5904:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5904:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5871:42:120"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":68306,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68298,"src":"5994:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68304,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5968:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5973:20:120","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":70134,"src":"5968:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5968:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6002:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"5968:38:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":68309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6007:6:120","memberName":"length","nodeType":"MemberAccess","src":"5968:45:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":68310,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68298,"src":"6015:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6022:18:120","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":65246,"src":"6015:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$69729_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":68312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6041:26:120","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":69722,"src":"6015:52:120","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":68302,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"5930:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5935:19:120","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":70275,"src":"5930:24:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint256,uint16) pure returns (uint256)"}},"id":68313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5930:147:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68293,"id":68314,"nodeType":"Return","src":"5923:154:120"}]},"baseFunctions":[65366],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"5809:19:120","parameters":{"id":68290,"nodeType":"ParameterList","parameters":[],"src":"5828:2:120"},"returnParameters":{"id":68293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68316,"src":"5852:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68291,"name":"uint256","nodeType":"ElementaryTypeName","src":"5852:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5851:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68327,"nodeType":"FunctionDefinition","src":"6090:130:120","nodes":[],"body":{"id":68326,"nodeType":"Block","src":"6171:49:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68322,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"6188:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6188:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6198:15:120","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":65250,"src":"6188:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":68321,"id":68325,"nodeType":"Return","src":"6181:32:120"}]},"baseFunctions":[65372],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"6099:15:120","parameters":{"id":68317,"nodeType":"ParameterList","parameters":[],"src":"6114:2:120"},"returnParameters":{"id":68321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68327,"src":"6138:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":68319,"nodeType":"UserDefinedTypeName","pathNode":{"id":68318,"name":"Gear.ComputationSettings","nameLocations":["6138:4:120","6143:19:120"],"nodeType":"IdentifierPath","referencedDeclaration":69658,"src":"6138:24:120"},"referencedDeclaration":69658,"src":"6138:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$69658_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"6137:33:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68343,"nodeType":"FunctionDefinition","src":"6226:134:120","nodes":[],"body":{"id":68342,"nodeType":"Block","src":"6299:61:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68335,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"6316:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6326:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"6316:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6339:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"6316:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68340,"indexExpression":{"id":68339,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68329,"src":"6345:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6316:37:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"functionReturnParameters":68334,"id":68341,"nodeType":"Return","src":"6309:44:120"}]},"baseFunctions":[65380],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"6235:9:120","parameters":{"id":68330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68329,"mutability":"mutable","name":"_codeId","nameLocation":"6253:7:120","nodeType":"VariableDeclaration","scope":68343,"src":"6245:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6245:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6244:17:120"},"returnParameters":{"id":68334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68343,"src":"6283:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"},"typeName":{"id":68332,"nodeType":"UserDefinedTypeName","pathNode":{"id":68331,"name":"Gear.CodeState","nameLocations":["6283:4:120","6288:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69648,"src":"6283:14:120"},"referencedDeclaration":69648,"src":"6283:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"6282:16:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68401,"nodeType":"FunctionDefinition","src":"6366:378:120","nodes":[],"body":{"id":68400,"nodeType":"Block","src":"6463:281:120","nodes":[],"statements":[{"assignments":[68355],"declarations":[{"constant":false,"id":68355,"mutability":"mutable","name":"router","nameLocation":"6489:6:120","nodeType":"VariableDeclaration","scope":68400,"src":"6473:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68354,"nodeType":"UserDefinedTypeName","pathNode":{"id":68353,"name":"Storage","nameLocations":["6473:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"6473:7:120"},"referencedDeclaration":65259,"src":"6473:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68358,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68356,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"6498:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6473:34:120"},{"assignments":[68364],"declarations":[{"constant":false,"id":68364,"mutability":"mutable","name":"res","nameLocation":"6542:3:120","nodeType":"VariableDeclaration","scope":68400,"src":"6518:27:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68362,"nodeType":"UserDefinedTypeName","pathNode":{"id":68361,"name":"Gear.CodeState","nameLocations":["6518:4:120","6523:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69648,"src":"6518:14:120"},"referencedDeclaration":69648,"src":"6518:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68363,"nodeType":"ArrayTypeName","src":"6518:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":68372,"initialValue":{"arguments":[{"expression":{"id":68369,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68346,"src":"6569:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6579:6:120","memberName":"length","nodeType":"MemberAccess","src":"6569:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6548:20:120","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":68366,"nodeType":"UserDefinedTypeName","pathNode":{"id":68365,"name":"Gear.CodeState","nameLocations":["6552:4:120","6557:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69648,"src":"6552:14:120"},"referencedDeclaration":69648,"src":"6552:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68367,"nodeType":"ArrayTypeName","src":"6552:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":68371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6548:38:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6518:68:120"},{"body":{"id":68396,"nodeType":"Block","src":"6644:73:120","statements":[{"expression":{"id":68394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68384,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68364,"src":"6658:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":68386,"indexExpression":{"id":68385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68374,"src":"6662:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6658:6:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68387,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68355,"src":"6667:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6674:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"6667:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6687:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"6667:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68393,"indexExpression":{"baseExpression":{"id":68390,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68346,"src":"6693:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68392,"indexExpression":{"id":68391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68374,"src":"6703:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6693:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6667:39:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"6658:48:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68395,"nodeType":"ExpressionStatement","src":"6658:48:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68377,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68374,"src":"6617:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68378,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68346,"src":"6621:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":68379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6631:6:120","memberName":"length","nodeType":"MemberAccess","src":"6621:16:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6617:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68397,"initializationExpression":{"assignments":[68374],"declarations":[{"constant":false,"id":68374,"mutability":"mutable","name":"i","nameLocation":"6610:1:120","nodeType":"VariableDeclaration","scope":68397,"src":"6602:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68373,"name":"uint256","nodeType":"ElementaryTypeName","src":"6602:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68376,"initialValue":{"hexValue":"30","id":68375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6614:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6602:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6639:3:120","subExpression":{"id":68381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68374,"src":"6639:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68383,"nodeType":"ExpressionStatement","src":"6639:3:120"},"nodeType":"ForStatement","src":"6597:120:120"},{"expression":{"id":68398,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68364,"src":"6734:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":68352,"id":68399,"nodeType":"Return","src":"6727:10:120"}]},"baseFunctions":[65390],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"6375:11:120","parameters":{"id":68347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68346,"mutability":"mutable","name":"_codesIds","nameLocation":"6406:9:120","nodeType":"VariableDeclaration","scope":68401,"src":"6387:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6387:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68345,"nodeType":"ArrayTypeName","src":"6387:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6386:30:120"},"returnParameters":{"id":68352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68401,"src":"6438:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":68349,"nodeType":"UserDefinedTypeName","pathNode":{"id":68348,"name":"Gear.CodeState","nameLocations":["6438:4:120","6443:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":69648,"src":"6438:14:120"},"referencedDeclaration":69648,"src":"6438:14:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68350,"nodeType":"ArrayTypeName","src":"6438:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$69648_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"6437:25:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68416,"nodeType":"FunctionDefinition","src":"6750:140:120","nodes":[],"body":{"id":68415,"nodeType":"Block","src":"6823:67:120","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68408,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"6840:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6840:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6850:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"6840:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6863:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69686,"src":"6840:31:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68413,"indexExpression":{"id":68412,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68403,"src":"6872:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6840:43:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":68407,"id":68414,"nodeType":"Return","src":"6833:50:120"}]},"baseFunctions":[65397],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"6759:13:120","parameters":{"id":68404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68403,"mutability":"mutable","name":"_programId","nameLocation":"6781:10:120","nodeType":"VariableDeclaration","scope":68416,"src":"6773:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68402,"name":"address","nodeType":"ElementaryTypeName","src":"6773:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6772:20:120"},"returnParameters":{"id":68407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68416,"src":"6814:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6814:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6813:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68471,"nodeType":"FunctionDefinition","src":"6896:376:120","nodes":[],"body":{"id":68470,"nodeType":"Block","src":"6993:279:120","nodes":[],"statements":[{"assignments":[68427],"declarations":[{"constant":false,"id":68427,"mutability":"mutable","name":"router","nameLocation":"7019:6:120","nodeType":"VariableDeclaration","scope":68470,"src":"7003:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68426,"nodeType":"UserDefinedTypeName","pathNode":{"id":68425,"name":"Storage","nameLocations":["7003:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"7003:7:120"},"referencedDeclaration":65259,"src":"7003:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68430,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68428,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"7028:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7028:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7003:34:120"},{"assignments":[68435],"declarations":[{"constant":false,"id":68435,"mutability":"mutable","name":"res","nameLocation":"7065:3:120","nodeType":"VariableDeclaration","scope":68470,"src":"7048:20:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7048:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68434,"nodeType":"ArrayTypeName","src":"7048:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":68442,"initialValue":{"arguments":[{"expression":{"id":68439,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68419,"src":"7085:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7098:6:120","memberName":"length","nodeType":"MemberAccess","src":"7085:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7071: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":68436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7075:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68437,"nodeType":"ArrayTypeName","src":"7075:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":68441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7071:34:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7048:57:120"},{"body":{"id":68466,"nodeType":"Block","src":"7166:79:120","statements":[{"expression":{"id":68464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":68454,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"7180:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":68456,"indexExpression":{"id":68455,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68444,"src":"7184:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7180:6:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":68457,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68427,"src":"7189:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7196:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"7189:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7209:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69686,"src":"7189:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":68463,"indexExpression":{"baseExpression":{"id":68460,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68419,"src":"7218:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68462,"indexExpression":{"id":68461,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68444,"src":"7231:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7218:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7189:45:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7180:54:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68465,"nodeType":"ExpressionStatement","src":"7180:54:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68447,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68444,"src":"7136:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68448,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68419,"src":"7140:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":68449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7153:6:120","memberName":"length","nodeType":"MemberAccess","src":"7140:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7136:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68467,"initializationExpression":{"assignments":[68444],"declarations":[{"constant":false,"id":68444,"mutability":"mutable","name":"i","nameLocation":"7129:1:120","nodeType":"VariableDeclaration","scope":68467,"src":"7121:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68443,"name":"uint256","nodeType":"ElementaryTypeName","src":"7121:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68446,"initialValue":{"hexValue":"30","id":68445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7133:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7121:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7161:3:120","subExpression":{"id":68451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68444,"src":"7161:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68453,"nodeType":"ExpressionStatement","src":"7161:3:120"},"nodeType":"ForStatement","src":"7116:129:120"},{"expression":{"id":68468,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68435,"src":"7262:3:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":68424,"id":68469,"nodeType":"Return","src":"7255:10:120"}]},"baseFunctions":[65406],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"6905:15:120","parameters":{"id":68420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68419,"mutability":"mutable","name":"_programsIds","nameLocation":"6940:12:120","nodeType":"VariableDeclaration","scope":68471,"src":"6921:31:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68417,"name":"address","nodeType":"ElementaryTypeName","src":"6921:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68418,"nodeType":"ArrayTypeName","src":"6921:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6920:33:120"},"returnParameters":{"id":68424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68471,"src":"6975:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":68421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6975:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68422,"nodeType":"ArrayTypeName","src":"6975:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6974:18:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68482,"nodeType":"FunctionDefinition","src":"7278:115:120","nodes":[],"body":{"id":68481,"nodeType":"Block","src":"7333:60:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68476,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"7350:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7350:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7360:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"7350:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7373:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69688,"src":"7350:36:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68475,"id":68480,"nodeType":"Return","src":"7343:43:120"}]},"baseFunctions":[65411],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"7287:13:120","parameters":{"id":68472,"nodeType":"ParameterList","parameters":[],"src":"7300:2:120"},"returnParameters":{"id":68475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68482,"src":"7324:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68493,"nodeType":"FunctionDefinition","src":"7399:127:120","nodes":[],"body":{"id":68492,"nodeType":"Block","src":"7460:66:120","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68487,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"7477:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7477:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7487:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"7477:22:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7500:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69690,"src":"7477:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":68486,"id":68491,"nodeType":"Return","src":"7470:49:120"}]},"baseFunctions":[65416],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"7408:19:120","parameters":{"id":68483,"nodeType":"ParameterList","parameters":[],"src":"7427:2:120"},"returnParameters":{"id":68486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68493,"src":"7451:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68484,"name":"uint256","nodeType":"ElementaryTypeName","src":"7451:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7450:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":68508,"nodeType":"FunctionDefinition","src":"7552:116:120","nodes":[],"body":{"id":68507,"nodeType":"Block","src":"7609:59:120","nodes":[],"statements":[{"expression":{"id":68505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68500,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"7619:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7619:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7629:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"7619:23:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":68503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7643:6:120","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":69615,"src":"7619:30:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":68504,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68495,"src":"7652:9:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7619:42:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":68506,"nodeType":"ExpressionStatement","src":"7619:42:120"}]},"baseFunctions":[65421],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":68498,"kind":"modifierInvocation","modifierName":{"id":68497,"name":"onlyOwner","nameLocations":["7599:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"7599:9:120"},"nodeType":"ModifierInvocation","src":"7599:9:120"}],"name":"setMirror","nameLocation":"7561:9:120","parameters":{"id":68496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68495,"mutability":"mutable","name":"newMirror","nameLocation":"7579:9:120","nodeType":"VariableDeclaration","scope":68508,"src":"7571:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68494,"name":"address","nodeType":"ElementaryTypeName","src":"7571:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7570:19:120"},"returnParameters":{"id":68499,"nodeType":"ParameterList","parameters":[],"src":"7609:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68560,"nodeType":"FunctionDefinition","src":"7690:398:120","nodes":[],"body":{"id":68559,"nodeType":"Block","src":"7728:360:120","nodes":[],"statements":[{"assignments":[68513],"declarations":[{"constant":false,"id":68513,"mutability":"mutable","name":"router","nameLocation":"7754:6:120","nodeType":"VariableDeclaration","scope":68559,"src":"7738:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68512,"nodeType":"UserDefinedTypeName","pathNode":{"id":68511,"name":"Storage","nameLocations":["7738:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"7738:7:120"},"referencedDeclaration":65259,"src":"7738:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68516,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68514,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"7763:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7763:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7738:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68518,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68513,"src":"7791:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7798:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"7791:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7811:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"7791:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":68523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827: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":68522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7819:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7819:7:120","typeDescriptions":{}}},"id":68524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7819:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7791:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":68526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7831: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":68517,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7783:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7783:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68528,"nodeType":"ExpressionStatement","src":"7783:75:120"},{"assignments":[68530],"declarations":[{"constant":false,"id":68530,"mutability":"mutable","name":"genesisHash","nameLocation":"7877:11:120","nodeType":"VariableDeclaration","scope":68559,"src":"7869:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7869:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68536,"initialValue":{"arguments":[{"expression":{"expression":{"id":68532,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68513,"src":"7901:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7908:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"7901:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7921:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69662,"src":"7901:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68531,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"7891:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7891:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7869:59:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68538,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68530,"src":"7947:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7970: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":68540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7962:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68539,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7962:7:120","typeDescriptions":{}}},"id":68542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7962:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7947:25:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":68544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7974: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":68537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7939:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7939:67:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68546,"nodeType":"ExpressionStatement","src":"7939:67:120"},{"expression":{"id":68557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":68547,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68513,"src":"8017:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8024:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"8017:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"8017:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":68553,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68513,"src":"8054:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8061:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"8054:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8074:6:120","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":69662,"src":"8054:26:120","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":68552,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"8044:9:120","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8044:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8017:64:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":68558,"nodeType":"ExpressionStatement","src":"8017:64:120"}]},"baseFunctions":[65424],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"7699:17:120","parameters":{"id":68509,"nodeType":"ParameterList","parameters":[],"src":"7716:2:120"},"returnParameters":{"id":68510,"nodeType":"ParameterList","parameters":[],"src":"7728:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68629,"nodeType":"FunctionDefinition","src":"8094:637:120","nodes":[],"body":{"id":68628,"nodeType":"Block","src":"8172:559:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":68576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68568,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68564,"src":"8190:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8205:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8190:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":68572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8219: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":68571,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"8210:8:120","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":68573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:11:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":68574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8225:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8210:16:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8190:36:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":68577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8228: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":68567,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8182:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8182:68:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68579,"nodeType":"ExpressionStatement","src":"8182:68:120"},{"assignments":[68582],"declarations":[{"constant":false,"id":68582,"mutability":"mutable","name":"router","nameLocation":"8277:6:120","nodeType":"VariableDeclaration","scope":68628,"src":"8261:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68581,"nodeType":"UserDefinedTypeName","pathNode":{"id":68580,"name":"Storage","nameLocations":["8261:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"8261:7:120"},"referencedDeclaration":65259,"src":"8261:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68585,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68583,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"8286:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8286:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8261:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68587,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68582,"src":"8313:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8320:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"8313:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8333:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"8313:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8349: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":68591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8341:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8341:7:120","typeDescriptions":{}}},"id":68593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8341:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8313:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8353: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":68586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8305:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8305:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68597,"nodeType":"ExpressionStatement","src":"8305:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"},"id":68607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68599,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68582,"src":"8444:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8451:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"8444:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8464:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"8444:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68603,"indexExpression":{"id":68602,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68562,"src":"8470:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8444:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68604,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"8482:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8487:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"8482:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69648_$","typeString":"type(enum Gear.CodeState)"}},"id":68606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8497:7:120","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":69645,"src":"8482:22:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"8444:60:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":68608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8518: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":68598,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8423:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8423:158:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68610,"nodeType":"ExpressionStatement","src":"8423:158:120"},{"expression":{"id":68621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68611,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68582,"src":"8592:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8599:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"8592:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8612:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"8592:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68617,"indexExpression":{"id":68614,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68562,"src":"8618:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8592:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68618,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"8629:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8634:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"8629:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69648_$","typeString":"type(enum Gear.CodeState)"}},"id":68620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8644:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"8629:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"8592:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68622,"nodeType":"ExpressionStatement","src":"8592:71:120"},{"eventCall":{"arguments":[{"id":68624,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68562,"src":"8703:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68625,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68564,"src":"8712:11:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68623,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65278,"src":"8679:23:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":68626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8679:45:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68627,"nodeType":"EmitStatement","src":"8674:50:120"}]},"baseFunctions":[65432],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"8103:21:120","parameters":{"id":68565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68562,"mutability":"mutable","name":"_codeId","nameLocation":"8133:7:120","nodeType":"VariableDeclaration","scope":68629,"src":"8125:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68561,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8125:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68564,"mutability":"mutable","name":"_blobTxHash","nameLocation":"8150:11:120","nodeType":"VariableDeclaration","scope":68629,"src":"8142:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8142:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8124:38:120"},"returnParameters":{"id":68566,"nodeType":"ParameterList","parameters":[],"src":"8172:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68660,"nodeType":"FunctionDefinition","src":"8737:231:120","nodes":[],"body":{"id":68659,"nodeType":"Block","src":"8819:149:120","nodes":[],"statements":[{"assignments":[68639],"declarations":[{"constant":false,"id":68639,"mutability":"mutable","name":"mirror","nameLocation":"8837:6:120","nodeType":"VariableDeclaration","scope":68659,"src":"8829:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68638,"name":"address","nodeType":"ElementaryTypeName","src":"8829:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68644,"initialValue":{"arguments":[{"id":68641,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68631,"src":"8861:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68642,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68633,"src":"8870:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68640,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69139,"src":"8846:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8846:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8829:47:120"},{"expression":{"arguments":[{"expression":{"id":68649,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8914:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8918:6:120","memberName":"sender","nodeType":"MemberAccess","src":"8914:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":68653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8934: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":68652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8926:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":68651,"name":"address","nodeType":"ElementaryTypeName","src":"8926:7:120","typeDescriptions":{}}},"id":68654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8926: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":68646,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68639,"src":"8895:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68645,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65179,"src":"8887:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65179_$","typeString":"type(contract IMirror)"}},"id":68647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8887:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65179","typeString":"contract IMirror"}},"id":68648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8903:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65170,"src":"8887:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8887:50:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68656,"nodeType":"ExpressionStatement","src":"8887:50:120"},{"expression":{"id":68657,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68639,"src":"8955:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68637,"id":68658,"nodeType":"Return","src":"8948:13:120"}]},"baseFunctions":[65442],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"8746:13:120","parameters":{"id":68634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68631,"mutability":"mutable","name":"_codeId","nameLocation":"8768:7:120","nodeType":"VariableDeclaration","scope":68660,"src":"8760:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8760:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68633,"mutability":"mutable","name":"_salt","nameLocation":"8785:5:120","nodeType":"VariableDeclaration","scope":68660,"src":"8777:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8777:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8759:32:120"},"returnParameters":{"id":68637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68660,"src":"8810:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68635,"name":"address","nodeType":"ElementaryTypeName","src":"8810:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8809:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68704,"nodeType":"FunctionDefinition","src":"8974:390:120","nodes":[],"body":{"id":68703,"nodeType":"Block","src":"9109:255:120","nodes":[],"statements":[{"assignments":[68672],"declarations":[{"constant":false,"id":68672,"mutability":"mutable","name":"mirror","nameLocation":"9127:6:120","nodeType":"VariableDeclaration","scope":68703,"src":"9119:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68671,"name":"address","nodeType":"ElementaryTypeName","src":"9119:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68677,"initialValue":{"arguments":[{"id":68674,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68664,"src":"9151:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68675,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68666,"src":"9160:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":68673,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69139,"src":"9136:14:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":68676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9136:30:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9119:47:120"},{"assignments":[68679],"declarations":[{"constant":false,"id":68679,"mutability":"mutable","name":"decoder","nameLocation":"9184:7:120","nodeType":"VariableDeclaration","scope":68703,"src":"9176:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68678,"name":"address","nodeType":"ElementaryTypeName","src":"9176:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":68691,"initialValue":{"arguments":[{"id":68681,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68662,"src":"9209:12:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":68685,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68664,"src":"9250:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68686,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68666,"src":"9259:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68683,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9233:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9237:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"9233:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9233:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68682,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9223:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9223:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68689,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68672,"src":"9268: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":68680,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69168,"src":"9194: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":68690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9194:81:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9176:99:120"},{"expression":{"arguments":[{"expression":{"id":68696,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9313:3:120","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":68697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9317:6:120","memberName":"sender","nodeType":"MemberAccess","src":"9313:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":68698,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68679,"src":"9325:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":68693,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68672,"src":"9294:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":68692,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65179,"src":"9286:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65179_$","typeString":"type(contract IMirror)"}},"id":68694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:15:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65179","typeString":"contract IMirror"}},"id":68695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9302:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65170,"src":"9286:26:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":68699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68700,"nodeType":"ExpressionStatement","src":"9286:47:120"},{"expression":{"id":68701,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68672,"src":"9351:6:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68670,"id":68702,"nodeType":"Return","src":"9344:13:120"}]},"baseFunctions":[65454],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"8983:24:120","parameters":{"id":68667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68662,"mutability":"mutable","name":"_decoderImpl","nameLocation":"9016:12:120","nodeType":"VariableDeclaration","scope":68704,"src":"9008:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68661,"name":"address","nodeType":"ElementaryTypeName","src":"9008:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68664,"mutability":"mutable","name":"_codeId","nameLocation":"9038:7:120","nodeType":"VariableDeclaration","scope":68704,"src":"9030:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68663,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9030:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":68666,"mutability":"mutable","name":"_salt","nameLocation":"9055:5:120","nodeType":"VariableDeclaration","scope":68704,"src":"9047:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9047:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9007:54:120"},"returnParameters":{"id":68670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68704,"src":"9096:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68668,"name":"address","nodeType":"ElementaryTypeName","src":"9096:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9095:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68822,"nodeType":"FunctionDefinition","src":"9444:1250:120","nodes":[],"body":{"id":68821,"nodeType":"Block","src":"9555:1139:120","nodes":[],"statements":[{"assignments":[68716],"declarations":[{"constant":false,"id":68716,"mutability":"mutable","name":"router","nameLocation":"9581:6:120","nodeType":"VariableDeclaration","scope":68821,"src":"9565:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68715,"nodeType":"UserDefinedTypeName","pathNode":{"id":68714,"name":"Storage","nameLocations":["9565:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"9565:7:120"},"referencedDeclaration":65259,"src":"9565:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68719,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68717,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"9590:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9590:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9565:34:120"},{"assignments":[68721],"declarations":[{"constant":false,"id":68721,"mutability":"mutable","name":"currentEraIndex","nameLocation":"9618:15:120","nodeType":"VariableDeclaration","scope":68821,"src":"9610:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68720,"name":"uint256","nodeType":"ElementaryTypeName","src":"9610:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68733,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68722,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9637:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9643:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"9637:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68724,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"9655:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9662:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"9655:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68726,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9675:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69664,"src":"9655:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9637:47:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":68728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9636:49:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":68729,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"9688:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9695:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"9688:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9705:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69715,"src":"9688:20:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9636:72:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9610:98:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68735,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68708,"src":"9727:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9738:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69625,"src":"9727:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68737,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68721,"src":"9750:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":68738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9768:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9750:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9727:42:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6d6d69746d656e742065726120696e646578206973206e6f74206e6578742065726120696e646578","id":68741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9771: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":68734,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9719:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9719:97:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68743,"nodeType":"ExpressionStatement","src":"9719:97:120"},{"assignments":[68745],"declarations":[{"constant":false,"id":68745,"mutability":"mutable","name":"nextEraStart","nameLocation":"9835:12:120","nodeType":"VariableDeclaration","scope":68821,"src":"9827:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68744,"name":"uint256","nodeType":"ElementaryTypeName","src":"9827:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68756,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68746,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"9850:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9857:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"9850:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9870:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69664,"src":"9850:29:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68749,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"9882:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9889:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"9882:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9899:3:120","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":69715,"src":"9882:20:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":68752,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68708,"src":"9905:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9916:8:120","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":69625,"src":"9905:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9882:42:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9850:74:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9827:97:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68758,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9942:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9948:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"9942:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68760,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68745,"src":"9961:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":68761,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"9976:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9983:9:120","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":65254,"src":"9976:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$69720_storage","typeString":"struct Gear.Timelines storage ref"}},"id":68763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9993:8:120","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":69717,"src":"9976:25:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9961:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9942:59:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"656c656374696f6e206973206e6f74207965742073746172746564","id":68766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10003: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":68757,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9934:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9934:99:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68768,"nodeType":"ExpressionStatement","src":"9934:99:120"},{"assignments":[68773],"declarations":[{"constant":false,"id":68773,"mutability":"mutable","name":"_validators","nameLocation":"10115:11:120","nodeType":"VariableDeclaration","scope":68821,"src":"10091:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":68772,"nodeType":"UserDefinedTypeName","pathNode":{"id":68771,"name":"Gear.Validators","nameLocations":["10091:4:120","10096:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69613,"src":"10091:15:120"},"referencedDeclaration":69613,"src":"10091:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":68778,"initialValue":{"arguments":[{"id":68776,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"10156:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":68774,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"10129:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10134:21:120","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":70161,"src":"10129:26:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$returns$_t_struct$_Validators_$69613_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":68777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10129:34:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10091:72:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68780,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68773,"src":"10181:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":68781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10193:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"10181:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68782,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10212:5:120","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":68783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10218:9:120","memberName":"timestamp","nodeType":"MemberAccess","src":"10212:15:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10181:46:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c6f6f6b73206c696b652076616c696461746f727320666f72206e657874206572612061726520616c726561647920736574","id":68785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10229: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":68779,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10173:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10173:109:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68787,"nodeType":"ExpressionStatement","src":"10173:109:120"},{"assignments":[68789],"declarations":[{"constant":false,"id":68789,"mutability":"mutable","name":"commitmentHash","nameLocation":"10301:14:120","nodeType":"VariableDeclaration","scope":68821,"src":"10293:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":68788,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10293:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":68794,"initialValue":{"arguments":[{"id":68792,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68708,"src":"10348:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":68790,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"10318:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10323:24:120","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69755,"src":"10318:29:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$69626_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":68793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10318:41:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10293:66:120"},{"expression":{"arguments":[{"arguments":[{"id":68798,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68716,"src":"10414:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"arguments":[{"id":68802,"name":"commitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68789,"src":"10449:14:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":68800,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10432:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":68801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10436:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"10432:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10432:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68799,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10422:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10422:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68805,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68711,"src":"10467:10:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_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":68796,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"10390:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10395:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69963,"src":"10390:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_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":68806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10390:88:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e657874206572612076616c696461746f7273207369676e61747572657320766572696669636174696f6e206661696c6564","id":68807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10492: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":68795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10369:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10369:185:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68809,"nodeType":"ExpressionStatement","src":"10369:185:120"},{"expression":{"arguments":[{"id":68811,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68773,"src":"10582:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":68812,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68708,"src":"10595:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":68813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10606:10:120","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":69623,"src":"10595:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":68814,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68745,"src":"10618:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$69613_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":68810,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69402,"src":"10565:16:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$69613_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,address[] memory,uint256)"}},"id":68815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10565:66:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68816,"nodeType":"ExpressionStatement","src":"10565:66:120"},{"eventCall":{"arguments":[{"id":68818,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68745,"src":"10674:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":68817,"name":"NextEraValidatorsCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65283,"src":"10647:26:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":68819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10647:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68820,"nodeType":"EmitStatement","src":"10642:45:120"}]},"baseFunctions":[65486],"documentation":{"id":68705,"nodeType":"StructuredDocumentation","src":"9398:41:120","text":"@dev Set validators for the next era."},"functionSelector":"aaf0fe6a","implemented":true,"kind":"function","modifiers":[],"name":"commitValidators","nameLocation":"9453:16:120","parameters":{"id":68712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68708,"mutability":"mutable","name":"commitment","nameLocation":"9505:10:120","nodeType":"VariableDeclaration","scope":68822,"src":"9470:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":68707,"nodeType":"UserDefinedTypeName","pathNode":{"id":68706,"name":"Gear.ValidatorsCommitment","nameLocations":["9470:4:120","9475:20:120"],"nodeType":"IdentifierPath","referencedDeclaration":69626,"src":"9470:25:120"},"referencedDeclaration":69626,"src":"9470:25:120","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$69626_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"},{"constant":false,"id":68711,"mutability":"mutable","name":"signatures","nameLocation":"9534:10:120","nodeType":"VariableDeclaration","scope":68822,"src":"9517:27:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68709,"name":"bytes","nodeType":"ElementaryTypeName","src":"9517:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68710,"nodeType":"ArrayTypeName","src":"9517:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9469:76:120"},"returnParameters":{"id":68713,"nodeType":"ParameterList","parameters":[],"src":"9555:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":68954,"nodeType":"FunctionDefinition","src":"10700:1336:120","nodes":[],"body":{"id":68953,"nodeType":"Block","src":"10809:1227:120","nodes":[],"statements":[{"assignments":[68834],"declarations":[{"constant":false,"id":68834,"mutability":"mutable","name":"router","nameLocation":"10835:6:120","nodeType":"VariableDeclaration","scope":68953,"src":"10819:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68833,"nodeType":"UserDefinedTypeName","pathNode":{"id":68832,"name":"Storage","nameLocations":["10819:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"10819:7:120"},"referencedDeclaration":65259,"src":"10819:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68837,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68835,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"10844:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10844:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10819:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68839,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"10871:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10878:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"10871:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10891:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"10871:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10907: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":68843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10899:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10899:7:120","typeDescriptions":{}}},"id":68845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10899:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10871:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10911: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":68838,"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":68848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10863:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68849,"nodeType":"ExpressionStatement","src":"10863:107:120"},{"assignments":[68851],"declarations":[{"constant":false,"id":68851,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"10994:21:120","nodeType":"VariableDeclaration","scope":68953,"src":"10981:34:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68850,"name":"bytes","nodeType":"ElementaryTypeName","src":"10981:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68852,"nodeType":"VariableDeclarationStatement","src":"10981:34:120"},{"body":{"id":68939,"nodeType":"Block","src":"11080:784:120","statements":[{"assignments":[68868],"declarations":[{"constant":false,"id":68868,"mutability":"mutable","name":"codeCommitment","nameLocation":"11123:14:120","nodeType":"VariableDeclaration","scope":68939,"src":"11094:43:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":68867,"nodeType":"UserDefinedTypeName","pathNode":{"id":68866,"name":"Gear.CodeCommitment","nameLocations":["11094:4:120","11099:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69644,"src":"11094:19:120"},"referencedDeclaration":69644,"src":"11094:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":68872,"initialValue":{"baseExpression":{"id":68869,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68826,"src":"11140:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69644_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68871,"indexExpression":{"id":68870,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68854,"src":"11157:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11140:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"11094:65:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"},"id":68883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":68874,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"11199:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11206:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"11199:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11219:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"11199:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68879,"indexExpression":{"expression":{"id":68877,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11225:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11240:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69641,"src":"11225:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11199:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":68880,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"11247:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11252:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"11247:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69648_$","typeString":"type(enum Gear.CodeState)"}},"id":68882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11262:19:120","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":69646,"src":"11247:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"11199:82:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":68884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11299: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":68873,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11174:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11174:194:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68886,"nodeType":"ExpressionStatement","src":"11174:194:120"},{"condition":{"expression":{"id":68887,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11387:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11402:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69643,"src":"11387:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":68918,"nodeType":"Block","src":"11578:84:120","statements":[{"expression":{"id":68916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11596:51:120","subExpression":{"baseExpression":{"expression":{"expression":{"id":68910,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"11603:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11610:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"11603:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11623:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"11603:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68915,"indexExpression":{"expression":{"id":68913,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11629:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11644:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69641,"src":"11629:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11603:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68917,"nodeType":"ExpressionStatement","src":"11596:51:120"}]},"id":68919,"nodeType":"IfStatement","src":"11383:279:120","trueBody":{"id":68909,"nodeType":"Block","src":"11409:163:120","statements":[{"expression":{"id":68900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":68889,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"11427:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11434:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"11427:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11447:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"11427:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":68896,"indexExpression":{"expression":{"id":68892,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11453:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11468:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69641,"src":"11453:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11427:44:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":68897,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"11474:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11479:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"11474:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69648_$","typeString":"type(enum Gear.CodeState)"}},"id":68899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11489:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69647,"src":"11474:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"11427:71:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"id":68901,"nodeType":"ExpressionStatement","src":"11427:71:120"},{"expression":{"id":68907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11516:41:120","subExpression":{"expression":{"expression":{"id":68902,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"11516:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11523:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"11516:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":68906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11536:19:120","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":69690,"src":"11516:39:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68908,"nodeType":"ExpressionStatement","src":"11516:41:120"}]}},{"eventCall":{"arguments":[{"expression":{"id":68921,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11698:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11713:2:120","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":69641,"src":"11698:17:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":68923,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11717:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":68924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11732:5:120","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":69643,"src":"11717:20:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":68920,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65271,"src":"11681:16:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":68925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11681:57:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68926,"nodeType":"EmitStatement","src":"11676:62:120"},{"expression":{"id":68937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":68927,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68851,"src":"11753:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":68931,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68851,"src":"11790:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":68934,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68868,"src":"11837:14:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$69644_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":68932,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"11813:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11818:18:120","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69845,"src":"11813:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$69644_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":68935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11813: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":68929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11777:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":68928,"name":"bytes","nodeType":"ElementaryTypeName","src":"11777:5:120","typeDescriptions":{}}},"id":68930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11783:6:120","memberName":"concat","nodeType":"MemberAccess","src":"11777:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":68936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11777:76:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11753:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":68938,"nodeType":"ExpressionStatement","src":"11753:100:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68857,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68854,"src":"11046:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":68858,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68826,"src":"11050:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69644_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":68859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11067:6:120","memberName":"length","nodeType":"MemberAccess","src":"11050:23:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11046:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68940,"initializationExpression":{"assignments":[68854],"declarations":[{"constant":false,"id":68854,"mutability":"mutable","name":"i","nameLocation":"11039:1:120","nodeType":"VariableDeclaration","scope":68940,"src":"11031:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68853,"name":"uint256","nodeType":"ElementaryTypeName","src":"11031:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68856,"initialValue":{"hexValue":"30","id":68855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11043:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11031:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":68862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11075:3:120","subExpression":{"id":68861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68854,"src":"11075:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68863,"nodeType":"ExpressionStatement","src":"11075:3:120"},"nodeType":"ForStatement","src":"11026:838:120"},{"expression":{"arguments":[{"arguments":[{"id":68944,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68834,"src":"11919:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":68946,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68851,"src":"11937:21:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":68945,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11927:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":68947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11927:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":68948,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68829,"src":"11961:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_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":68942,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"11895:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":68943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11900:18:120","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":69963,"src":"11895:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_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":68949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11895:78:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":68950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11987: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":68941,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11874:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11874:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68952,"nodeType":"ExpressionStatement","src":"11874:155:120"}]},"baseFunctions":[65465],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"10709:11:120","parameters":{"id":68830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68826,"mutability":"mutable","name":"_codeCommitments","nameLocation":"10752:16:120","nodeType":"VariableDeclaration","scope":68954,"src":"10721:47:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69644_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":68824,"nodeType":"UserDefinedTypeName","pathNode":{"id":68823,"name":"Gear.CodeCommitment","nameLocations":["10721:4:120","10726:14:120"],"nodeType":"IdentifierPath","referencedDeclaration":69644,"src":"10721:19:120"},"referencedDeclaration":69644,"src":"10721:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$69644_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":68825,"nodeType":"ArrayTypeName","src":"10721:21:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$69644_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68829,"mutability":"mutable","name":"_signatures","nameLocation":"10787:11:120","nodeType":"VariableDeclaration","scope":68954,"src":"10770:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68827,"name":"bytes","nodeType":"ElementaryTypeName","src":"10770:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68828,"nodeType":"ArrayTypeName","src":"10770:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"10720:79:120"},"returnParameters":{"id":68831,"nodeType":"ParameterList","parameters":[],"src":"10809:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69058,"nodeType":"FunctionDefinition","src":"12042:1310:120","nodes":[],"body":{"id":69057,"nodeType":"Block","src":"12187:1165:120","nodes":[],"statements":[{"assignments":[68968],"declarations":[{"constant":false,"id":68968,"mutability":"mutable","name":"router","nameLocation":"12213:6:120","nodeType":"VariableDeclaration","scope":69057,"src":"12197:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":68967,"nodeType":"UserDefinedTypeName","pathNode":{"id":68966,"name":"Storage","nameLocations":["12197:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"12197:7:120"},"referencedDeclaration":65259,"src":"12197:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":68971,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":68969,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"12222:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":68970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12222:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12197:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":68980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":68973,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68968,"src":"12249:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":68974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12256:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"12249:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":68975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12269:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"12249:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":68978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285: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":68977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12277:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":68976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12277:7:120","typeDescriptions":{}}},"id":68979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12249:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":68981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12289: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":68972,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12241:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12241:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68983,"nodeType":"ExpressionStatement","src":"12241:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":68988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":68985,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68958,"src":"12367:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69639_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":68986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12385:6:120","memberName":"length","nodeType":"MemberAccess","src":"12367:24:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":68987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12367:28:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f20626c6f636b20636f6d6d69746d656e747320746f20636f6d6d6974","id":68989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12397:32:120","typeDescriptions":{"typeIdentifier":"t_stringliteral_e1be5869f18ee08afce17713bdcaab647dcb2f6110b9a49ceeeba1b9cd459ce9","typeString":"literal_string \"no block commitments to commit\""},"value":"no block commitments to commit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e1be5869f18ee08afce17713bdcaab647dcb2f6110b9a49ceeeba1b9cd459ce9","typeString":"literal_string \"no block commitments to commit\""}],"id":68984,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12359:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":68990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12359:71:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":68991,"nodeType":"ExpressionStatement","src":"12359:71:120"},{"assignments":[68993],"declarations":[{"constant":false,"id":68993,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"12454:22:120","nodeType":"VariableDeclaration","scope":69057,"src":"12441:35:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":68992,"name":"bytes","nodeType":"ElementaryTypeName","src":"12441:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":68994,"nodeType":"VariableDeclarationStatement","src":"12441:35:120"},{"assignments":[68996],"declarations":[{"constant":false,"id":68996,"mutability":"mutable","name":"maxTimestamp","nameLocation":"12494:12:120","nodeType":"VariableDeclaration","scope":69057,"src":"12486:20:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68995,"name":"uint256","nodeType":"ElementaryTypeName","src":"12486:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":68998,"initialValue":{"hexValue":"30","id":68997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12509:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12486:24:120"},{"body":{"id":69042,"nodeType":"Block","src":"12576:339:120","statements":[{"assignments":[69014],"declarations":[{"constant":false,"id":69014,"mutability":"mutable","name":"blockCommitment","nameLocation":"12620:15:120","nodeType":"VariableDeclaration","scope":69042,"src":"12590:45:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69013,"nodeType":"UserDefinedTypeName","pathNode":{"id":69012,"name":"Gear.BlockCommitment","nameLocations":["12590:4:120","12595:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69639,"src":"12590:20:120"},"referencedDeclaration":69639,"src":"12590:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":69018,"initialValue":{"baseExpression":{"id":69015,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68958,"src":"12638:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69639_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":69017,"indexExpression":{"id":69016,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12656:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12638:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"12590:68:120"},{"expression":{"id":69029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69019,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68993,"src":"12672:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69023,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68993,"src":"12710:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":69025,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68968,"src":"12747:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":69026,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69014,"src":"12755:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":69024,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69237,"src":"12734:12:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65259_storage_ptr_$_t_struct$_BlockCommitment_$69639_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":69027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12734: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":69021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12697:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69020,"name":"bytes","nodeType":"ElementaryTypeName","src":"12697:5:120","typeDescriptions":{}}},"id":69022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12703:6:120","memberName":"concat","nodeType":"MemberAccess","src":"12697:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12697:75:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12672:100:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69030,"nodeType":"ExpressionStatement","src":"12672:100:120"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":69031,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69014,"src":"12790:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12806:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69630,"src":"12790:25:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":69033,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68996,"src":"12818:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12790:40:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69041,"nodeType":"IfStatement","src":"12786:119:120","trueBody":{"id":69040,"nodeType":"Block","src":"12832:73:120","statements":[{"expression":{"id":69038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69035,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68996,"src":"12850:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":69036,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69014,"src":"12865:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12881:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69630,"src":"12865:25:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12850:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69039,"nodeType":"ExpressionStatement","src":"12850:40:120"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12541:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69004,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68958,"src":"12545:17:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69639_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":69005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12563:6:120","memberName":"length","nodeType":"MemberAccess","src":"12545:24:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12541:28:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69043,"initializationExpression":{"assignments":[69000],"declarations":[{"constant":false,"id":69000,"mutability":"mutable","name":"i","nameLocation":"12534:1:120","nodeType":"VariableDeclaration","scope":69043,"src":"12526:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":68999,"name":"uint256","nodeType":"ElementaryTypeName","src":"12526:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69002,"initialValue":{"hexValue":"30","id":69001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12538:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12526:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12571:3:120","subExpression":{"id":69007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69000,"src":"12571:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69009,"nodeType":"ExpressionStatement","src":"12571:3:120"},"nodeType":"ForStatement","src":"12521:394:120"},{"expression":{"arguments":[{"arguments":[{"id":69047,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68968,"src":"13220:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":69049,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68993,"src":"13238:22:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69048,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13228:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13228:33:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69051,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68961,"src":"13263:11:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"id":69052,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68996,"src":"13276:12:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_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"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":69045,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"13194:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":69046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13199:20:120","memberName":"validateSignaturesAt","nodeType":"MemberAccess","referencedDeclaration":70118,"src":"13194:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$65259_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata,uint256) view returns (bool)"}},"id":69053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13194:95:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":69054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13303: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":69044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13173:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13173:172:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69056,"nodeType":"ExpressionStatement","src":"13173:172:120"}]},"baseFunctions":[65476],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":68964,"kind":"modifierInvocation","modifierName":{"id":68963,"name":"nonReentrant","nameLocations":["12170:12:120"],"nodeType":"IdentifierPath","referencedDeclaration":44262,"src":"12170:12:120"},"nodeType":"ModifierInvocation","src":"12170:12:120"}],"name":"commitBlocks","nameLocation":"12051:12:120","parameters":{"id":68962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68958,"mutability":"mutable","name":"_blockCommitments","nameLocation":"12096:17:120","nodeType":"VariableDeclaration","scope":69058,"src":"12064:49:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69639_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":68956,"nodeType":"UserDefinedTypeName","pathNode":{"id":68955,"name":"Gear.BlockCommitment","nameLocations":["12064:4:120","12069:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69639,"src":"12064:20:120"},"referencedDeclaration":69639,"src":"12064:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":68957,"nodeType":"ArrayTypeName","src":"12064:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$69639_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":68961,"mutability":"mutable","name":"_signatures","nameLocation":"12132:11:120","nodeType":"VariableDeclaration","scope":69058,"src":"12115:28:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":68959,"name":"bytes","nodeType":"ElementaryTypeName","src":"12115:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":68960,"nodeType":"ArrayTypeName","src":"12115:7:120","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"12063:81:120"},"returnParameters":{"id":68965,"nodeType":"ParameterList","parameters":[],"src":"12187:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":69139,"nodeType":"FunctionDefinition","src":"13394:887:120","nodes":[],"body":{"id":69138,"nodeType":"Block","src":"13476:805:120","nodes":[],"statements":[{"assignments":[69069],"declarations":[{"constant":false,"id":69069,"mutability":"mutable","name":"router","nameLocation":"13502:6:120","nodeType":"VariableDeclaration","scope":69138,"src":"13486:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69068,"nodeType":"UserDefinedTypeName","pathNode":{"id":69067,"name":"Storage","nameLocations":["13486:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"13486:7:120"},"referencedDeclaration":65259,"src":"13486:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":69072,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69070,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69415,"src":"13511:7:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$65259_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":69071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13511:9:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13486:34:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69074,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69069,"src":"13538:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13545:12:120","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":65234,"src":"13538:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$69665_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":69076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13558:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69660,"src":"13538:24:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":69079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13574: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":69078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13566:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13566:7:120","typeDescriptions":{}}},"id":69080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13566:10:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13538:38:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":69082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13578: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":69073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13530:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13530:107:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69084,"nodeType":"ExpressionStatement","src":"13530:107:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"},"id":69094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69086,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69069,"src":"13669:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13676:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"13669:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13689:5:120","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":69682,"src":"13669:25:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$69648_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":69090,"indexExpression":{"id":69089,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69060,"src":"13695:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13669:34:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":69091,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"13707:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":69092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13712:9:120","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":69648,"src":"13707:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$69648_$","typeString":"type(enum Gear.CodeState)"}},"id":69093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13722:9:120","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":69647,"src":"13707:24:120","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$69648","typeString":"enum Gear.CodeState"}},"src":"13669:62:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":69095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13745: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":69085,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13648:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13648:155:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69097,"nodeType":"ExpressionStatement","src":"13648:155:120"},{"assignments":[69099],"declarations":[{"constant":false,"id":69099,"mutability":"mutable","name":"actorId","nameLocation":"13972:7:120","nodeType":"VariableDeclaration","scope":69138,"src":"13964:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69098,"name":"address","nodeType":"ElementaryTypeName","src":"13964:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69113,"initialValue":{"arguments":[{"expression":{"expression":{"id":69102,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69069,"src":"14020:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14027:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"14020:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14041:11:120","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":69617,"src":"14020:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":69108,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69060,"src":"14081:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69109,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69062,"src":"14090:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69106,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14064:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14068:12:120","memberName":"encodePacked","nodeType":"MemberAccess","src":"14064:16:120","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14064:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69105,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14054:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14054:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69100,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"13994:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14001:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"13994:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13994:104:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13964:134:120"},{"expression":{"id":69122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":69114,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69069,"src":"14109:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14116:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"14109:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14129:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69686,"src":"14109:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69120,"indexExpression":{"id":69117,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69099,"src":"14138:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14109:37:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69121,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69060,"src":"14149:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14109:47:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69123,"nodeType":"ExpressionStatement","src":"14109:47:120"},{"expression":{"id":69129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14166:35:120","subExpression":{"expression":{"expression":{"id":69124,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69069,"src":"14166:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14173:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"14166:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14186:13:120","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":69688,"src":"14166:33:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69130,"nodeType":"ExpressionStatement","src":"14166:35:120"},{"eventCall":{"arguments":[{"id":69132,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69099,"src":"14232:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69133,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69060,"src":"14241:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69131,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65297,"src":"14217:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":69134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14217:32:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69135,"nodeType":"EmitStatement","src":"14212:37:120"},{"expression":{"id":69136,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69099,"src":"14267:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69066,"id":69137,"nodeType":"Return","src":"14260:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"13403:14:120","parameters":{"id":69063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69060,"mutability":"mutable","name":"_codeId","nameLocation":"13426:7:120","nodeType":"VariableDeclaration","scope":69139,"src":"13418:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13418:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69062,"mutability":"mutable","name":"_salt","nameLocation":"13443:5:120","nodeType":"VariableDeclaration","scope":69139,"src":"13435:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69061,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13435:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13417:32:120"},"returnParameters":{"id":69066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69139,"src":"13467:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69064,"name":"address","nodeType":"ElementaryTypeName","src":"13467:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13466:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69168,"nodeType":"FunctionDefinition","src":"14287:270:120","nodes":[],"body":{"id":69167,"nodeType":"Block","src":"14394:163:120","nodes":[],"statements":[{"assignments":[69151],"declarations":[{"constant":false,"id":69151,"mutability":"mutable","name":"decoder","nameLocation":"14412:7:120","nodeType":"VariableDeclaration","scope":69167,"src":"14404:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69150,"name":"address","nodeType":"ElementaryTypeName","src":"14404:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69157,"initialValue":{"arguments":[{"id":69154,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69141,"src":"14448:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69155,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69143,"src":"14465:5:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69152,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42512,"src":"14422:6:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$42512_$","typeString":"type(library Clones)"}},"id":69153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14429:18:120","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":42430,"src":"14422:25:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":69156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14422:49:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14404:67:120"},{"expression":{"arguments":[{"id":69162,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69145,"src":"14517:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":69159,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69151,"src":"14497:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69158,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65216,"src":"14482:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$65216_$","typeString":"type(contract IMirrorDecoder)"}},"id":69160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14482:23:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$65216","typeString":"contract IMirrorDecoder"}},"id":69161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14506:10:120","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":65186,"src":"14482:34:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":69163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14482:43:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69164,"nodeType":"ExpressionStatement","src":"14482:43:120"},{"expression":{"id":69165,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69151,"src":"14543:7:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":69149,"id":69166,"nodeType":"Return","src":"14536:14:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"14296:14:120","parameters":{"id":69146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69141,"mutability":"mutable","name":"_implementation","nameLocation":"14319:15:120","nodeType":"VariableDeclaration","scope":69168,"src":"14311:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69140,"name":"address","nodeType":"ElementaryTypeName","src":"14311:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69143,"mutability":"mutable","name":"_salt","nameLocation":"14344:5:120","nodeType":"VariableDeclaration","scope":69168,"src":"14336:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69142,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14336:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":69145,"mutability":"mutable","name":"_mirror","nameLocation":"14359:7:120","nodeType":"VariableDeclaration","scope":69168,"src":"14351:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69144,"name":"address","nodeType":"ElementaryTypeName","src":"14351:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14310:57:120"},"returnParameters":{"id":69149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69168,"src":"14385:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69147,"name":"address","nodeType":"ElementaryTypeName","src":"14385:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14384:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69237,"nodeType":"FunctionDefinition","src":"14563:1094:120","nodes":[],"body":{"id":69236,"nodeType":"Block","src":"14703:954:120","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":69180,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69171,"src":"14734:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14741:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65238,"src":"14734:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69653_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14762:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69650,"src":"14734:32:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":69183,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"14770:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14787:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69632,"src":"14770:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14734:75:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":69186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14823: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":69179,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14713:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14713:159:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69188,"nodeType":"ExpressionStatement","src":"14713:159:120"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":69192,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"14915:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14932:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69634,"src":"14915:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69190,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"14891:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":69191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14896:18:120","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":69826,"src":"14891:23:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":69194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14891:58:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":69195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14951: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":69189,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14883:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14883:109:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69197,"nodeType":"ExpressionStatement","src":"14883:109:120"},{"expression":{"id":69208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69198,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69171,"src":"15132:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15139:20:120","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":65238,"src":"15132:27:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69653_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":69203,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15186:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15203:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69628,"src":"15186:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69205,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15209:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15226:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69630,"src":"15209:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":69201,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"15162:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":69202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15167:18:120","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":69653,"src":"15162:23:120","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$69653_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":69207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15162:74:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69653_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"15132:104:120","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$69653_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":69209,"nodeType":"ExpressionStatement","src":"15132:104:120"},{"assignments":[69211],"declarations":[{"constant":false,"id":69211,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"15255:21:120","nodeType":"VariableDeclaration","scope":69236,"src":"15247:29:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15247:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69217,"initialValue":{"arguments":[{"id":69213,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69171,"src":"15298:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":69214,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15306:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15323:11:120","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":69638,"src":"15306:28:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":69212,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69322,"src":"15279:18:120","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$65259_storage_ptr_$_t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":69216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15279:56:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"15247:88:120"},{"eventCall":{"arguments":[{"expression":{"id":69219,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15366:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15383:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69628,"src":"15366:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69218,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65264,"src":"15351:14:120","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":69221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15351:37:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69222,"nodeType":"EmitStatement","src":"15346:42:120"},{"expression":{"arguments":[{"expression":{"id":69225,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15444:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15461:4:120","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":69628,"src":"15444:21:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69227,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15479:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15496:9:120","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":69630,"src":"15479:26:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":69229,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15519:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15536:22:120","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":69632,"src":"15519:39:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":69231,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69174,"src":"15572:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":69232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15589:16:120","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":69634,"src":"15572:33:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":69233,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69211,"src":"15619: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":69223,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70341,"src":"15406:4:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$70341_$","typeString":"type(library Gear)"}},"id":69224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15411:19:120","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":69782,"src":"15406: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":69234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15406:244:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69178,"id":69235,"nodeType":"Return","src":"15399:251:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"14572:12:120","parameters":{"id":69175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69171,"mutability":"mutable","name":"router","nameLocation":"14601:6:120","nodeType":"VariableDeclaration","scope":69237,"src":"14585:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69170,"nodeType":"UserDefinedTypeName","pathNode":{"id":69169,"name":"Storage","nameLocations":["14585:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"14585:7:120"},"referencedDeclaration":65259,"src":"14585:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69174,"mutability":"mutable","name":"_blockCommitment","nameLocation":"14639:16:120","nodeType":"VariableDeclaration","scope":69237,"src":"14609:46:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":69173,"nodeType":"UserDefinedTypeName","pathNode":{"id":69172,"name":"Gear.BlockCommitment","nameLocations":["14609:4:120","14614:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69639,"src":"14609:20:120"},"referencedDeclaration":69639,"src":"14609:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$69639_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"14584:72:120"},"returnParameters":{"id":69178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69237,"src":"14690:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14690:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14689:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69322,"nodeType":"FunctionDefinition","src":"15663:839:120","nodes":[],"body":{"id":69321,"nodeType":"Block","src":"15807:695:120","nodes":[],"statements":[{"assignments":[69250],"declarations":[{"constant":false,"id":69250,"mutability":"mutable","name":"transitionsHashes","nameLocation":"15830:17:120","nodeType":"VariableDeclaration","scope":69321,"src":"15817:30:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69249,"name":"bytes","nodeType":"ElementaryTypeName","src":"15817:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":69251,"nodeType":"VariableDeclarationStatement","src":"15817:30:120"},{"body":{"id":69315,"nodeType":"Block","src":"15908:542:120","statements":[{"assignments":[69267],"declarations":[{"constant":false,"id":69267,"mutability":"mutable","name":"transition","nameLocation":"15952:10:120","nodeType":"VariableDeclaration","scope":69315,"src":"15922:40:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":69266,"nodeType":"UserDefinedTypeName","pathNode":{"id":69265,"name":"Gear.StateTransition","nameLocations":["15922:4:120","15927:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69713,"src":"15922:20:120"},"referencedDeclaration":69713,"src":"15922:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":69271,"initialValue":{"baseExpression":{"id":69268,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69244,"src":"15965:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69270,"indexExpression":{"id":69269,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69253,"src":"15978:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15965:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"15922:58:120"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":69273,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69240,"src":"16020:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16027:12:120","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":65258,"src":"16020:19:120","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$69691_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":69275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16040:8:120","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":69686,"src":"16020:28:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":69278,"indexExpression":{"expression":{"id":69276,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69267,"src":"16049:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16060:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69698,"src":"16049:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16020:48:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":69279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16072:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16020:53:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":69281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16075: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":69272,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15995:7:120","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":69282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15995:143:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":69283,"nodeType":"ExpressionStatement","src":"15995:143:120"},{"expression":{"arguments":[{"expression":{"id":69290,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69267,"src":"16209:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16220:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69698,"src":"16209:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":69292,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69267,"src":"16229:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16240:14:120","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":69704,"src":"16229: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":69285,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69240,"src":"16166:6:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":69286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16173:13:120","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":65242,"src":"16166:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$69620_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":69287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16187:11:120","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":69619,"src":"16166:32:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69284,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65498,"src":"16153:12:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$65498_$","typeString":"type(contract IWrappedVara)"}},"id":69288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16153:46:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$65498","typeString":"contract IWrappedVara"}},"id":69289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16200:8:120","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43780,"src":"16153:55:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":69294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16153:102:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69295,"nodeType":"ExpressionStatement","src":"16153:102:120"},{"assignments":[69297],"declarations":[{"constant":false,"id":69297,"mutability":"mutable","name":"transitionHash","nameLocation":"16278:14:120","nodeType":"VariableDeclaration","scope":69315,"src":"16270:22:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16270:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69305,"initialValue":{"arguments":[{"id":69303,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69267,"src":"16346:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":69299,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69267,"src":"16303:10:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":69300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16314:7:120","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":69698,"src":"16303:18:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69298,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65179,"src":"16295:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$65179_$","typeString":"type(contract IMirror)"}},"id":69301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16295:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$65179","typeString":"contract IMirror"}},"id":69302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16323:22:120","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":65178,"src":"16295:50:120","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$69713_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":69304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16295:62:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16270:87:120"},{"expression":{"id":69313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":69306,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"16372:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":69310,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"16405:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":69311,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69297,"src":"16424: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":69308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16392:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69307,"name":"bytes","nodeType":"ElementaryTypeName","src":"16392:5:120","typeDescriptions":{}}},"id":69309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16398:6:120","memberName":"concat","nodeType":"MemberAccess","src":"16392:12:120","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16392:47:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"16372:67:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":69314,"nodeType":"ExpressionStatement","src":"16372:67:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69253,"src":"15878:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69257,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69244,"src":"15882:12:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":69258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15895:6:120","memberName":"length","nodeType":"MemberAccess","src":"15882:19:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15878:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69316,"initializationExpression":{"assignments":[69253],"declarations":[{"constant":false,"id":69253,"mutability":"mutable","name":"i","nameLocation":"15871:1:120","nodeType":"VariableDeclaration","scope":69316,"src":"15863:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69252,"name":"uint256","nodeType":"ElementaryTypeName","src":"15863:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69255,"initialValue":{"hexValue":"30","id":69254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15875:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15863:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15903:3:120","subExpression":{"id":69260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69253,"src":"15903:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69262,"nodeType":"ExpressionStatement","src":"15903:3:120"},"nodeType":"ForStatement","src":"15858:592:120"},{"expression":{"arguments":[{"id":69318,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69250,"src":"16477:17:120","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69317,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16467:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16467:28:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69248,"id":69320,"nodeType":"Return","src":"16460:35:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"15672:18:120","parameters":{"id":69245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69240,"mutability":"mutable","name":"router","nameLocation":"15707:6:120","nodeType":"VariableDeclaration","scope":69322,"src":"15691:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69239,"nodeType":"UserDefinedTypeName","pathNode":{"id":69238,"name":"Storage","nameLocations":["15691:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"15691:7:120"},"referencedDeclaration":65259,"src":"15691:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":69244,"mutability":"mutable","name":"_transitions","nameLocation":"15747:12:120","nodeType":"VariableDeclaration","scope":69322,"src":"15715:44:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":69242,"nodeType":"UserDefinedTypeName","pathNode":{"id":69241,"name":"Gear.StateTransition","nameLocations":["15715:4:120","15720:15:120"],"nodeType":"IdentifierPath","referencedDeclaration":69713,"src":"15715:20:120"},"referencedDeclaration":69713,"src":"15715:20:120","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$69713_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":69243,"nodeType":"ArrayTypeName","src":"15715:22:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$69713_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"15690:70:120"},"returnParameters":{"id":69248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69322,"src":"15794:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15794:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15793:9:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69402,"nodeType":"FunctionDefinition","src":"16508:618:120","nodes":[],"body":{"id":69401,"nodeType":"Block","src":"16669:457:120","nodes":[],"statements":[{"body":{"id":69360,"nodeType":"Block","src":"16733:114:120","statements":[{"assignments":[69346],"declarations":[{"constant":false,"id":69346,"mutability":"mutable","name":"_validator","nameLocation":"16755:10:120","nodeType":"VariableDeclaration","scope":69360,"src":"16747:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69345,"name":"address","nodeType":"ElementaryTypeName","src":"16747:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69351,"initialValue":{"baseExpression":{"expression":{"id":69347,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"16768:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16780:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"16768:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69350,"indexExpression":{"id":69349,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69334,"src":"16785:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16768:19:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16747:40:120"},{"expression":{"id":69358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69352,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"16801:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16813:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"16801:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69356,"indexExpression":{"id":69354,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69346,"src":"16817:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16801:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":69357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16831:5:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"16801:35:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69359,"nodeType":"ExpressionStatement","src":"16801:35:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69337,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69334,"src":"16699:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":69338,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"16703:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16715:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"16703:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16720:6:120","memberName":"length","nodeType":"MemberAccess","src":"16703:23:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16699:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69361,"initializationExpression":{"assignments":[69334],"declarations":[{"constant":false,"id":69334,"mutability":"mutable","name":"i","nameLocation":"16692:1:120","nodeType":"VariableDeclaration","scope":69361,"src":"16684:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69333,"name":"uint256","nodeType":"ElementaryTypeName","src":"16684:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69336,"initialValue":{"hexValue":"30","id":69335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16696:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16684:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16728:3:120","subExpression":{"id":69342,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69334,"src":"16728:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69344,"nodeType":"ExpressionStatement","src":"16728:3:120"},"nodeType":"ForStatement","src":"16679:168:120"},{"body":{"id":69387,"nodeType":"Block","src":"16908:111:120","statements":[{"assignments":[69374],"declarations":[{"constant":false,"id":69374,"mutability":"mutable","name":"_validator","nameLocation":"16930:10:120","nodeType":"VariableDeclaration","scope":69387,"src":"16922:18:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69373,"name":"address","nodeType":"ElementaryTypeName","src":"16922:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":69378,"initialValue":{"baseExpression":{"id":69375,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69328,"src":"16943:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69377,"indexExpression":{"id":69376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69363,"src":"16958:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16943:17:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16922:38:120"},{"expression":{"id":69385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":69379,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"16974:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16986:3:120","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":69607,"src":"16974:15:120","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":69383,"indexExpression":{"id":69381,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69374,"src":"16990:10:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16974:27:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":69384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17004:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16974:34:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69386,"nodeType":"ExpressionStatement","src":"16974:34:120"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69363,"src":"16876:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":69367,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69328,"src":"16880:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":69368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16895:6:120","memberName":"length","nodeType":"MemberAccess","src":"16880:21:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16876:25:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":69388,"initializationExpression":{"assignments":[69363],"declarations":[{"constant":false,"id":69363,"mutability":"mutable","name":"i","nameLocation":"16869:1:120","nodeType":"VariableDeclaration","scope":69388,"src":"16861:9:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69362,"name":"uint256","nodeType":"ElementaryTypeName","src":"16861:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":69365,"initialValue":{"hexValue":"30","id":69364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16873:1:120","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16861:13:120"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":69371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16903:3:120","subExpression":{"id":69370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69363,"src":"16903:1:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69372,"nodeType":"ExpressionStatement","src":"16903:3:120"},"nodeType":"ForStatement","src":"16856:163:120"},{"expression":{"id":69393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69389,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"17028:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17040:4:120","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":69610,"src":"17028:16:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69392,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69328,"src":"17047:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"17028:33:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":69394,"nodeType":"ExpressionStatement","src":"17028:33:120"},{"expression":{"id":69399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":69395,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69325,"src":"17071:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":69397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17083:16:120","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":69612,"src":"17071:28:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69398,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69330,"src":"17102:17:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17071:48:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":69400,"nodeType":"ExpressionStatement","src":"17071:48:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"16517:16:120","parameters":{"id":69331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69325,"mutability":"mutable","name":"_validators","nameLocation":"16567:11:120","nodeType":"VariableDeclaration","scope":69402,"src":"16543:35:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":69324,"nodeType":"UserDefinedTypeName","pathNode":{"id":69323,"name":"Gear.Validators","nameLocations":["16543:4:120","16548:10:120"],"nodeType":"IdentifierPath","referencedDeclaration":69613,"src":"16543:15:120"},"referencedDeclaration":69613,"src":"16543:15:120","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$69613_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":69328,"mutability":"mutable","name":"_newValidators","nameLocation":"16605:14:120","nodeType":"VariableDeclaration","scope":69402,"src":"16588:31:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":69326,"name":"address","nodeType":"ElementaryTypeName","src":"16588:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69327,"nodeType":"ArrayTypeName","src":"16588:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":69330,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"16637:17:120","nodeType":"VariableDeclaration","scope":69402,"src":"16629:25:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69329,"name":"uint256","nodeType":"ElementaryTypeName","src":"16629:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16533:127:120"},"returnParameters":{"id":69332,"nodeType":"ParameterList","parameters":[],"src":"16669:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":69415,"nodeType":"FunctionDefinition","src":"17132:192:120","nodes":[],"body":{"id":69414,"nodeType":"Block","src":"17197:127:120","nodes":[],"statements":[{"assignments":[69409],"declarations":[{"constant":false,"id":69409,"mutability":"mutable","name":"slot","nameLocation":"17215:4:120","nodeType":"VariableDeclaration","scope":69414,"src":"17207:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69408,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17207:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69412,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":69410,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69427,"src":"17222:15:120","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":69411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17222:17:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17207:32:120"},{"AST":{"nativeSrc":"17275:43:120","nodeType":"YulBlock","src":"17275:43:120","statements":[{"nativeSrc":"17289:19:120","nodeType":"YulAssignment","src":"17289:19:120","value":{"name":"slot","nativeSrc":"17304:4:120","nodeType":"YulIdentifier","src":"17304:4:120"},"variableNames":[{"name":"router.slot","nativeSrc":"17289:11:120","nodeType":"YulIdentifier","src":"17289:11:120"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":69406,"isOffset":false,"isSlot":true,"src":"17289:11:120","suffix":"slot","valueSize":1},{"declaration":69409,"isOffset":false,"isSlot":false,"src":"17304:4:120","valueSize":1}],"flags":["memory-safe"],"id":69413,"nodeType":"InlineAssembly","src":"17250:68:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"17141:7:120","parameters":{"id":69403,"nodeType":"ParameterList","parameters":[],"src":"17148:2:120"},"returnParameters":{"id":69407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69406,"mutability":"mutable","name":"router","nameLocation":"17189:6:120","nodeType":"VariableDeclaration","scope":69415,"src":"17173:22:120","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":69405,"nodeType":"UserDefinedTypeName","pathNode":{"id":69404,"name":"Storage","nameLocations":["17173:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65259,"src":"17173:7:120"},"referencedDeclaration":65259,"src":"17173:7:120","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$65259_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"17172:24:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69427,"nodeType":"FunctionDefinition","src":"17330:128:120","nodes":[],"body":{"id":69426,"nodeType":"Block","src":"17388:70:120","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":69422,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67909,"src":"17432:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69420,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"17405:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17417:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"17405: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":69423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17405:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17446:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"17405:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":69419,"id":69425,"nodeType":"Return","src":"17398:53:120"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"17339:15:120","parameters":{"id":69416,"nodeType":"ParameterList","parameters":[],"src":"17354:2:120"},"returnParameters":{"id":69419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69427,"src":"17379:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17379:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17378:9:120"},"scope":69473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":69472,"nodeType":"FunctionDefinition","src":"17464:252:120","nodes":[],"body":{"id":69471,"nodeType":"Block","src":"17532:184:120","nodes":[],"statements":[{"assignments":[69435],"declarations":[{"constant":false,"id":69435,"mutability":"mutable","name":"slot","nameLocation":"17550:4:120","nodeType":"VariableDeclaration","scope":69471,"src":"17542:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17542:7:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":69461,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":69460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":69444,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69429,"src":"17602:9:120","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17596:5:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":69442,"name":"bytes","nodeType":"ElementaryTypeName","src":"17596:5:120","typeDescriptions":{}}},"id":69445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17596:16:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69441,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"17586:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17586:27:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":69440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17578:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69439,"name":"uint256","nodeType":"ElementaryTypeName","src":"17578:7:120","typeDescriptions":{}}},"id":69447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17578:36:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":69448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17617:1:120","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17578:40:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":69437,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17567:3:120","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":69438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17571:6:120","memberName":"encode","nodeType":"MemberAccess","src":"17567:10:120","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":69450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17567:52:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":69436,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"17557:9:120","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":69451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17557:63:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":69459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"17623:23:120","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":69456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17640: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":69455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17632:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":69454,"name":"uint256","nodeType":"ElementaryTypeName","src":"17632:7:120","typeDescriptions":{}}},"id":69457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17632:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17624:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":69452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17624:7:120","typeDescriptions":{}}},"id":69458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17624:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17557:89:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17542:104:120"},{"expression":{"id":69469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":69465,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67909,"src":"17683:12:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69462,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44431,"src":"17656:11:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44431_$","typeString":"type(library StorageSlot)"}},"id":69464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17668:14:120","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44364,"src":"17656: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":69466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17656:40:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44319_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":69467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17697:5:120","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44318,"src":"17656:46:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":69468,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69435,"src":"17705:4:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17656:53:120","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":69470,"nodeType":"ExpressionStatement","src":"17656:53:120"}]},"implemented":true,"kind":"function","modifiers":[{"id":69432,"kind":"modifierInvocation","modifierName":{"id":69431,"name":"onlyOwner","nameLocations":["17522:9:120"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"17522:9:120"},"nodeType":"ModifierInvocation","src":"17522:9:120"}],"name":"_setStorageSlot","nameLocation":"17473:15:120","parameters":{"id":69430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69429,"mutability":"mutable","name":"namespace","nameLocation":"17503:9:120","nodeType":"VariableDeclaration","scope":69472,"src":"17489:23:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69428,"name":"string","nodeType":"ElementaryTypeName","src":"17489:6:120","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17488:25:120"},"returnParameters":{"id":69433,"nodeType":"ParameterList","parameters":[],"src":"17532:0:120"},"scope":69473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":67901,"name":"IRouter","nameLocations":["709:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":65487,"src":"709:7:120"},"id":67902,"nodeType":"InheritanceSpecifier","src":"709:7:120"},{"baseName":{"id":67903,"name":"OwnableUpgradeable","nameLocations":["718:18:120"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"718:18:120"},"id":67904,"nodeType":"InheritanceSpecifier","src":"718:18:120"},{"baseName":{"id":67905,"name":"ReentrancyGuardTransient","nameLocations":["738:24:120"],"nodeType":"IdentifierPath","referencedDeclaration":44307,"src":"738:24:120"},"id":67906,"nodeType":"InheritanceSpecifier","src":"738:24:120"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69473,44307,40332,41480,40586,65487],"name":"Router","nameLocation":"699:6:120","scope":69474,"usedErrors":[40168,40173,40349,40352,44174,44180,44251,44961,44966,44971],"usedEvents":[40179,40357,65264,65271,65278,65283,65290,65297,65300]}],"license":"UNLICENSED"},"id":120} \ No newline at end of file diff --git a/ethexe/ethereum/TransparentUpgradeableProxy.json b/ethexe/ethereum/TransparentUpgradeableProxy.json index 3e7737a8c85..7f4eb6d017f 100644 --- a/ethexe/ethereum/TransparentUpgradeableProxy.json +++ b/ethexe/ethereum/TransparentUpgradeableProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052610a97803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104408083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f516020610a775f395f51905f52547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f516020610a775f395f51905f5255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122013c3cca7769b458895214125c81403dc8dc970b0bef62d68d55262fd0864c69764736f6c634300081c003360803460b857601f61044038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361036f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063715018a6146102765780638da5cb5b1461024f5780639623609d1461012c578063ad3cb1cc146100df5763f2fde38b14610051575f80fd5b346100dc5760203660031901126100dc576004356001600160a01b038116908190036100da5761007f610313565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100dc57806003193601126100dc57506101286040516101026040826102cd565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102ef565b0390f35b506060366003190112610237576004356001600160a01b03811690819003610237576024356001600160a01b038116908190036102375760443567ffffffffffffffff8111610237573660238201121561023757806004013567ffffffffffffffff811161023b57604051916101ac601f8301601f1916602001846102cd565b818352366024838301011161023757815f9260246020930183860137830101526101d4610313565b823b156102375761020a925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102ef565b039134905af1801561022c5761021e575080f35b61022a91505f906102cd565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610237575f366003190112610237575f546040516001600160a01b039091168152602090f35b34610237575f3660031901126102375761028e610313565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023b57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212207a37d1b21921132d6e876ea3444333c3b17a03ec38cb48ea40b19cf30ac4fc1464736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4314:2231:45:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4314:2231:45;;;;;;;;;;;1748:29:39;;:34;1744:119;;811:66;4314:2231:45;;-1:-1:-1;;;;;;4314:2231:45;-1:-1:-1;;;;;4314:2231:45;;;;;;;;2407:36:39;-1:-1:-1;;2407:36:39;4314:2231:45;;2458:15:39;:11;;-1:-1:-1;4049:25:50;;4091:55;4049:25;;;;;;4314:2231:45;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4314:2231:45;;;;4091:55:50;:::i;:::-;;2454:148:39;4314:2231:45;;;5290:28;;;;-1:-1:-1;;;;;5290:28:45;;;;;;;;4314:2231;5290:28;;;;;;-1:-1:-1;;;;;4314:2231:45;;;5290:28;;;-1:-1:-1;5290:28:45;;;;;4314:2231;;;;;;5273:46;;;-1:-1:-1;;;;;;;;;;;2868:66:39;3890:43;4314:2231:45;;;;;;;;;;;;;;;;;3890:43:39;3549:22;;3545:91;;-1:-1:-1;;;;;;4314:2231:45;;-1:-1:-1;;;;;;;;;;;4314:2231:45;;;;;;;;;5273:46;4314:2231;;;;;;3545:91:39;3594:31;;;-1:-1:-1;3594:31:39;-1:-1:-1;3594:31:39;4314:2231:45;;-1:-1:-1;3594:31:39;5290:28:45;4314:2231;;;-1:-1:-1;4314:2231:45;;;;;5290:28;4314:2231;;;-1:-1:-1;4314:2231:45;;;;;-1:-1:-1;4314:2231:45;;;;4091:55:50;:::i;2454:148:39:-;6163:9;;;;6159:70;2454:148;6159:70;6199:19;;;-1:-1:-1;6199:19:39;;-1:-1:-1;6199:19:39;1744:119;-1:-1:-1;;;;;1805:47:39;;;-1:-1:-1;;;;;4314:2231:45;;;;1805:47:39;4314:2231:45;;;1805:47:39;4314:2231:45;-1:-1:-1;4314:2231:45;;;;;;;;;-1:-1:-1;;4314:2231:45;;;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4314:2231:45;;;;;;:::o;:::-;-1:-1:-1;;;;;4314:2231:45;;;;;;-1:-1:-1;;4314:2231:45;;;;:::o;4421:582:50:-;;4593:8;;-1:-1:-1;4314:2231:45;;5674:21:50;:17;;5799:158;;;;;;5670:354;5994:19;;;5694:1;5994:19;;5694:1;5994:19;4589:408;4314:2231:45;;4841:22:50;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:50;4917:24;;;-1:-1:-1;;;;;4314:2231:45;;;;4917:24:50;4314:2231:45;;;4917:24:50;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122013c3cca7769b458895214125c81403dc8dc970b0bef62d68d55262fd0864c69764736f6c634300081c0033","sourceMap":"4314:2231:45:-:0;;;5816:10;5600:6;-1:-1:-1;;;;;4314:2231:45;5816:27;4314:2231;;5863:7;;-1:-1:-1;;;;;;5863:7:45;-1:-1:-1;;;5863:65:45;5874:54;;5955:24;;;5863:7;5955:24;;5863:7;5955:24;5859:201;;;:::i;:::-;4314:2231;5812:306;811:66:39;;-1:-1:-1;;;;;;;;;4314:2231:45;1019:819:40;-1:-1:-1;;1019:819:40;;;;;;;-1:-1:-1;1019:819:40;;;;;;-1:-1:-1;1019:819:40;;;-1:-1:-1;1019:819:40;4314:2231:45;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4314:2231:45;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4314:2231:45;;;;:::o;6326:217::-;6441:8;6450:1;4314:2231;;;;6441:8;-1:-1:-1;;4314:2231:45;;;;6450:1;4314:2231;-1:-1:-1;;;;;4314:2231:45;;;;;;;;;;;;;;;;6441:8;4314:2231;;;;;;;;6450:1;4314:2231;;;;;;;:::i;:::-;;:::i;:::-;;;;;6441:8;4314:2231;;;;;;;;;;6441:8;4314:2231;;6531:4;4314:2231;;;;;;;;;;6531:4;:::i;:::-;6326:217::o;4314:2231::-;6441:8;4314:2231;;2264:344:39;;1748:29;;:34;1744:119;;811:66;4314:2231:45;;-1:-1:-1;;;;;;4314:2231:45;-1:-1:-1;;;;;4314:2231:45;;;;;;;;2407:36:39;-1:-1:-1;;2407:36:39;4314:2231:45;;2458:15:39;:11;;2489:53;;;:::i;:::-;;2264:344::o;2454:148::-;6163:9;;;6159:70;;2264:344::o;6159:70::-;6199:19;;;1781:1;6199:19;;1781:1;6199:19;1744:119;-1:-1:-1;;;;1781:1:39;1805:47;;;-1:-1:-1;;;;;4314:2231:45;;;;1805:47:39;4314:2231:45;;;1805:47:39;3900:253:50;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4314:2231:45;;;;;;;;;;:::i;:::-;;;;;4049:25:50;;4314:2231:45;;;4091:55:50;:::i;:::-;3900:253;:::o;4314:2231:45:-;;;4421:582:50;;4593:8;;-1:-1:-1;4314:2231:45;;5674:21:50;:17;;5799:158;;;;;;5670:354;5994:19;;;5694:1;5994:19;;5694:1;5994:19;4589:408;4314:2231:45;;4841:22:50;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:50;4917:24;;;-1:-1:-1;;;;;4314:2231:45;;;;4917:24:50;4314:2231:45;;;4917:24:50;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"43111":[{"start":7,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/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/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0\",\"dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347\",\"dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/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":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0","urls":["bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0","dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c","urls":["bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347","dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"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/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":43221,"exportedSymbols":{"ERC1967Proxy":[42550],"ERC1967Utils":[42844],"IERC1967":[42187],"ITransparentUpgradeableProxy":[43106],"ProxyAdmin":[43084],"TransparentUpgradeableProxy":[43220]},"nodeType":"SourceUnit","src":"133:6413:45","nodes":[{"id":43086,"nodeType":"PragmaDirective","src":"133:24:45","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":43088,"nodeType":"ImportDirective","src":"159:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42845,"symbolAliases":[{"foreign":{"id":43087,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"167:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43090,"nodeType":"ImportDirective","src":"217:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42551,"symbolAliases":[{"foreign":{"id":43089,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42550,"src":"225:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43092,"nodeType":"ImportDirective","src":"275:55:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42188,"symbolAliases":[{"foreign":{"id":43091,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42187,"src":"283:8:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43094,"nodeType":"ImportDirective","src":"331:44:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":43085,"symbolAliases":[{"foreign":{"id":43093,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43084,"src":"339:10:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43106,"nodeType":"ContractDefinition","src":"823:202:45","nodes":[{"id":43105,"nodeType":"FunctionDefinition","src":"932:91:45","nodes":[],"documentation":{"id":43098,"nodeType":"StructuredDocumentation","src":"880:47:45","text":"@dev See {UUPSUpgradeable-upgradeToAndCall}"},"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"941:16:45","parameters":{"id":43103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43100,"mutability":"mutable","name":"newImplementation","nameLocation":"966:17:45","nodeType":"VariableDeclaration","scope":43105,"src":"958:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43099,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43102,"mutability":"mutable","name":"data","nameLocation":"1000:4:45","nodeType":"VariableDeclaration","scope":43105,"src":"985:19:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":43101,"name":"bytes","nodeType":"ElementaryTypeName","src":"985:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"957:48:45"},"returnParameters":{"id":43104,"nodeType":"ParameterList","parameters":[],"src":"1022:0:45"},"scope":43106,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":43096,"name":"IERC1967","nameLocations":["865:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":42187,"src":"865:8:45"},"id":43097,"nodeType":"InheritanceSpecifier","src":"865:8:45"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":43095,"nodeType":"StructuredDocumentation","src":"377:445:45","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[43106,42187],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:45","scope":43221,"usedErrors":[],"usedEvents":[42174,42181,42186]},{"id":43220,"nodeType":"ContractDefinition","src":"4314:2231:45","nodes":[{"id":43111,"nodeType":"VariableDeclaration","src":"4708:32:45","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4734:6:45","scope":43220,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43110,"name":"address","nodeType":"ElementaryTypeName","src":"4708:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":43114,"nodeType":"ErrorDefinition","src":"4854:31:45","nodes":[],"documentation":{"id":43112,"nodeType":"StructuredDocumentation","src":"4747:102:45","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4860:22:45","parameters":{"id":43113,"nodeType":"ParameterList","parameters":[],"src":"4882:2:45"}},{"id":43147,"nodeType":"FunctionDefinition","src":"5157:296:45","nodes":[],"body":{"id":43146,"nodeType":"Block","src":"5263:190:45","nodes":[],"statements":[{"expression":{"id":43137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43128,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5273:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":43134,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43119,"src":"5305:12:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":43133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5290:14:45","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$43084_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":43132,"nodeType":"UserDefinedTypeName","pathNode":{"id":43131,"name":"ProxyAdmin","nameLocations":["5294:10:45"],"nodeType":"IdentifierPath","referencedDeclaration":43084,"src":"5294:10:45"},"referencedDeclaration":43084,"src":"5294:10:45","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}},"id":43135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}],"id":43130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43129,"name":"address","nodeType":"ElementaryTypeName","src":"5282:7:45","typeDescriptions":{}}},"id":43136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5273:46:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":43138,"nodeType":"ExpressionStatement","src":"5273:46:45"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":43142,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5432:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":43139,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"5407:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5420:11:45","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42726,"src":"5407:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":43144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43145,"nodeType":"ExpressionStatement","src":"5407:39:45"}]},"documentation":{"id":43115,"nodeType":"StructuredDocumentation","src":"4891:261:45","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":43124,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43117,"src":"5248:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43125,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43121,"src":"5256:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":43126,"kind":"baseConstructorSpecifier","modifierName":{"id":43123,"name":"ERC1967Proxy","nameLocations":["5235:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"5235:12:45"},"nodeType":"ModifierInvocation","src":"5235:27:45"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":43122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43117,"mutability":"mutable","name":"_logic","nameLocation":"5177:6:45","nodeType":"VariableDeclaration","scope":43147,"src":"5169:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43116,"name":"address","nodeType":"ElementaryTypeName","src":"5169:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43119,"mutability":"mutable","name":"initialOwner","nameLocation":"5193:12:45","nodeType":"VariableDeclaration","scope":43147,"src":"5185:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43118,"name":"address","nodeType":"ElementaryTypeName","src":"5185:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43121,"mutability":"mutable","name":"_data","nameLocation":"5220:5:45","nodeType":"VariableDeclaration","scope":43147,"src":"5207:18:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43120,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5168:58:45"},"returnParameters":{"id":43127,"nodeType":"ParameterList","parameters":[],"src":"5263:0:45"},"scope":43220,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":43156,"nodeType":"FunctionDefinition","src":"5520:93:45","nodes":[],"body":{"id":43155,"nodeType":"Block","src":"5583:30:45","nodes":[],"statements":[{"expression":{"id":43153,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5600:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":43152,"id":43154,"nodeType":"Return","src":"5593:13:45"}]},"documentation":{"id":43148,"nodeType":"StructuredDocumentation","src":"5459:56:45","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5529:11:45","parameters":{"id":43149,"nodeType":"ParameterList","parameters":[],"src":"5540:2:45"},"returnParameters":{"id":43152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43156,"src":"5574:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43150,"name":"address","nodeType":"ElementaryTypeName","src":"5574:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5573:9:45"},"scope":43220,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":43190,"nodeType":"FunctionDefinition","src":"5755:369:45","nodes":[],"body":{"id":43189,"nodeType":"Block","src":"5802:322:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":43165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43161,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5816:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5820:6:45","memberName":"sender","nodeType":"MemberAccess","src":"5816:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":43163,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5830:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5830:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5816:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43187,"nodeType":"Block","src":"6076:42:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":43182,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6090:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$43220_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":43184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6096:9:45","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42871,"src":"6090:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6090:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43186,"nodeType":"ExpressionStatement","src":"6090:17:45"}]},"id":43188,"nodeType":"IfStatement","src":"5812:306:45","trueBody":{"id":43181,"nodeType":"Block","src":"5845:225:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":43171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43166,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5863:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:3:45","memberName":"sig","nodeType":"MemberAccess","src":"5863:7:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":43168,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43106,"src":"5874:28:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$43106_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":43169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5903:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":43105,"src":"5874:45:45","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":43170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5920:8:45","memberName":"selector","nodeType":"MemberAccess","src":"5874:54:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5863:65:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43179,"nodeType":"Block","src":"6000:60:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":43176,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43219,"src":"6018:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43178,"nodeType":"ExpressionStatement","src":"6018:27:45"}]},"id":43180,"nodeType":"IfStatement","src":"5859:201:45","trueBody":{"id":43175,"nodeType":"Block","src":"5930:64:45","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":43172,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43114,"src":"5955:22:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":43173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43174,"nodeType":"RevertStatement","src":"5948:31:45"}]}}]}}]},"baseFunctions":[42871],"documentation":{"id":43157,"nodeType":"StructuredDocumentation","src":"5619:131:45","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5764:9:45","overrides":{"id":43159,"nodeType":"OverrideSpecifier","overrides":[],"src":"5793:8:45"},"parameters":{"id":43158,"nodeType":"ParameterList","parameters":[],"src":"5773:2:45"},"returnParameters":{"id":43160,"nodeType":"ParameterList","parameters":[],"src":"5802:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":43219,"nodeType":"FunctionDefinition","src":"6326:217:45","nodes":[],"body":{"id":43218,"nodeType":"Block","src":"6371:172:45","nodes":[],"statements":[{"assignments":[43195,43197],"declarations":[{"constant":false,"id":43195,"mutability":"mutable","name":"newImplementation","nameLocation":"6390:17:45","nodeType":"VariableDeclaration","scope":43218,"src":"6382:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43194,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43197,"mutability":"mutable","name":"data","nameLocation":"6422:4:45","nodeType":"VariableDeclaration","scope":43218,"src":"6409:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43196,"name":"bytes","nodeType":"ElementaryTypeName","src":"6409:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":43210,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":43200,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6441:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6445:4:45","memberName":"data","nodeType":"MemberAccess","src":"6441:8:45","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":43203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6441:12:45","startExpression":{"hexValue":"34","id":43202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6450:1:45","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":43205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6456:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43204,"name":"address","nodeType":"ElementaryTypeName","src":"6456:7:45","typeDescriptions":{}}},{"id":43207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6465:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":43206,"name":"bytes","nodeType":"ElementaryTypeName","src":"6465:5:45","typeDescriptions":{}}}],"id":43208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6455:16:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":43198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6430:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":43199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:6:45","memberName":"decode","nodeType":"MemberAccess","src":"6430:10:45","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":43209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6381:91:45"},{"expression":{"arguments":[{"id":43214,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43195,"src":"6512:17:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43215,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43197,"src":"6531:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":43211,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"6482:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42659,"src":"6482:29:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":43216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:54:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43217,"nodeType":"ExpressionStatement","src":"6482:54:45"}]},"documentation":{"id":43191,"nodeType":"StructuredDocumentation","src":"6130:191:45","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6335:25:45","parameters":{"id":43192,"nodeType":"ParameterList","parameters":[],"src":"6360:2:45"},"returnParameters":{"id":43193,"nodeType":"ParameterList","parameters":[],"src":"6371:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":43108,"name":"ERC1967Proxy","nameLocations":["4354:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"4354:12:45"},"id":43109,"nodeType":"InheritanceSpecifier","src":"4354:12:45"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[43084],"contractKind":"contract","documentation":{"id":43107,"nodeType":"StructuredDocumentation","src":"1027:3286:45","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[43220,42550,42880],"name":"TransparentUpgradeableProxy","nameLocation":"4323:27:45","scope":43221,"usedErrors":[42570,42575,42583,43114,43885,44177],"usedEvents":[42174,42181]}],"license":"MIT"},"id":45} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052604051610dc9380380610dc98339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f5f3e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f516020610da95f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f5f846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f516020610da95f395f51905f526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6104e6806108c383390190565b80516001600160a01b0381168114610351575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561037c575f5ffd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f5ffd5b8401601f810186136103be575f5ffd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b60805161045b6104685f395f6010015261045b5ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f85851115610311575f5ffd5b8386111561031d575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561034f575f5ffd5b82356001600160a01b0381168114610365575f5ffd5b9150602083013567ffffffffffffffff811115610380575f5ffd5b8301601f81018513610390575f5ffd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220f85bc7f279095697e93ae7a4cdafb93e4506d1a3e9a937b2c640f1e5c083592664736f6c634300081c00336080604052348015600e575f5ffd5b506040516104e63803806104e6833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b6103fa806100ec5f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f5ffd5b348015610058575f5ffd5b506100616100fd565b005b34801561006e575f5ffd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f5ffd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f5ffd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f5ffd5b505af1158015610171573d5f5f3e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f5f5f60608486031215610272575f5ffd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f5ffd5b8401601f810186136102b8575f5ffd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f5ffd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122020dfbda83034bdc47f723192086f79e42a72e6ad5e58b85bc60549d98a15c58d64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4314:2231:45:-:0;;;5157:296;;;;;;;;;;;;;;;;;;:::i;:::-;5248:6;5256:5;1155:52:38;5248:6:45;5256:5;1155:29:38;:52::i;:::-;1081:133;;5305:12:45::1;5290:28;;;;;:::i;:::-;-1:-1:-1::0;;;;;1601:32:128;;;1583:51;;1571:2;1556:18;5290:28:45::1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;5273:46:45::1;;::::0;5407:39:::1;5432:13;5600:6:::0;;;5520:93;5432:13:::1;5407:24;:39::i;:::-;5157:296:::0;;;4314:2231;;2264:344:39;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:39;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;3827:142::-;3890:43;3912:10;-1:-1:-1;;;;;;;;;;;3356:44:39;-1:-1:-1;;;;;3356:44:39;;3287:120;3912:10;3890:43;;;-1:-1:-1;;;;;1837:32:128;;;1819:51;;1906:32;;;1901:2;1886:18;;1879:60;1792:18;3890:43:39;;;;;;;3943:19;3953:8;3943:9;:19::i;:::-;3827:142;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:39;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:39;;-1:-1:-1;;;;;1601:32:128;;1805:47:39;;;1583:51:128;1556:18;;1805:47:39;;;;;;;;1744:119;1928:17;811:66;1872:47;:73;;-1:-1:-1;;;;;;1872:73:39;-1:-1:-1;;;;;1872:73:39;;;;;;;;;;-1:-1:-1;1671:281:39:o;3900:253:50:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:50;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:50;;-1:-1:-1;4007:67:50;-1:-1:-1;4091:55:50;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:50:o;6113:122:39:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:39;;;;;;;;;;;6159:70;6113:122::o;3490:217::-;-1:-1:-1;;;;;3549:22:39;;3545:91;;3594:31;;-1:-1:-1;;;3594:31:39;;3622:1;3594:31;;;1583:51:128;1556:18;;3594:31:39;1437:203:128;3545:91:39;3692:8;-1:-1:-1;;;;;;;;;;;3645:38:39;1899:163:55:o;4421:582:50:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:50;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:50;;-1:-1:-1;;;;;1601:32:128;;4917:24:50;;;1583:51:128;1556:18;;4917:24:50;1437:203:128;4837:119:50;-1:-1:-1;4976:10:50;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:50;;;;;;;;;;;4314:2231:45;;;;;;;;:::o;14:177:128:-;93:13;;-1:-1:-1;;;;;135:31:128;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:1104;425:6;433;441;494:2;482:9;473:7;469:23;465:32;462:52;;;510:1;507;500:12;462:52;533:40;563:9;533:40;:::i;:::-;523:50;;592:49;637:2;626:9;622:18;592:49;:::i;:::-;685:2;670:18;;664:25;582:59;;-1:-1:-1;;;;;;701:30:128;;698:50;;;744:1;741;734:12;698:50;767:22;;820:4;812:13;;808:27;-1:-1:-1;798:55:128;;849:1;846;839:12;798:55;876:9;;-1:-1:-1;;;;;897:30:128;;894:56;;;930:18;;:::i;:::-;979:2;973:9;1071:2;1033:17;;-1:-1:-1;;1029:31:128;;;1062:2;1025:40;1021:54;1009:67;;-1:-1:-1;;;;;1091:34:128;;1127:22;;;1088:62;1085:88;;;1153:18;;:::i;:::-;1189:2;1182:22;1213;;;1254:15;;;1271:2;1250:24;1247:37;-1:-1:-1;1244:57:128;;;1297:1;1294;1287:12;1244:57;1346:6;1341:2;1337;1333:11;1328:2;1320:6;1316:15;1310:43;1399:1;1394:2;1385:6;1377;1373:19;1369:28;1362:39;1420:6;1410:16;;;;;328:1104;;;;;:::o;1950:301::-;2079:3;2117:6;2111:13;2163:6;2156:4;2148:6;2144:17;2139:3;2133:37;2225:1;2189:16;;2214:13;;;-1:-1:-1;2189:16:128;1950:301;-1:-1:-1;1950:301:128:o;:::-;4314:2231:45;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f85851115610311575f5ffd5b8386111561031d575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561034f575f5ffd5b82356001600160a01b0381168114610365575f5ffd5b9150602083013567ffffffffffffffff811115610380575f5ffd5b8301601f81018513610390575f5ffd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220f85bc7f279095697e93ae7a4cdafb93e4506d1a3e9a937b2c640f1e5c083592664736f6c634300081c0033","sourceMap":"4314:2231:45:-:0;;;2649:11:40;:9;:11::i;:::-;4314:2231:45;5755:369;5600:6;-1:-1:-1;;;;;5816:27:45;:10;:27;5812:306;;5863:7;;-1:-1:-1;;;;;;5863:7:45;-1:-1:-1;;;5863:65:45;5859:201;;5955:24;;-1:-1:-1;;;5955:24:45;;;;;;;;;;;5859:201;6018:27;:25;:27::i;:::-;5755:369::o;5812:306::-;6090:17;:15;:17::i;6326:217::-;6382:25;;6441:12;:8;6450:1;6441:8;6382:25;6441:12;:::i;:::-;6430:42;;;;;;;:::i;:::-;6381:91;;;;6482:54;6512:17;6531:4;6482:29;:54::i;:::-;6371:172;;6326:217::o;2323:83:40:-;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;2264:344:39:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:39;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;6371:172:45;;6326:217::o;2454:148:39:-;2573:18;:16;:18::i;1583:132:38:-;1650:7;1676:32;811:66:39;1519:53;-1:-1:-1;;;;;1519:53:39;;1441:138;1676:32:38;1669:39;;1583:132;:::o;949:895:40:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1671:281:39;1748:17;-1:-1:-1;;;;;1748:29:39;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:39;;-1:-1:-1;;;;;1777:32:128;;1805:47:39;;;1759:51:128;1732:18;;1805:47:39;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:39;-1:-1:-1;;;;;1872:73:39;;;;;;;;;;1671:281::o;3900:253:50:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:50;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:50:o;6113:122:39:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:39;;;;;;;;;;;4421:582:50;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:50;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:50;;-1:-1:-1;;;;;1777:32:128;;4917:24:50;;;1759:51:128;1732:18;;4917:24:50;1613:203:128;4837:119:50;-1:-1:-1;4976:10:50;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:50;;;;;;;;;;;14:331:128;119:9;130;172:8;160:10;157:24;154:44;;;194:1;191;184:12;154:44;223:6;213:8;210:20;207:40;;;243:1;240;233:12;207:40;-1:-1:-1;;269:23:128;;;314:25;;;;;-1:-1:-1;14:331:128:o;350:127::-;411:10;406:3;402:20;399:1;392:31;442:4;439:1;432:15;466:4;463:1;456:15;482:1126;567:6;575;628:2;616:9;607:7;603:23;599:32;596:52;;;644:1;641;634:12;596:52;670:23;;-1:-1:-1;;;;;722:31:128;;712:42;;702:70;;768:1;765;758:12;702:70;791:5;-1:-1:-1;847:2:128;832:18;;819:32;874:18;863:30;;860:50;;;906:1;903;896:12;860:50;929:22;;982:4;974:13;;970:27;-1:-1:-1;960:55:128;;1011:1;1008;1001:12;960:55;1051:2;1038:16;1077:18;1069:6;1066:30;1063:56;;;1099:18;;:::i;:::-;1148:2;1142:9;1240:2;1202:17;;-1:-1:-1;;1198:31:128;;;1231:2;1194:40;1190:54;1178:67;;1275:18;1260:34;;1296:22;;;1257:62;1254:88;;;1322:18;;:::i;:::-;1358:2;1351:22;1382;;;1423:15;;;1440:2;1419:24;1416:37;-1:-1:-1;1413:57:128;;;1466:1;1463;1456:12;1413:57;1522:6;1517:2;1513;1509:11;1504:2;1496:6;1492:15;1479:50;1575:1;1570:2;1561:6;1553;1549:19;1545:28;1538:39;1596:6;1586:16;;;;;482:1126;;;;;:::o;1821:301::-;1950:3;1988:6;1982:13;2034:6;2027:4;2019:6;2015:17;2010:3;2004:37;2096:1;2060:16;;2085:13;;;-1:-1:-1;2060:16:128;1821:301;-1:-1:-1;1821:301:128:o","linkReferences":{},"immutableReferences":{"43111":[{"start":16,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"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/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0\",\"dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347\",\"dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"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":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0xeb19221d51578ea190f0b7d807c5f196db6ff4eca90fee396f45ce9669080ba0","urls":["bzz-raw://e4ca4196dab20274d1276d902d17034065f014aeebf496f20e39e760899650b0","dweb:/ipfs/QmXFoF93GmZgZHbUvSqLjBGnQ3MY429Bnvk7SvLKEUsEAN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x724b755843cff10a8e1503d374b857c9e7648be24e7acf1e5bee0584f1b0505c","urls":["bzz-raw://740ad3ba1c12e426ea32cf234f445431a13efa8dbed38b53c869237e31fc8347","dweb:/ipfs/QmQ3UKUnBQn4gjxjDNGuDLQWuQqcxWzyj1HzwjFgjAJBqh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"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/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":43221,"exportedSymbols":{"ERC1967Proxy":[42550],"ERC1967Utils":[42844],"IERC1967":[42187],"ITransparentUpgradeableProxy":[43106],"ProxyAdmin":[43084],"TransparentUpgradeableProxy":[43220]},"nodeType":"SourceUnit","src":"133:6413:45","nodes":[{"id":43086,"nodeType":"PragmaDirective","src":"133:24:45","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":43088,"nodeType":"ImportDirective","src":"159:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42845,"symbolAliases":[{"foreign":{"id":43087,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"167:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43090,"nodeType":"ImportDirective","src":"217:57:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42551,"symbolAliases":[{"foreign":{"id":43089,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42550,"src":"225:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43092,"nodeType":"ImportDirective","src":"275:55:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":42188,"symbolAliases":[{"foreign":{"id":43091,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42187,"src":"283:8:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43094,"nodeType":"ImportDirective","src":"331:44:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":43221,"sourceUnit":43085,"symbolAliases":[{"foreign":{"id":43093,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43084,"src":"339:10:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":43106,"nodeType":"ContractDefinition","src":"823:202:45","nodes":[{"id":43105,"nodeType":"FunctionDefinition","src":"932:91:45","nodes":[],"documentation":{"id":43098,"nodeType":"StructuredDocumentation","src":"880:47:45","text":"@dev See {UUPSUpgradeable-upgradeToAndCall}"},"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"941:16:45","parameters":{"id":43103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43100,"mutability":"mutable","name":"newImplementation","nameLocation":"966:17:45","nodeType":"VariableDeclaration","scope":43105,"src":"958:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43099,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43102,"mutability":"mutable","name":"data","nameLocation":"1000:4:45","nodeType":"VariableDeclaration","scope":43105,"src":"985:19:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":43101,"name":"bytes","nodeType":"ElementaryTypeName","src":"985:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"957:48:45"},"returnParameters":{"id":43104,"nodeType":"ParameterList","parameters":[],"src":"1022:0:45"},"scope":43106,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":43096,"name":"IERC1967","nameLocations":["865:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":42187,"src":"865:8:45"},"id":43097,"nodeType":"InheritanceSpecifier","src":"865:8:45"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":43095,"nodeType":"StructuredDocumentation","src":"377:445:45","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[43106,42187],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:45","scope":43221,"usedErrors":[],"usedEvents":[42174,42181,42186]},{"id":43220,"nodeType":"ContractDefinition","src":"4314:2231:45","nodes":[{"id":43111,"nodeType":"VariableDeclaration","src":"4708:32:45","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4734:6:45","scope":43220,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43110,"name":"address","nodeType":"ElementaryTypeName","src":"4708:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":43114,"nodeType":"ErrorDefinition","src":"4854:31:45","nodes":[],"documentation":{"id":43112,"nodeType":"StructuredDocumentation","src":"4747:102:45","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4860:22:45","parameters":{"id":43113,"nodeType":"ParameterList","parameters":[],"src":"4882:2:45"}},{"id":43147,"nodeType":"FunctionDefinition","src":"5157:296:45","nodes":[],"body":{"id":43146,"nodeType":"Block","src":"5263:190:45","nodes":[],"statements":[{"expression":{"id":43137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43128,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5273:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":43134,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43119,"src":"5305:12:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":43133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5290:14:45","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$43084_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":43132,"nodeType":"UserDefinedTypeName","pathNode":{"id":43131,"name":"ProxyAdmin","nameLocations":["5294:10:45"],"nodeType":"IdentifierPath","referencedDeclaration":43084,"src":"5294:10:45"},"referencedDeclaration":43084,"src":"5294:10:45","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}},"id":43135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$43084","typeString":"contract ProxyAdmin"}],"id":43130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43129,"name":"address","nodeType":"ElementaryTypeName","src":"5282:7:45","typeDescriptions":{}}},"id":43136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5273:46:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":43138,"nodeType":"ExpressionStatement","src":"5273:46:45"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":43142,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5432:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":43139,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"5407:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5420:11:45","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42726,"src":"5407:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":43144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43145,"nodeType":"ExpressionStatement","src":"5407:39:45"}]},"documentation":{"id":43115,"nodeType":"StructuredDocumentation","src":"4891:261:45","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":43124,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43117,"src":"5248:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43125,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43121,"src":"5256:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":43126,"kind":"baseConstructorSpecifier","modifierName":{"id":43123,"name":"ERC1967Proxy","nameLocations":["5235:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"5235:12:45"},"nodeType":"ModifierInvocation","src":"5235:27:45"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":43122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43117,"mutability":"mutable","name":"_logic","nameLocation":"5177:6:45","nodeType":"VariableDeclaration","scope":43147,"src":"5169:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43116,"name":"address","nodeType":"ElementaryTypeName","src":"5169:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43119,"mutability":"mutable","name":"initialOwner","nameLocation":"5193:12:45","nodeType":"VariableDeclaration","scope":43147,"src":"5185:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43118,"name":"address","nodeType":"ElementaryTypeName","src":"5185:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43121,"mutability":"mutable","name":"_data","nameLocation":"5220:5:45","nodeType":"VariableDeclaration","scope":43147,"src":"5207:18:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43120,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5168:58:45"},"returnParameters":{"id":43127,"nodeType":"ParameterList","parameters":[],"src":"5263:0:45"},"scope":43220,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":43156,"nodeType":"FunctionDefinition","src":"5520:93:45","nodes":[],"body":{"id":43155,"nodeType":"Block","src":"5583:30:45","nodes":[],"statements":[{"expression":{"id":43153,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43111,"src":"5600:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":43152,"id":43154,"nodeType":"Return","src":"5593:13:45"}]},"documentation":{"id":43148,"nodeType":"StructuredDocumentation","src":"5459:56:45","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5529:11:45","parameters":{"id":43149,"nodeType":"ParameterList","parameters":[],"src":"5540:2:45"},"returnParameters":{"id":43152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43156,"src":"5574:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43150,"name":"address","nodeType":"ElementaryTypeName","src":"5574:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5573:9:45"},"scope":43220,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":43190,"nodeType":"FunctionDefinition","src":"5755:369:45","nodes":[],"body":{"id":43189,"nodeType":"Block","src":"5802:322:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":43165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43161,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5816:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5820:6:45","memberName":"sender","nodeType":"MemberAccess","src":"5816:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":43163,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43156,"src":"5830:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":43164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5830:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5816:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43187,"nodeType":"Block","src":"6076:42:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":43182,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6090:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$43220_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":43184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6096:9:45","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42871,"src":"6090:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6090:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43186,"nodeType":"ExpressionStatement","src":"6090:17:45"}]},"id":43188,"nodeType":"IfStatement","src":"5812:306:45","trueBody":{"id":43181,"nodeType":"Block","src":"5845:225:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":43171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":43166,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5863:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:3:45","memberName":"sig","nodeType":"MemberAccess","src":"5863:7:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":43168,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43106,"src":"5874:28:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$43106_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":43169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5903:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":43105,"src":"5874:45:45","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":43170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5920:8:45","memberName":"selector","nodeType":"MemberAccess","src":"5874:54:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5863:65:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":43179,"nodeType":"Block","src":"6000:60:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":43176,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43219,"src":"6018:25:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":43177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:27:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43178,"nodeType":"ExpressionStatement","src":"6018:27:45"}]},"id":43180,"nodeType":"IfStatement","src":"5859:201:45","trueBody":{"id":43175,"nodeType":"Block","src":"5930:64:45","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":43172,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43114,"src":"5955:22:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":43173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43174,"nodeType":"RevertStatement","src":"5948:31:45"}]}}]}}]},"baseFunctions":[42871],"documentation":{"id":43157,"nodeType":"StructuredDocumentation","src":"5619:131:45","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5764:9:45","overrides":{"id":43159,"nodeType":"OverrideSpecifier","overrides":[],"src":"5793:8:45"},"parameters":{"id":43158,"nodeType":"ParameterList","parameters":[],"src":"5773:2:45"},"returnParameters":{"id":43160,"nodeType":"ParameterList","parameters":[],"src":"5802:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":43219,"nodeType":"FunctionDefinition","src":"6326:217:45","nodes":[],"body":{"id":43218,"nodeType":"Block","src":"6371:172:45","nodes":[],"statements":[{"assignments":[43195,43197],"declarations":[{"constant":false,"id":43195,"mutability":"mutable","name":"newImplementation","nameLocation":"6390:17:45","nodeType":"VariableDeclaration","scope":43218,"src":"6382:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43194,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43197,"mutability":"mutable","name":"data","nameLocation":"6422:4:45","nodeType":"VariableDeclaration","scope":43218,"src":"6409:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":43196,"name":"bytes","nodeType":"ElementaryTypeName","src":"6409:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":43210,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":43200,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6441:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":43201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6445:4:45","memberName":"data","nodeType":"MemberAccess","src":"6441:8:45","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":43203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6441:12:45","startExpression":{"hexValue":"34","id":43202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6450:1:45","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":43205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6456:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":43204,"name":"address","nodeType":"ElementaryTypeName","src":"6456:7:45","typeDescriptions":{}}},{"id":43207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6465:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":43206,"name":"bytes","nodeType":"ElementaryTypeName","src":"6465:5:45","typeDescriptions":{}}}],"id":43208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6455:16:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":43198,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6430:3:45","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":43199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:6:45","memberName":"decode","nodeType":"MemberAccess","src":"6430:10:45","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":43209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6381:91:45"},{"expression":{"arguments":[{"id":43214,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43195,"src":"6512:17:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":43215,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43197,"src":"6531:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":43211,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42844,"src":"6482:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42844_$","typeString":"type(library ERC1967Utils)"}},"id":43213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:16:45","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42659,"src":"6482:29:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":43216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:54:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43217,"nodeType":"ExpressionStatement","src":"6482:54:45"}]},"documentation":{"id":43191,"nodeType":"StructuredDocumentation","src":"6130:191:45","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6335:25:45","parameters":{"id":43192,"nodeType":"ParameterList","parameters":[],"src":"6360:2:45"},"returnParameters":{"id":43193,"nodeType":"ParameterList","parameters":[],"src":"6371:0:45"},"scope":43220,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":43108,"name":"ERC1967Proxy","nameLocations":["4354:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":42550,"src":"4354:12:45"},"id":43109,"nodeType":"InheritanceSpecifier","src":"4354:12:45"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[43084],"contractKind":"contract","documentation":{"id":43107,"nodeType":"StructuredDocumentation","src":"1027:3286:45","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[43220,42550,42880],"name":"TransparentUpgradeableProxy","nameLocation":"4323:27:45","scope":43221,"usedErrors":[42570,42575,42583,43114,43885,44177],"usedEvents":[42174,42181]}],"license":"MIT"},"id":45} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index 7dcfaecdd6e..82cf3f2ed72 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":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220800c6c4bade350076d89da19220c56c5d90cd834f3641a80dabd17ba9b7a3d0664736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","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":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220800c6c4bade350076d89da19220c56c5d90cd834f3641a80dabd17ba9b7a3d0664736f6c634300081c0033","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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/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-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/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":69541,"exportedSymbols":{"ERC20BurnableUpgradeable":[41265],"ERC20PermitUpgradeable":[41434],"ERC20Upgradeable":[41203],"Initializable":[40586],"OwnableUpgradeable":[40332],"WrappedVara":[69540]},"nodeType":"SourceUnit","src":"39:1584:121","nodes":[{"id":69435,"nodeType":"PragmaDirective","src":"39:24:121","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":69437,"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":69541,"sourceUnit":40587,"symbolAliases":[{"foreign":{"id":69436,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40586,"src":"73:13:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69439,"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":69541,"sourceUnit":41204,"symbolAliases":[{"foreign":{"id":69438,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41203,"src":"170:16:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69441,"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":69541,"sourceUnit":41266,"symbolAliases":[{"foreign":{"id":69440,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41265,"src":"273:24:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69443,"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":69541,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":69442,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"407:18:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69445,"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":69541,"sourceUnit":41435,"symbolAliases":[{"foreign":{"id":69444,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41434,"src":"509:22:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69540,"nodeType":"ContractDefinition","src":"632:990:121","nodes":[{"id":69458,"nodeType":"VariableDeclaration","src":"784:51:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:121","scope":69540,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69456,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":69457,"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":69461,"nodeType":"VariableDeclaration","src":"841:46:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:121","scope":69540,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69459,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":69460,"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":69464,"nodeType":"VariableDeclaration","src":"893:57:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:121","scope":69540,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69462,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":69463,"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":69472,"nodeType":"FunctionDefinition","src":"1010:53:121","nodes":[],"body":{"id":69471,"nodeType":"Block","src":"1024:39:121","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69468,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1034:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69469,"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":69470,"nodeType":"ExpressionStatement","src":"1034:22:121"}]},"documentation":{"id":69465,"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":69466,"nodeType":"ParameterList","parameters":[],"src":"1021:2:121"},"returnParameters":{"id":69467,"nodeType":"ParameterList","parameters":[],"src":"1024:0:121"},"scope":69540,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69506,"nodeType":"FunctionDefinition","src":"1069:297:121","nodes":[],"body":{"id":69505,"nodeType":"Block","src":"1130:236:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69480,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69458,"src":"1153:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":69481,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69461,"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":69479,"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":69482,"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":69483,"nodeType":"ExpressionStatement","src":"1140:38:121"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69484,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41224,"src":"1188:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69485,"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":69486,"nodeType":"ExpressionStatement","src":"1188:22:121"},{"expression":{"arguments":[{"id":69488,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69474,"src":"1235:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69487,"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":69489,"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":69490,"nodeType":"ExpressionStatement","src":"1220:28:121"},{"expression":{"arguments":[{"id":69492,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69458,"src":"1277:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69491,"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":69493,"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":69494,"nodeType":"ExpressionStatement","src":"1258:30:121"},{"expression":{"arguments":[{"id":69496,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69474,"src":"1305:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69497,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69464,"src":"1319:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":69498,"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":69499,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[69524],"referencedDeclaration":69524,"src":"1348:8:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":69500,"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":69495,"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":69503,"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":69504,"nodeType":"ExpressionStatement","src":"1299:60:121"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":69477,"kind":"modifierInvocation","modifierName":{"id":69476,"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":69475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69474,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:121","nodeType":"VariableDeclaration","scope":69506,"src":"1089:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69473,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:121"},"returnParameters":{"id":69478,"nodeType":"ParameterList","parameters":[],"src":"1130:0:121"},"scope":69540,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69515,"nodeType":"FunctionDefinition","src":"1372:60:121","nodes":[],"body":{"id":69514,"nodeType":"Block","src":"1430:2:121","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":69509,"kind":"modifierInvocation","modifierName":{"id":69508,"name":"onlyOwner","nameLocations":["1403:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1403:9:121"},"nodeType":"ModifierInvocation","src":"1403:9:121"},{"arguments":[{"hexValue":"32","id":69511,"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":69512,"kind":"modifierInvocation","modifierName":{"id":69510,"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":69507,"nodeType":"ParameterList","parameters":[],"src":"1393:2:121"},"returnParameters":{"id":69513,"nodeType":"ParameterList","parameters":[],"src":"1430:0:121"},"scope":69540,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69524,"nodeType":"FunctionDefinition","src":"1438:83:121","nodes":[],"body":{"id":69523,"nodeType":"Block","src":"1495:26:121","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":69521,"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":69520,"id":69522,"nodeType":"Return","src":"1505:9:121"}]},"baseFunctions":[40723],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:121","overrides":{"id":69517,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:121"},"parameters":{"id":69516,"nodeType":"ParameterList","parameters":[],"src":"1455:2:121"},"returnParameters":{"id":69520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69524,"src":"1488:5:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":69518,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:121"},"scope":69540,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":69539,"nodeType":"FunctionDefinition","src":"1527:93:121","nodes":[],"body":{"id":69538,"nodeType":"Block","src":"1586:34:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69534,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69526,"src":"1602:2:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69535,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69528,"src":"1606:6:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69533,"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":69536,"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":69537,"nodeType":"ExpressionStatement","src":"1596:17:121"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":69531,"kind":"modifierInvocation","modifierName":{"id":69530,"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":69529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69526,"mutability":"mutable","name":"to","nameLocation":"1549:2:121","nodeType":"VariableDeclaration","scope":69539,"src":"1541:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69525,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69528,"mutability":"mutable","name":"amount","nameLocation":"1561:6:121","nodeType":"VariableDeclaration","scope":69539,"src":"1553:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69527,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:121"},"returnParameters":{"id":69532,"nodeType":"ParameterList","parameters":[],"src":"1586:0:121"},"scope":69540,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":69446,"name":"Initializable","nameLocations":["660:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40586,"src":"660:13:121"},"id":69447,"nodeType":"InheritanceSpecifier","src":"660:13:121"},{"baseName":{"id":69448,"name":"ERC20Upgradeable","nameLocations":["679:16:121"],"nodeType":"IdentifierPath","referencedDeclaration":41203,"src":"679:16:121"},"id":69449,"nodeType":"InheritanceSpecifier","src":"679:16:121"},{"baseName":{"id":69450,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:121"],"nodeType":"IdentifierPath","referencedDeclaration":41265,"src":"701:24:121"},"id":69451,"nodeType":"InheritanceSpecifier","src":"701:24:121"},{"baseName":{"id":69452,"name":"OwnableUpgradeable","nameLocations":["731:18:121"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"731:18:121"},"id":69453,"nodeType":"InheritanceSpecifier","src":"731:18:121"},{"baseName":{"id":69454,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":41434,"src":"755:22:121"},"id":69455,"nodeType":"InheritanceSpecifier","src":"755:22:121"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69540,41434,41591,41935,42212,43875,40332,41265,41203,42254,43839,43813,41480,40586],"name":"WrappedVara","nameLocation":"641:11:121","scope":69541,"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":"0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6117e4806100d65f395ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063715018a6116100b457806395d89b411161007957806395d89b4114610298578063a9059cbb146102a0578063c4d66de8146102b3578063d505accf146102c6578063dd62ed3e146102d9578063f2fde38b146102ec575f5ffd5b8063715018a61461021557806379cc67901461021d5780637ecebe001461023057806384b0196e146102435780638da5cb5b1461025e575f5ffd5b80633644e515116100fa5780633644e515146101ca57806340c10f19146101d257806342966c68146101e75780636c2eb350146101fa57806370a0823114610202575f5ffd5b806306fdde0314610136578063095ea7b31461015457806318160ddd1461017757806323b872dd146101a8578063313ce567146101bb575b5f5ffd5b61013e6102ff565b60405161014b91906112e6565b60405180910390f35b61016761016236600461131a565b6103a4565b604051901515815260200161014b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161014b565b6101676101b6366004611342565b6103bd565b604051600c815260200161014b565b61019a6103e0565b6101e56101e036600461131a565b6103ee565b005b6101e56101f536600461137c565b610404565b6101e5610411565b61019a610210366004611393565b6104e3565b6101e5610513565b6101e561022b36600461131a565b610526565b61019a61023e366004611393565b61053b565b61024b610545565b60405161014b97969594939291906113ac565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161014b565b61013e6105f3565b6101676102ae36600461131a565b610631565b6101e56102c1366004611393565b61063e565b6101e56102d4366004611442565b6107ee565b61019a6102e73660046114af565b610943565b6101e56102fa366004611393565b61098c565b60605f5f51602061176f5f395f51905f525b9050806003018054610322906114e0565b80601f016020809104026020016040519081016040528092919081815260200182805461034e906114e0565b80156103995780601f1061037057610100808354040283529160200191610399565b820191905f5260205f20905b81548152906001019060200180831161037c57829003601f168201915b505050505091505090565b5f336103b18185856109c6565b60019150505b92915050565b5f336103ca8582856109d8565b6103d5858585610a3b565b506001949350505050565b5f6103e9610a98565b905090565b6103f6610aa1565b6104008282610afc565b5050565b61040e3382610b30565b50565b610419610aa1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806104635750805467ffffffffffffffff808416911610155b156104815760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff8316908117600160401b1760ff60401b191682556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b5f805f51602061176f5f395f51905f525b6001600160a01b039093165f9081526020939093525050604090205490565b61051b610aa1565b6105245f610b64565b565b6105318233836109d8565b6104008282610b30565b5f6103b782610bd4565b5f60608082808083815f51602061178f5f395f51905f52805490915015801561057057506001810154155b6105b95760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6105c1610bfc565b6105c9610c3a565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f51602061176f5f395f51905f5291610322906114e0565b5f336103b1818585610a3b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156106835750825b90505f8267ffffffffffffffff16600114801561069f5750303b155b9050811580156106ad575080155b156106cb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106f557845460ff60401b1916600160401b1785555b6107406040518060400160405280600c81526020016b57726170706564205661726160a01b81525060405180604001604052806005815260200164575641524160d81b815250610c50565b610748610c62565b61075186610c6a565b61077e6040518060400160405280600c81526020016b57726170706564205661726160a01b815250610c7b565b6107a08661078e600c600a611623565b61079b90620f4240611631565b610afc565b83156107e657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b834211156108125760405163313c898160e11b8152600481018590526024016105b0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087c8c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108d682610ca6565b90505f6108e582878787610cd2565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016105b0565b6109378a8a8a6109c6565b50505050505050505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610994610aa1565b6001600160a01b0381166109bd57604051631e4fbdf760e01b81525f60048201526024016105b0565b61040e81610b64565b6109d38383836001610cfe565b505050565b5f6109e38484610943565b90505f198114610a355781811015610a2757604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016105b0565b610a3584848484035f610cfe565b50505050565b6001600160a01b038316610a6457604051634b637e8f60e11b81525f60048201526024016105b0565b6001600160a01b038216610a8d5760405163ec442f0560e01b81525f60048201526024016105b0565b6109d3838383610de2565b5f6103e9610f1b565b33610ad37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146105245760405163118cdaa760e01b81523360048201526024016105b0565b6001600160a01b038216610b255760405163ec442f0560e01b81525f60048201526024016105b0565b6104005f8383610de2565b6001600160a01b038216610b5957604051634b637e8f60e11b81525f60048201526024016105b0565b610400825f83610de2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006104f4565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f51602061178f5f395f51905f5291610322906114e0565b60605f5f51602061178f5f395f51905f52610311565b610c58610f8e565b6104008282610fd7565b610524610f8e565b610c72610f8e565b61040e81611027565b610c83610f8e565b61040e81604051806040016040528060018152602001603160f81b81525061102f565b5f6103b7610cb2610a98565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610ce28888888861108e565b925092509250610cf28282611156565b50909695505050505050565b5f51602061176f5f395f51905f526001600160a01b038516610d355760405163e602df0560e01b81525f60048201526024016105b0565b6001600160a01b038416610d5e57604051634a1406b160e11b81525f60048201526024016105b0565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610ddb57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dd291815260200190565b60405180910390a35b5050505050565b5f51602061176f5f395f51905f526001600160a01b038416610e1c5781816002015f828254610e119190611648565b90915550610e8c9050565b6001600160a01b0384165f9081526020829052604090205482811015610e6e5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016105b0565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610eaa576002810180548390039055610ec8565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0d91815260200190565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f4561120e565b610f4d611276565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661052457604051631afcd79f60e31b815260040160405180910390fd5b610fdf610f8e565b5f51602061176f5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611018848261169f565b5060048101610a35838261169f565b610994610f8e565b611037610f8e565b5f51602061178f5f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611070848261169f565b506003810161107f838261169f565b505f8082556001909101555050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110c757505f9150600390508261114c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611118573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661114357505f92506001915082905061114c565b92505f91508190505b9450945094915050565b5f8260038111156111695761116961175a565b03611172575050565b60018260038111156111865761118661175a565b036111a45760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111b8576111b861175a565b036111d95760405163fce698f760e01b8152600481018290526024016105b0565b60038260038111156111ed576111ed61175a565b03610400576040516335e2f38360e21b8152600481018290526024016105b0565b5f5f51602061178f5f395f51905f5281611226610bfc565b80519091501561123e57805160209091012092915050565b8154801561124d579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f51602061178f5f395f51905f528161128e610c3a565b8051909150156112a657805160209091012092915050565b6001820154801561124d579392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112f860208301846112b8565b9392505050565b80356001600160a01b0381168114611315575f5ffd5b919050565b5f5f6040838503121561132b575f5ffd5b611334836112ff565b946020939093013593505050565b5f5f5f60608486031215611354575f5ffd5b61135d846112ff565b925061136b602085016112ff565b929592945050506040919091013590565b5f6020828403121561138c575f5ffd5b5035919050565b5f602082840312156113a3575f5ffd5b6112f8826112ff565b60ff60f81b8816815260e060208201525f6113ca60e08301896112b8565b82810360408401526113dc81896112b8565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611431578351835260209384019390920191600101611413565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611458575f5ffd5b611461886112ff565b965061146f602089016112ff565b95506040880135945060608801359350608088013560ff81168114611492575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156114c0575f5ffd5b6114c9836112ff565b91506114d7602084016112ff565b90509250929050565b600181811c908216806114f457607f821691505b60208210810361151257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157b5780850481111561155f5761155f61152c565b600184161561156d57908102905b60019390931c928002611544565b935093915050565b5f82611591575060016103b7565b8161159d57505f6103b7565b81600181146115b357600281146115bd576115d9565b60019150506103b7565b60ff8411156115ce576115ce61152c565b50506001821b6103b7565b5060208310610133831016604e8410600b84101617156115fc575081810a6103b7565b6116085f198484611540565b805f190482111561161b5761161b61152c565b029392505050565b5f6112f860ff841683611583565b80820281158282048414176103b7576103b761152c565b808201808211156103b7576103b761152c565b601f8211156109d357805f5260205f20601f840160051c810160208510156116805750805b601f840160051c820191505b81811015610ddb575f815560010161168c565b815167ffffffffffffffff8111156116b9576116b9611518565b6116cd816116c784546114e0565b8461165b565b6020601f8211600181146116ff575f83156116e85750848201515b5f19600385901b1c1916600184901b178455610ddb565b5f84815260208120601f198516915b8281101561172e578785015182556020948501946001909201910161170e565b508482101561174b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a264697066735822122099cc40a8f00acbd0e4963a0b5ecaa183718b0a2ff261d3f587208545dacd664164736f6c634300081c0033","sourceMap":"632:990:121:-:0;;;1010:53;;;;;;;;;-1:-1:-1;1034:22:121;:20;:22::i;:::-;632:990;;7711:422:25;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:25;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:25;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:25;-1:-1:-1;;;;;8035:33:25;;;;;8087:29;;158:50:128;;;8087:29:25;;146:2:128;131:18;8087:29:25;;;;;;;7981:146;7760:373;7711:422::o;14:200:128:-;632:990:121;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063715018a6116100b457806395d89b411161007957806395d89b4114610298578063a9059cbb146102a0578063c4d66de8146102b3578063d505accf146102c6578063dd62ed3e146102d9578063f2fde38b146102ec575f5ffd5b8063715018a61461021557806379cc67901461021d5780637ecebe001461023057806384b0196e146102435780638da5cb5b1461025e575f5ffd5b80633644e515116100fa5780633644e515146101ca57806340c10f19146101d257806342966c68146101e75780636c2eb350146101fa57806370a0823114610202575f5ffd5b806306fdde0314610136578063095ea7b31461015457806318160ddd1461017757806323b872dd146101a8578063313ce567146101bb575b5f5ffd5b61013e6102ff565b60405161014b91906112e6565b60405180910390f35b61016761016236600461131a565b6103a4565b604051901515815260200161014b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161014b565b6101676101b6366004611342565b6103bd565b604051600c815260200161014b565b61019a6103e0565b6101e56101e036600461131a565b6103ee565b005b6101e56101f536600461137c565b610404565b6101e5610411565b61019a610210366004611393565b6104e3565b6101e5610513565b6101e561022b36600461131a565b610526565b61019a61023e366004611393565b61053b565b61024b610545565b60405161014b97969594939291906113ac565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116815260200161014b565b61013e6105f3565b6101676102ae36600461131a565b610631565b6101e56102c1366004611393565b61063e565b6101e56102d4366004611442565b6107ee565b61019a6102e73660046114af565b610943565b6101e56102fa366004611393565b61098c565b60605f5f51602061176f5f395f51905f525b9050806003018054610322906114e0565b80601f016020809104026020016040519081016040528092919081815260200182805461034e906114e0565b80156103995780601f1061037057610100808354040283529160200191610399565b820191905f5260205f20905b81548152906001019060200180831161037c57829003601f168201915b505050505091505090565b5f336103b18185856109c6565b60019150505b92915050565b5f336103ca8582856109d8565b6103d5858585610a3b565b506001949350505050565b5f6103e9610a98565b905090565b6103f6610aa1565b6104008282610afc565b5050565b61040e3382610b30565b50565b610419610aa1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806104635750805467ffffffffffffffff808416911610155b156104815760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff8316908117600160401b1760ff60401b191682556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b5f805f51602061176f5f395f51905f525b6001600160a01b039093165f9081526020939093525050604090205490565b61051b610aa1565b6105245f610b64565b565b6105318233836109d8565b6104008282610b30565b5f6103b782610bd4565b5f60608082808083815f51602061178f5f395f51905f52805490915015801561057057506001810154155b6105b95760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6105c1610bfc565b6105c9610c3a565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f51602061176f5f395f51905f5291610322906114e0565b5f336103b1818585610a3b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156106835750825b90505f8267ffffffffffffffff16600114801561069f5750303b155b9050811580156106ad575080155b156106cb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106f557845460ff60401b1916600160401b1785555b6107406040518060400160405280600c81526020016b57726170706564205661726160a01b81525060405180604001604052806005815260200164575641524160d81b815250610c50565b610748610c62565b61075186610c6a565b61077e6040518060400160405280600c81526020016b57726170706564205661726160a01b815250610c7b565b6107a08661078e600c600a611623565b61079b90620f4240611631565b610afc565b83156107e657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b834211156108125760405163313c898160e11b8152600481018590526024016105b0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087c8c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108d682610ca6565b90505f6108e582878787610cd2565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016105b0565b6109378a8a8a6109c6565b50505050505050505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610994610aa1565b6001600160a01b0381166109bd57604051631e4fbdf760e01b81525f60048201526024016105b0565b61040e81610b64565b6109d38383836001610cfe565b505050565b5f6109e38484610943565b90505f198114610a355781811015610a2757604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016105b0565b610a3584848484035f610cfe565b50505050565b6001600160a01b038316610a6457604051634b637e8f60e11b81525f60048201526024016105b0565b6001600160a01b038216610a8d5760405163ec442f0560e01b81525f60048201526024016105b0565b6109d3838383610de2565b5f6103e9610f1b565b33610ad37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146105245760405163118cdaa760e01b81523360048201526024016105b0565b6001600160a01b038216610b255760405163ec442f0560e01b81525f60048201526024016105b0565b6104005f8383610de2565b6001600160a01b038216610b5957604051634b637e8f60e11b81525f60048201526024016105b0565b610400825f83610de2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006104f4565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f51602061178f5f395f51905f5291610322906114e0565b60605f5f51602061178f5f395f51905f52610311565b610c58610f8e565b6104008282610fd7565b610524610f8e565b610c72610f8e565b61040e81611027565b610c83610f8e565b61040e81604051806040016040528060018152602001603160f81b81525061102f565b5f6103b7610cb2610a98565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610ce28888888861108e565b925092509250610cf28282611156565b50909695505050505050565b5f51602061176f5f395f51905f526001600160a01b038516610d355760405163e602df0560e01b81525f60048201526024016105b0565b6001600160a01b038416610d5e57604051634a1406b160e11b81525f60048201526024016105b0565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610ddb57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dd291815260200190565b60405180910390a35b5050505050565b5f51602061176f5f395f51905f526001600160a01b038416610e1c5781816002015f828254610e119190611648565b90915550610e8c9050565b6001600160a01b0384165f9081526020829052604090205482811015610e6e5760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016105b0565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610eaa576002810180548390039055610ec8565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0d91815260200190565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f4561120e565b610f4d611276565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661052457604051631afcd79f60e31b815260040160405180910390fd5b610fdf610f8e565b5f51602061176f5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611018848261169f565b5060048101610a35838261169f565b610994610f8e565b611037610f8e565b5f51602061178f5f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611070848261169f565b506003810161107f838261169f565b505f8082556001909101555050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110c757505f9150600390508261114c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611118573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661114357505f92506001915082905061114c565b92505f91508190505b9450945094915050565b5f8260038111156111695761116961175a565b03611172575050565b60018260038111156111865761118661175a565b036111a45760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111b8576111b861175a565b036111d95760405163fce698f760e01b8152600481018290526024016105b0565b60038260038111156111ed576111ed61175a565b03610400576040516335e2f38360e21b8152600481018290526024016105b0565b5f5f51602061178f5f395f51905f5281611226610bfc565b80519091501561123e57805160209091012092915050565b8154801561124d579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f51602061178f5f395f51905f528161128e610c3a565b8051909150156112a657805160209091012092915050565b6001820154801561124d579392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112f860208301846112b8565b9392505050565b80356001600160a01b0381168114611315575f5ffd5b919050565b5f5f6040838503121561132b575f5ffd5b611334836112ff565b946020939093013593505050565b5f5f5f60608486031215611354575f5ffd5b61135d846112ff565b925061136b602085016112ff565b929592945050506040919091013590565b5f6020828403121561138c575f5ffd5b5035919050565b5f602082840312156113a3575f5ffd5b6112f8826112ff565b60ff60f81b8816815260e060208201525f6113ca60e08301896112b8565b82810360408401526113dc81896112b8565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611431578351835260209384019390920191600101611413565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611458575f5ffd5b611461886112ff565b965061146f602089016112ff565b95506040880135945060608801359350608088013560ff81168114611492575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156114c0575f5ffd5b6114c9836112ff565b91506114d7602084016112ff565b90509250929050565b600181811c908216806114f457607f821691505b60208210810361151257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157b5780850481111561155f5761155f61152c565b600184161561156d57908102905b60019390931c928002611544565b935093915050565b5f82611591575060016103b7565b8161159d57505f6103b7565b81600181146115b357600281146115bd576115d9565b60019150506103b7565b60ff8411156115ce576115ce61152c565b50506001821b6103b7565b5060208310610133831016604e8410600b84101617156115fc575081810a6103b7565b6116085f198484611540565b805f190482111561161b5761161b61152c565b029392505050565b5f6112f860ff841683611583565b80820281158282048414176103b7576103b761152c565b808201808211156103b7576103b761152c565b601f8211156109d357805f5260205f20601f840160051c810160208510156116805750805b601f840160051c820191505b81811015610ddb575f815560010161168c565b815167ffffffffffffffff8111156116b9576116b9611518565b6116cd816116c784546114e0565b8461165b565b6020601f8211600181146116ff575f83156116e85750848201515b5f19600385901b1c1916600184901b178455610ddb565b5f84815260208120601f198516915b8281101561172e578785015182556020948501946001909201910161170e565b508482101561174b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a264697066735822122099cc40a8f00acbd0e4963a0b5ecaa183718b0a2ff261d3f587208545dacd664164736f6c634300081c0033","sourceMap":"632:990:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5210:186;;;;;;:::i;:::-;;:::i;:::-;;;1181:14:128;;1174:22;1156:41;;1144:2;1129:18;5210:186:26;1016:187:128;3896:152:26;4027:14;;3896:152;;;1354:25:128;;;1342:2;1327:18;3896:152:26;1208:177:128;5988:244:26;;;;;;:::i;:::-;;:::i;1438:83:121:-;;;1512:2;1911:36:128;;1899:2;1884:18;1438:83:121;1769:184:128;3085:112:28;;;:::i;1527:93:121:-;;;;;;:::i;:::-;;:::i;:::-;;931:87:27;;;;;;:::i;:::-;;:::i;1372:60:121:-;;;:::i;4106:171:26:-;;;;;;:::i;:::-;;:::i;3155:101:24:-;;;:::i;1334:158:27:-;;;;;;:::i;:::-;;:::i;2824:154:28:-;;;;;;:::i;:::-;;:::i;5173:903:31:-;;;:::i;:::-;;;;;;;;;;;;;:::i;2441:144:24:-;1313:22;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:24;;;3951:51:128;;3939:2;3924:18;2441:144:24;3805:203:128;2973:148:26;;;:::i;4472:178::-;;;;;;:::i;:::-;;:::i;1069:297:121:-;;;;;;:::i;:::-;;:::i;2098:672:28:-;;;;;;:::i;:::-;;:::i;4708:195:26:-;;;;;;:::i;:::-;;:::i;3405:215:24:-;;;;;;:::i;:::-;;:::i;2716:144:26:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:26;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:29;5337:31:26;966:10:29;5353:7:26;5362:5;5337:8;:31::i;:::-;5385:4;5378:11;;;5210:186;;;;;:::o;5988:244::-;6075:4;966:10:29;6131:37:26;6147:4;966:10:29;6162:5:26;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:26;;5988:244;-1:-1:-1;;;;5988:244:26:o;3085:112:28:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;1527:93:121:-;2334:13:24;:11;:13::i;:::-;1596:17:121::1;1602:2;1606:6;1596:5;:17::i;:::-;1527:93:::0;;:::o;931:87:27:-;985:26;966:10:29;1005:5:27;985;:26::i;:::-;931:87;:::o;1372:60:121:-;2334:13:24;:11;:13::i;:::-;8870:21:25;6431:15;;1427:1:121::1;::::0;8870:21:25;-1:-1:-1;;;6431:15:25;::::1;;;::::0;:44:::1;;-1:-1:-1::0;6450:14:25;;:25:::1;::::0;;::::1;:14:::0;::::1;:25;;6431:44;6427:105;;;6498:23;;-1:-1:-1::0;;;6498:23:25::1;;;;;;;;;;;6427:105;6541:24:::0;;-1:-1:-1;;6575:22:25;6541:24:::1;::::0;::::1;6575:22:::0;;;-1:-1:-1;;;6575:22:25::1;-1:-1:-1::0;;;;6618:23:25::1;::::0;;6656:20:::1;::::0;5715:50:128;;;6656:20:25::1;::::0;5703:2:128;5688:18;6656:20:25::1;;;;;;;6291:392;2357:1:24;1372:60:121:o:0;4106:171:26:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:26;-1:-1:-1;;;;;4250:20:26;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:26;;;;;4106:171::o;3155:101:24:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;1334:158:27:-;1409:45;1425:7;966:10:29;1448:5:27;1409:15;:45::i;:::-;1464:21;1470:7;1479:5;1464;:21::i;2824:154:28:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:31:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:31;;5511:45;;-1:-1:-1;5777:18:31;:43;;;;-1:-1:-1;5799:16:31;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:31;;5978:2:128;5769:77:31;;;5960:21:128;6017:2;5997:18;;;5990:30;-1:-1:-1;;;6036:18:128;;;6029:51;6097:18;;5769:77:31;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:31;;;-1:-1:-1;5857:212:31;;-1:-1:-1;5965:13:31;;-1:-1:-1;6000:4:31;;-1:-1:-1;6027:1:31;-1:-1:-1;6043:16:31;-1:-1:-1;5857:212:31;-1:-1:-1;;5173:903:31:o;2973:148:26:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:26;3098:16;;;:::i;4472:178::-;4541:4;966:10:29;4595:27:26;966:10:29;4612:2:26;4616:5;4595:9;:27::i;1069:297:121:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;1140:38:121::1;1153:10;;;;;;;;;;;;;-1:-1:-1::0;;;1153:10:121::1;;::::0;1165:12:::1;;;;;;;;;;;;;-1:-1:-1::0;;;1165:12:121::1;;::::0;1140::::1;:38::i;:::-;1188:22;:20;:22::i;:::-;1220:28;1235:12;1220:14;:28::i;:::-;1258:30;1277:10;;;;;;;;;;;;;-1:-1:-1::0;;;1277:10:121::1;;::::0;1258:18:::1;:30::i;:::-;1299:60;1305:12:::0;1342:16:::1;1512:2:::0;1342::::1;:16;:::i;:::-;1319:39;::::0;941:9:::1;1319:39;:::i;:::-;1299:5;:60::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;5715:50:128;;5142:14:25;;5703:2:128;5688:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;1069:297:121;:::o;2098:672:28:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:28;;;;;1354:25:128;;;1327:18;;2350:33:28;1208:177:128;2297:97:28;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:30;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:28;2435:78;;;;;;8496:25:128;;;;-1:-1:-1;;;;;8557:32:128;;;8537:18;;;8530:60;8626:32;;;;8606:18;;;8599:60;8675:18;;;8668:34;8718:19;;;8711:35;8762:19;;;8755:35;;;8468:19;;2435:78:28;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:28;:6;-1:-1:-1;;;;;2638:15:28;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:28;;-1:-1:-1;;;;;8993:32:128;;;2676:35:28;;;8975:51:128;9062:32;;9042:18;;;9035:60;8948:18;;2676:35:28;8801:300:128;2634:88:28;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;4708:195:26:-;-1:-1:-1;;;;;4867:20:26;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;3405:215:24:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:24;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:24;;3562:1:::1;3534:31;::::0;::::1;3951:51:128::0;3924:18;;3534:31:24::1;3805:203:128::0;3485:91:24::1;3585:28;3604:8;3585:18;:28::i;10001:128:26:-:0;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;:::-;10001:128;;;:::o;11745:477::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:26;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12018:60;;-1:-1:-1;;;12018:60:26;;-1:-1:-1;;;;;9326:32:128;;12018:60:26;;;9308:51:128;9375:18;;;9368:34;;;9418:18;;;9411:34;;;9281:18;;12018:60:26;9106:345:128;11963:130:26;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;:::-;11834:388;11745:477;;;:::o;6605:300::-;-1:-1:-1;;;;;6688:18:26;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:26;;6756:1;6729:30;;;3951:51:128;3924:18;;6729:30:26;3805:203:128;6684:86:26;-1:-1:-1;;;;;6783:16:26;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:26;;6851:1;6822:32;;;3951:51:128;3924:18;;6822:32:26;3805:203:128;6779:86:26;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4015:109:31:-;4068:7;4094:23;:21;:23::i;2658:162:24:-;966:10:29;2717:7:24;1313:22;2570:8;-1:-1:-1;;;;;2570:8:24;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:24;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:24;;966:10:29;2763:40:24;;;3951:51:128;3924:18;;2763:40:24;3805:203:128;8733:208:26;-1:-1:-1;;;;;8803:21:26;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:26;;8876:1;8847:32;;;3951:51:128;3924:18;;8847:32:26;3805:203:128;8799:91:26;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:26;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:26;;9400:1;9373:30;;;3951:51:128;3924:18;;9373:30:26;3805:203:128;9325:89:26;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;3774:248:24:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:24;;-1:-1:-1;;;;;3941:19:24;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1259:164:30:-;1319:7;;1005:21;1364:19;886:156;6300:155:31;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:31;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:31;2720:156;2282:147:26;6931:20:25;:18;:20::i;:::-;2384:38:26::1;2407:5;2414:7;2384:22;:38::i;666:65:27:-:0;6931:20:25;:18;:20::i;1847:127:24:-;6931:20:25;:18;:20::i;:::-;1929:38:24::1;1954:12;1929:24;:38::i;1832:125:28:-:0;6931:20:25;:18;:20::i;:::-;1916:34:28::1;1940:4;1916:34;;;;;;;;;;;;;-1:-1:-1::0;;;1916:34:28::1;;::::0;:23:::1;:34::i;4946:176:31:-:0;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:59;3495:11;-1:-1:-1;;;3519:23:59;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:58;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:58;;6887:260;-1:-1:-1;;;;;;6887:260:58:o;10976:487:26:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:26;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:26;;11212:1;11183:32;;;3951:51:128;3924:18;;11183:32:26;3805:203:128;11137:89:26;-1:-1:-1;;;;;11239:21:26;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:26;;11311:1;11283:31;;;3951:51:128;3924:18;;11283:31:26;3805:203:128;11235:90:26;-1:-1:-1;;;;;11334:20:26;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:26;11424:5;-1:-1:-1;;;;;11415:31:26;;11440:5;11415:31;;;;1354:25:128;;1342:2;1327:18;;1208:177;11415:31:26;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:26;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:26;;-1:-1:-1;7358:546:26;;-1:-1:-1;;;;;7574:17:26;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:26;;-1:-1:-1;;;;;9326:32:128;;7655:50:26;;;9308:51:128;9375:18;;;9368:34;;;9418:18;;;9411:34;;;9281:18;;7655:50:26;9106:345:128;7605:115:26;-1:-1:-1;;;;;7840:17:26;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:26;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:26;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:26;8367:4;-1:-1:-1;;;;;8358:25:26;;8377:5;8358:25;;;;1354::128;;1342:2;1327:18;;1208:177;8358:25:26;;;;;;;;7295:1095;7220:1170;;;:::o;4130:191:31:-;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;9845:25:128;;;;9886:18;;9879:34;;;;9929:18;;;9922:34;4284:13:31;9972:18:128;;;9965:34;4307:4:31;10015:19:128;;;10008:61;9817:19;;4221:92:31;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;2435:216:26;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:26;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:26::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;1980:235:24:-:0;6931:20:25;:18;:20::i;3599:330:31:-;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:31;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:31::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:31::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:31:o;5203:1551:58:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:58;;-1:-1:-1;6385:30:58;;-1:-1:-1;6417:1:58;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;12431:25:128;;;12504:4;12492:17;;12472:18;;;12465:45;;;;12526:18;;;12519:34;;;12569:18;;;12562:34;;;6541:24:58;;12403:19:128;;6541:24:58;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:58;;-1:-1:-1;;6541:24:58;;;-1:-1:-1;;;;;;;6579:20:58;;6575:113;;-1:-1:-1;6631:1:58;;-1:-1:-1;6635:29:58;;-1:-1:-1;6631:1:58;;-1:-1:-1;6615:62:58;;6575:113;6706:6;-1:-1:-1;6714:20:58;;-1:-1:-1;6714:20:58;;-1:-1:-1;5203:1551:58;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:58;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:58;;;;;1354:25:128;;;1327:18;;7634:46:58;1208:177:128;7563:243:58;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:58;;;;;1354:25:128;;;1327:18;;7763:32:58;1208:177:128;7058:687:31;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:31;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:31;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:31:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:31:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:31;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:31;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:31:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:31:o;14:289:128:-;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:128:o;533:173::-;601:20;;-1:-1:-1;;;;;650:31:128;;640:42;;630:70;;696:1;693;686:12;630:70;533:173;;;:::o;711:300::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:52;;;856:1;853;846:12;808:52;879:29;898:9;879:29;:::i;:::-;869:39;977:2;962:18;;;;949:32;;-1:-1:-1;;;711:300:128:o;1390:374::-;1467:6;1475;1483;1536:2;1524:9;1515:7;1511:23;1507:32;1504:52;;;1552:1;1549;1542:12;1504:52;1575:29;1594:9;1575:29;:::i;:::-;1565:39;;1623:38;1657:2;1646:9;1642:18;1623:38;:::i;:::-;1390:374;;1613:48;;-1:-1:-1;;;1730:2:128;1715:18;;;;1702:32;;1390:374::o;2140:226::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:52;;;2268:1;2265;2258:12;2220:52;-1:-1:-1;2313:23:128;;2140:226;-1:-1:-1;2140:226:128:o;2371:186::-;2430:6;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2522:29;2541:9;2522:29;:::i;2562:1238::-;2968:3;2963;2959:13;2951:6;2947:26;2936:9;2929:45;3010:3;3005:2;2994:9;2990:18;2983:31;2910:4;3037:46;3078:3;3067:9;3063:19;3055:6;3037:46;:::i;:::-;3131:9;3123:6;3119:22;3114:2;3103:9;3099:18;3092:50;3165:33;3191:6;3183;3165:33;:::i;:::-;3229:2;3214:18;;3207:34;;;-1:-1:-1;;;;;3278:32:128;;3272:3;3257:19;;3250:61;3298:3;3327:19;;3320:35;;;3392:22;;;3386:3;3371:19;;3364:51;3464:13;;3486:22;;;3536:2;3562:15;;;;-1:-1:-1;3524:15:128;;;;-1:-1:-1;3605:169:128;3619:6;3616:1;3613:13;3605:169;;;3680:13;;3668:26;;3723:2;3749:15;;;;3714:12;;;;3641:1;3634:9;3605:169;;;-1:-1:-1;3791:3:128;;2562:1238;-1:-1:-1;;;;;;;;;;;2562:1238:128:o;4013:903::-;4124:6;4132;4140;4148;4156;4164;4172;4225:3;4213:9;4204:7;4200:23;4196:33;4193:53;;;4242:1;4239;4232:12;4193:53;4265:29;4284:9;4265:29;:::i;:::-;4255:39;;4313:38;4347:2;4336:9;4332:18;4313:38;:::i;:::-;4303:48;-1:-1:-1;4420:2:128;4405:18;;4392:32;;-1:-1:-1;4521:2:128;4506:18;;4493:32;;-1:-1:-1;4603:3:128;4588:19;;4575:33;4652:4;4639:18;;4627:31;;4617:59;;4672:1;4669;4662:12;4617:59;4013:903;;;;-1:-1:-1;4013:903:128;;;;4695:7;4775:3;4760:19;;4747:33;;-1:-1:-1;4879:3:128;4864:19;;;4851:33;;4013:903;-1:-1:-1;;4013:903:128:o;4921:260::-;4989:6;4997;5050:2;5038:9;5029:7;5025:23;5021:32;5018:52;;;5066:1;5063;5056:12;5018:52;5089:29;5108:9;5089:29;:::i;:::-;5079:39;;5137:38;5171:2;5160:9;5156:18;5137:38;:::i;:::-;5127:48;;4921:260;;;;;:::o;5186:380::-;5265:1;5261:12;;;;5308;;;5329:61;;5383:4;5375:6;5371:17;5361:27;;5329:61;5436:2;5428:6;5425:14;5405:18;5402:38;5399:161;;5482:10;5477:3;5473:20;5470:1;5463:31;5517:4;5514:1;5507:15;5545:4;5542:1;5535:15;5399:161;;5186:380;;;:::o;6126:127::-;6187:10;6182:3;6178:20;6175:1;6168:31;6218:4;6215:1;6208:15;6242:4;6239:1;6232:15;6258:127;6319:10;6314:3;6310:20;6307:1;6300:31;6350:4;6347:1;6340:15;6374:4;6371:1;6364:15;6390:375;6478:1;6496:5;6510:249;6531:1;6521:8;6518:15;6510:249;;;6581:4;6576:3;6572:14;6566:4;6563:24;6560:50;;;6590:18;;:::i;:::-;6640:1;6630:8;6626:16;6623:49;;;6654:16;;;;6623:49;6737:1;6733:16;;;;;6693:15;;6510:249;;;6390:375;;;;;;:::o;6770:902::-;6819:5;6849:8;6839:80;;-1:-1:-1;6890:1:128;6904:5;;6839:80;6938:4;6928:76;;-1:-1:-1;6975:1:128;6989:5;;6928:76;7020:4;7038:1;7033:59;;;;7106:1;7101:174;;;;7013:262;;7033:59;7063:1;7054:10;;7077:5;;;7101:174;7138:3;7128:8;7125:17;7122:43;;;7145:18;;:::i;:::-;-1:-1:-1;;7201:1:128;7187:16;;7260:5;;7013:262;;7359:2;7349:8;7346:16;7340:3;7334:4;7331:13;7327:36;7321:2;7311:8;7308:16;7303:2;7297:4;7294:12;7290:35;7287:77;7284:203;;;-1:-1:-1;7396:19:128;;;7472:5;;7284:203;7519:42;-1:-1:-1;;7544:8:128;7538:4;7519:42;:::i;:::-;7597:6;7593:1;7589:6;7585:19;7576:7;7573:32;7570:58;;;7608:18;;:::i;:::-;7646:20;;6770:902;-1:-1:-1;;;6770:902:128:o;7677:140::-;7735:5;7764:47;7805:4;7795:8;7791:19;7785:4;7764:47;:::i;7822:168::-;7895:9;;;7926;;7943:15;;;7937:22;;7923:37;7913:71;;7964:18;;:::i;9456:125::-;9521:9;;;9542:10;;;9539:36;;;9555:18;;:::i;10206:518::-;10308:2;10303:3;10300:11;10297:421;;;10344:5;10341:1;10334:16;10388:4;10385:1;10375:18;10458:2;10446:10;10442:19;10439:1;10435:27;10429:4;10425:38;10494:4;10482:10;10479:20;10476:47;;;-1:-1:-1;10517:4:128;10476:47;10572:2;10567:3;10563:12;10560:1;10556:20;10550:4;10546:31;10536:41;;10627:81;10645:2;10638:5;10635:13;10627:81;;;10704:1;10690:16;;10671:1;10660:13;10627:81;;10900:1299;11026:3;11020:10;11053:18;11045:6;11042:30;11039:56;;;11075:18;;:::i;:::-;11104:97;11194:6;11154:38;11186:4;11180:11;11154:38;:::i;:::-;11148:4;11104:97;:::i;:::-;11250:4;11281:2;11270:14;;11298:1;11293:649;;;;11986:1;12003:6;12000:89;;;-1:-1:-1;12055:19:128;;;12049:26;12000:89;-1:-1:-1;;10857:1:128;10853:11;;;10849:24;10845:29;10835:40;10881:1;10877:11;;;10832:57;12102:81;;11263:930;;11293:649;10153:1;10146:14;;;10190:4;10177:18;;-1:-1:-1;;11329:20:128;;;11447:222;11461:7;11458:1;11455:14;11447:222;;;11543:19;;;11537:26;11522:42;;11650:4;11635:20;;;;11603:1;11591:14;;;;11477:12;11447:222;;;11451:3;11697:6;11688:7;11685:19;11682:201;;;11758:19;;;11752:26;-1:-1:-1;;11841:1:128;11837:14;;;11853:3;11833:24;11829:37;11825:42;11810:58;11795:74;;11682:201;-1:-1:-1;;;;11929:1:128;11913:14;;;11909:22;11896:36;;-1:-1:-1;10900:1299:128:o;12607:127::-;12668:10;12663:3;12659:20;12656:1;12649:31;12699:4;12696:1;12689:15;12723:4;12720:1;12713:15","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/\"]},\"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":{}},"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":69581,"exportedSymbols":{"ERC20BurnableUpgradeable":[41265],"ERC20PermitUpgradeable":[41434],"ERC20Upgradeable":[41203],"Initializable":[40586],"OwnableUpgradeable":[40332],"WrappedVara":[69580]},"nodeType":"SourceUnit","src":"39:1584:121","nodes":[{"id":69475,"nodeType":"PragmaDirective","src":"39:24:121","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":69477,"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":69581,"sourceUnit":40587,"symbolAliases":[{"foreign":{"id":69476,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40586,"src":"73:13:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69479,"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":69581,"sourceUnit":41204,"symbolAliases":[{"foreign":{"id":69478,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41203,"src":"170:16:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69481,"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":69581,"sourceUnit":41266,"symbolAliases":[{"foreign":{"id":69480,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41265,"src":"273:24:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69483,"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":69581,"sourceUnit":40333,"symbolAliases":[{"foreign":{"id":69482,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40332,"src":"407:18:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69485,"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":69581,"sourceUnit":41435,"symbolAliases":[{"foreign":{"id":69484,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41434,"src":"509:22:121","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":69580,"nodeType":"ContractDefinition","src":"632:990:121","nodes":[{"id":69498,"nodeType":"VariableDeclaration","src":"784:51:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:121","scope":69580,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69496,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":69497,"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":69501,"nodeType":"VariableDeclaration","src":"841:46:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:121","scope":69580,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":69499,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:121","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":69500,"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":69504,"nodeType":"VariableDeclaration","src":"893:57:121","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:121","scope":69580,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69502,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":69503,"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":69512,"nodeType":"FunctionDefinition","src":"1010:53:121","nodes":[],"body":{"id":69511,"nodeType":"Block","src":"1024:39:121","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69508,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40554,"src":"1034:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69509,"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":69510,"nodeType":"ExpressionStatement","src":"1034:22:121"}]},"documentation":{"id":69505,"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":69506,"nodeType":"ParameterList","parameters":[],"src":"1021:2:121"},"returnParameters":{"id":69507,"nodeType":"ParameterList","parameters":[],"src":"1024:0:121"},"scope":69580,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69546,"nodeType":"FunctionDefinition","src":"1069:297:121","nodes":[],"body":{"id":69545,"nodeType":"Block","src":"1130:236:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69520,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69498,"src":"1153:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":69521,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69501,"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":69519,"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":69522,"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":69523,"nodeType":"ExpressionStatement","src":"1140:38:121"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":69524,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41224,"src":"1188:20:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69525,"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":69526,"nodeType":"ExpressionStatement","src":"1188:22:121"},{"expression":{"arguments":[{"id":69528,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69514,"src":"1235:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":69527,"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":69529,"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":69530,"nodeType":"ExpressionStatement","src":"1220:28:121"},{"expression":{"arguments":[{"id":69532,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69498,"src":"1277:10:121","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":69531,"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":69533,"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":69534,"nodeType":"ExpressionStatement","src":"1258:30:121"},{"expression":{"arguments":[{"id":69536,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69514,"src":"1305:12:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":69537,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69504,"src":"1319:20:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":69541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":69538,"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":69539,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[69564],"referencedDeclaration":69564,"src":"1348:8:121","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":69540,"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":69535,"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":69543,"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":69544,"nodeType":"ExpressionStatement","src":"1299:60:121"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":69517,"kind":"modifierInvocation","modifierName":{"id":69516,"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":69515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69514,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:121","nodeType":"VariableDeclaration","scope":69546,"src":"1089:20:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69513,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:121"},"returnParameters":{"id":69518,"nodeType":"ParameterList","parameters":[],"src":"1130:0:121"},"scope":69580,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69555,"nodeType":"FunctionDefinition","src":"1372:60:121","nodes":[],"body":{"id":69554,"nodeType":"Block","src":"1430:2:121","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":69549,"kind":"modifierInvocation","modifierName":{"id":69548,"name":"onlyOwner","nameLocations":["1403:9:121"],"nodeType":"IdentifierPath","referencedDeclaration":40227,"src":"1403:9:121"},"nodeType":"ModifierInvocation","src":"1403:9:121"},{"arguments":[{"hexValue":"32","id":69551,"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":69552,"kind":"modifierInvocation","modifierName":{"id":69550,"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":69547,"nodeType":"ParameterList","parameters":[],"src":"1393:2:121"},"returnParameters":{"id":69553,"nodeType":"ParameterList","parameters":[],"src":"1430:0:121"},"scope":69580,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":69564,"nodeType":"FunctionDefinition","src":"1438:83:121","nodes":[],"body":{"id":69563,"nodeType":"Block","src":"1495:26:121","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":69561,"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":69560,"id":69562,"nodeType":"Return","src":"1505:9:121"}]},"baseFunctions":[40723],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:121","overrides":{"id":69557,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:121"},"parameters":{"id":69556,"nodeType":"ParameterList","parameters":[],"src":"1455:2:121"},"returnParameters":{"id":69560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":69564,"src":"1488:5:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":69558,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:121","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:121"},"scope":69580,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":69579,"nodeType":"FunctionDefinition","src":"1527:93:121","nodes":[],"body":{"id":69578,"nodeType":"Block","src":"1586:34:121","nodes":[],"statements":[{"expression":{"arguments":[{"id":69574,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69566,"src":"1602:2:121","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":69575,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":69568,"src":"1606:6:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":69573,"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":69576,"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":69577,"nodeType":"ExpressionStatement","src":"1596:17:121"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":69571,"kind":"modifierInvocation","modifierName":{"id":69570,"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":69569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69566,"mutability":"mutable","name":"to","nameLocation":"1549:2:121","nodeType":"VariableDeclaration","scope":69579,"src":"1541:10:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69565,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69568,"mutability":"mutable","name":"amount","nameLocation":"1561:6:121","nodeType":"VariableDeclaration","scope":69579,"src":"1553:14:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:121"},"returnParameters":{"id":69572,"nodeType":"ParameterList","parameters":[],"src":"1586:0:121"},"scope":69580,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":69486,"name":"Initializable","nameLocations":["660:13:121"],"nodeType":"IdentifierPath","referencedDeclaration":40586,"src":"660:13:121"},"id":69487,"nodeType":"InheritanceSpecifier","src":"660:13:121"},{"baseName":{"id":69488,"name":"ERC20Upgradeable","nameLocations":["679:16:121"],"nodeType":"IdentifierPath","referencedDeclaration":41203,"src":"679:16:121"},"id":69489,"nodeType":"InheritanceSpecifier","src":"679:16:121"},{"baseName":{"id":69490,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:121"],"nodeType":"IdentifierPath","referencedDeclaration":41265,"src":"701:24:121"},"id":69491,"nodeType":"InheritanceSpecifier","src":"701:24:121"},{"baseName":{"id":69492,"name":"OwnableUpgradeable","nameLocations":["731:18:121"],"nodeType":"IdentifierPath","referencedDeclaration":40332,"src":"731:18:121"},"id":69493,"nodeType":"InheritanceSpecifier","src":"731:18:121"},{"baseName":{"id":69494,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:121"],"nodeType":"IdentifierPath","referencedDeclaration":41434,"src":"755:22:121"},"id":69495,"nodeType":"InheritanceSpecifier","src":"755:22:121"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[69580,41434,41591,41935,42212,43875,40332,41265,41203,42254,43839,43813,41480,40586],"name":"WrappedVara","nameLocation":"641:11:121","scope":69581,"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 diff --git a/ethexe/ethereum/src/lib.rs b/ethexe/ethereum/src/lib.rs index 68efa540ca2..352a8e85325 100644 --- a/ethexe/ethereum/src/lib.rs +++ b/ethexe/ethereum/src/lib.rs @@ -156,6 +156,7 @@ impl Ethereum { _wrappedVara: wvara_address, _eraDuration: U256::from(24 * 60 * 60), _electionDuration: U256::from(2 * 60 * 60), + _validationDelay: U256::from(60), _validators: validators, } .abi_encode(),